Adds some PHP 8 ready changes to compiler classes. Adds Server and Crypt classes.

This commit is contained in:
Llewellyn committed 2023-01-01 04:11:34 +02:00
1 parent e614f2ec23
commit e771e7d243
71 files changed
+2697 -872

No files matched your search

+3 -3
View File
@@ -140,13 +140,13 @@ TODO
+ *Author*: [Llewellyn van der Merwe](mailto:joomla@vdm.io)
+ *Name*: [Component Builder](https://git.vdm.dev/joomla/Component-Builder)
+ *First Build*: 30th April, 2015
+ *Last Build*: 29th December, 2023
+ *Last Build*: 1st January, 2023
+ *Version*: 3.1.13
+ *Copyright*: Copyright (C) 2015 Vast Development Method. All rights reserved.
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt
+ *Line count*: **341727**
+ *Line count*: **342047**
+ *Field count*: **2009**
+ *File count*: **2222**
+ *File count*: **2225**
+ *Folder count*: **391**
> This **component** was build with a [Joomla](https://extensions.joomla.org/extension/component-builder/) [Automated Component Builder](https://www.joomlacomponentbuilder.com).
+14 -16
View File
@@ -19,6 +19,7 @@ use VDM\Joomla\Utilities\StringHelper;
use VDM\Joomla\Utilities\ArrayHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\FileHelper;
use VDM\Joomla\Utilities\GetHelper;
use VDM\Joomla\Utilities\MathHelper;
use VDM\Joomla\Componentbuilder\Compiler\Factory as CFactory;
use VDM\Joomla\Componentbuilder\Compiler\Utilities\Placefix;
@@ -34,7 +35,6 @@ ComponentbuilderHelper::autoLoader();
class Compiler extends Infusion
{
/**
* The Temp path
*
@@ -106,19 +106,17 @@ class Compiler extends Infusion
// clear form component xml
$xmlPath = $this->componentPath . '/'
. CFactory::_('Content')->get('component') . '.xml';
$componentXML = ComponentbuilderHelper::getFileContents(
$xmlPath
);
$textToSite = ComponentbuilderHelper::getBetween(
$componentXML = FileHelper::getContent($xmlPath);
$textToSite = GetHelper::between(
$componentXML, '<files folder="site">', '</files>'
);
$textToSiteLang = ComponentbuilderHelper::getBetween(
$textToSiteLang = GetHelper::between(
$componentXML, '<languages folder="site">', '</languages>'
);
$componentXML = str_replace(
array('<files folder="site">' . $textToSite . "</files>",
'<languages folder="site">' . $textToSiteLang
. "</languages>"), array('', ''), $componentXML
. "</languages>"), array('', ''), (string) $componentXML
);
$this->writeFile($xmlPath, $componentXML);
}
@@ -383,7 +381,7 @@ class Compiler extends Infusion
&& ArrayHelper::check($this->newFiles['dynamic']))
{
// get the bom file
$bom = ComponentbuilderHelper::getFileContents($this->bomPath);
$bom = FileHelper::getContent($this->bomPath);
// first we do the static files
foreach ($this->newFiles['static'] as $static)
{
@@ -640,7 +638,7 @@ class Compiler extends Infusion
$php = "<?php\n";
}
// get content of the file
$string = ComponentbuilderHelper::getFileContents($path);
$string = FileHelper::getContent($path);
// Trigger Event: jcb_ce_onGetFileContents
CFactory::_('Event')->trigger(
'jcb_ce_onGetFileContents',
@@ -648,10 +646,10 @@ class Compiler extends Infusion
&$view)
);
// see if we should add a BOM
if (strpos($string, Placefix::_h('BOM')) !== false)
if (strpos((string) $string, (string) Placefix::_h('BOM')) !== false)
{
list($wast, $code) = explode(
Placefix::_h('BOM'), $string
Placefix::_h('BOM'), (string) $string
);
$string = $php . $bom . $code;
}
@@ -678,7 +676,7 @@ class Compiler extends Infusion
// add answer back to file
$this->writeFile($path, $answer);
// count the file lines
$this->lineCount = $this->lineCount + substr_count($answer, PHP_EOL);
$this->lineCount = $this->lineCount + substr_count((string) $answer, PHP_EOL);
}
/**
@@ -884,7 +882,7 @@ class Compiler extends Infusion
$this->buildReadMeData();
}
// get the file
$string = ComponentbuilderHelper::getFileContents($path);
$string = FileHelper::getContent($path);
// update the file
$answer = CFactory::_('Placeholder')->update($string, CFactory::_('Content')->active);
// add to zip array
@@ -1506,7 +1504,7 @@ class Compiler extends Infusion
$_commentType = " -->";
}
// escape the code
$code = explode(PHP_EOL, $target['code']);
$code = explode(PHP_EOL, (string) $target['code']);
$code = PHP_EOL . $commentType . implode(
$_commentType . PHP_EOL . $commentType, $code
) . $_commentType . PHP_EOL;
@@ -1540,10 +1538,10 @@ class Compiler extends Infusion
// move to the position where we should add the data
fseek($fpFile, $position);
// Add the data
fwrite($fpFile, $data);
fwrite($fpFile, (string) $data);
// truncate file at the end of the data that was added
$remove = MathHelper::bc(
'add', $position, mb_strlen($data, '8bit')
'add', $position, mb_strlen((string) $data, '8bit')
);
ftruncate($fpFile, $remove);
// check if this was a replacement of data
File diff suppressed because it is too large. Load diff
+52 -52
View File
@@ -406,11 +406,11 @@ class Structure extends Get
. CFactory::_('Config')->joomla_version;
$this->componentBackupName = 'com_'
. $this->componentData->sales_name . '_v' . str_replace(
'.', '_', $this->componentData->component_version
'.', '_', (string) $this->componentData->component_version
) . '__J' . CFactory::_('Config')->joomla_version;
$this->componentFolderName = 'com_'
. $this->componentData->name_code . '_v' . str_replace(
'.', '_', $this->componentData->component_version
'.', '_', (string) $this->componentData->component_version
) . '__J' . CFactory::_('Config')->joomla_version;
// set component folder path
$this->componentPath = CFactory::_('Config')->get('compiler_path', JPATH_COMPONENT_ADMINISTRATOR . '/compiler') . '/'
@@ -761,7 +761,7 @@ class Structure extends Get
&& StringHelper::check($css))
{
// make sure this script does not have PHP
if (strpos($css, '<?php') === false)
if (strpos((string) $css, '<?php') === false)
{
// make sure the field is added
$module->add_scripts_field = true;
@@ -796,7 +796,7 @@ class Structure extends Get
&& StringHelper::check($javascript))
{
// make sure this script does not have PHP
if (strpos($javascript, '<?php') === false)
if (strpos((string) $javascript, '<?php') === false)
{
// make sure the field is added
$module->add_scripts_field = true;
@@ -924,9 +924,9 @@ class Structure extends Get
// check if we have an double fields naming set
$field_name_inner = '';
$field_name_outer = $field_name;
if (strpos($field_name, '.') !== false)
if (strpos((string) $field_name, '.') !== false)
{
$field_names = explode('.', $field_name);
$field_names = explode('.', (string) $field_name);
if (count((array) $field_names) == 2)
{
$field_name_outer = $field_names[0];
@@ -1124,7 +1124,7 @@ class Structure extends Get
))
{
// set file name
$fileName = basename($url['url']);
$fileName = basename((string) $url['url']);
// get the file contents
$data = FileHelper::getContent(
$url['url']
@@ -1333,9 +1333,9 @@ class Structure extends Get
// check if we have an double fields naming set
$field_name_inner = '';
$field_name_outer = $field_name;
if (strpos($field_name, '.') !== false)
if (strpos((string) $field_name, '.') !== false)
{
$field_names = explode('.', $field_name);
$field_names = explode('.', (string) $field_name);
if (count((array) $field_names) == 2)
{
$field_name_outer = $field_names[0];
@@ -1361,16 +1361,16 @@ class Structure extends Get
if (!isset($plugin->add_rule_path[$file . $field_name . $fieldset]))
{
$plugin->add_rule_path[$file . $field_name . $fieldset] =
'/plugins/' . strtolower($plugin->group
) . '/' . strtolower($plugin->code_name)
'/plugins/' . strtolower((string) $plugin->group
) . '/' . strtolower((string) $plugin->code_name)
. '/rules';
}
if (!isset($plugin->add_field_path[$file . $field_name . $fieldset]))
{
$plugin->add_field_path[$file . $field_name . $fieldset] =
'/plugins/' . strtolower($plugin->group
) . '/' . strtolower($plugin->code_name)
'/plugins/' . strtolower((string) $plugin->group
) . '/' . strtolower((string) $plugin->code_name)
. '/fields';
}
}
@@ -1515,7 +1515,7 @@ class Structure extends Get
))
{
// set file name
$fileName = basename($url['url']);
$fileName = basename((string) $url['url']);
// get the file contents
$data = FileHelper::getContent(
$url['url']
@@ -1636,7 +1636,7 @@ class Structure extends Get
$libFolder = strtolower(
preg_replace(
'/\s+/', '-',
StringHelper::safe(
(string) StringHelper::safe(
$library->name, 'filename', ' ', false
)
)
@@ -1660,7 +1660,7 @@ class Structure extends Get
// add local folder
$addLocalFolder = true;
// set file name
$fileName = basename($url['url']);
$fileName = basename((string) $url['url']);
// get the file contents
$data = FileHelper::getContent(
$url['url']
@@ -1742,10 +1742,10 @@ class Structure extends Get
&& StringHelper::check(
$this->componentData->dashboard
)
&& strpos($this->componentData->dashboard, '_') !== false)
&& strpos((string) $this->componentData->dashboard, '_') !== false)
{
// set the default view
$getter = explode('_', $this->componentData->dashboard);
$getter = explode('_', (string) $this->componentData->dashboard);
if (count((array) $getter) == 2 && is_numeric($getter[1]))
{
// the pointers
@@ -2061,7 +2061,7 @@ class Structure extends Get
$this->notNew[] = 'LICENSE.txt';
// do license check
$LICENSE = false;
$licenseChecker = strtolower($this->componentData->license);
$licenseChecker = strtolower((string) $this->componentData->license);
if (strpos($licenseChecker, 'gnu') !== false
&& strpos(
$licenseChecker, '2'
@@ -2097,7 +2097,7 @@ class Structure extends Get
}
else
{
$new = str_replace($details->rename, $codeName, $item);
$new = str_replace($details->rename, $codeName, (string) $item);
}
}
else
@@ -2120,20 +2120,20 @@ class Structure extends Get
{
// set destination path
$zipPath = str_replace(
$details->_target['type'] . '/', '', $details->path
$details->_target['type'] . '/', '', (string) $details->path
);
$path = str_replace(
$details->_target['type'] . '/',
$this->dynamicPaths[$details->_target['key']] . '/',
$details->path
(string) $details->path
);
}
else
{
// set destination path
$zipPath = str_replace('c0mp0n3nt/', '', $details->path);
$zipPath = str_replace('c0mp0n3nt/', '', (string) $details->path);
$path = str_replace(
'c0mp0n3nt/', $this->componentPath . '/', $details->path
'c0mp0n3nt/', $this->componentPath . '/', (string) $details->path
);
}
// set the template folder path
@@ -2141,9 +2141,9 @@ class Structure extends Get
? (($details->custom !== 'full') ? $this->templatePathCustom
. '/' : '') : $this->templatePath . '/';
// set the final paths
$currentFullPath = (preg_match('/^[a-z]:/i', $item)) ? $item
$currentFullPath = (preg_match('/^[a-z]:/i', (string) $item)) ? $item
: $templatePath . '/' . $item;
$currentFullPath = str_replace('//', '/', $currentFullPath);
$currentFullPath = str_replace('//', '/', (string) $currentFullPath);
$packageFullPath = str_replace('//', '/', $path . '/' . $new);
$zipFullPath = str_replace(
'//', '/', $zipPath . '/' . $new
@@ -2545,7 +2545,7 @@ class Structure extends Get
'trim',
explode(
',',
GetHelper::between(
(string) GetHelper::between(
$multi_field['settings']->xml, 'fields="', '"'
)
)
@@ -2578,7 +2578,7 @@ class Structure extends Get
&& StringHelper::check($view['settings']->created))
{
// first set the main date
$date = strtotime($view['settings']->created);
$date = strtotime((string) $view['settings']->created);
}
else
{
@@ -2604,7 +2604,7 @@ class Structure extends Get
&& StringHelper::check($view['settings']->modified)
&& '0000-00-00 00:00:00' !== $view['settings']->modified)
{
$date = strtotime($view['settings']->modified);
$date = strtotime((string) $view['settings']->modified);
}
else
{
@@ -2637,7 +2637,7 @@ class Structure extends Get
!== $field['settings']->modified)
{
$anotherDate = strtotime(
$field['settings']->modified
(string) $field['settings']->modified
);
if ($anotherDate > $date)
{
@@ -2662,7 +2662,7 @@ class Structure extends Get
!== $view['settings']->main_get->modified)
{
$anotherDate = strtotime(
$view['settings']->main_get->modified
(string) $view['settings']->main_get->modified
);
if ($anotherDate > $date)
{
@@ -2685,7 +2685,7 @@ class Structure extends Get
!== $view['settings']->main_get->modified)
{
$anotherDate = strtotime(
$view['settings']->main_get->modified
(string) $view['settings']->main_get->modified
);
if ($anotherDate > $date)
{
@@ -2745,20 +2745,20 @@ class Structure extends Get
{
// set destination path
$path = '';
if (strpos($details->path, 'VIEW') !== false)
if (strpos((string) $details->path, 'VIEW') !== false)
{
$path = str_replace('VIEW', $name, $details->path);
$path = str_replace('VIEW', $name, (string) $details->path);
}
else
{
$path = $details->path;
}
// make sure we have component to replace
if (strpos($path, 'c0mp0n3nt') !== false)
if (strpos((string) $path, 'c0mp0n3nt') !== false)
{
$zipPath = str_replace('c0mp0n3nt/', '', $path);
$zipPath = str_replace('c0mp0n3nt/', '', (string) $path);
$path = str_replace(
'c0mp0n3nt/', $this->componentPath . '/', $path
'c0mp0n3nt/', $this->componentPath . '/', (string) $path
);
}
else
@@ -2786,7 +2786,7 @@ class Structure extends Get
if ($fileName)
{
$new = str_replace(
$details->rename, $fileName, $item
$details->rename, $fileName, (string) $item
);
$name = $name . '_' . $fileName;
}
@@ -2797,7 +2797,7 @@ class Structure extends Get
else
{
$new = str_replace(
$details->rename, $name, $item
$details->rename, $name, (string) $item
);
}
}
@@ -2849,7 +2849,7 @@ class Structure extends Get
if (File::exists($custom_settings))
{
$version_data = json_decode(
FileHelper::getContent(
(string) FileHelper::getContent(
$custom_settings
)
);
@@ -2857,7 +2857,7 @@ class Structure extends Get
else
{
$version_data = json_decode(
FileHelper::getContent(
(string) FileHelper::getContent(
$this->templatePath . '/settings.json'
)
);
@@ -2938,7 +2938,7 @@ class Structure extends Get
if (isset($custom['path'])
&& StringHelper::check($custom['path']))
{
$custom['path'] = trim($custom['path'], '/');
$custom['path'] = trim((string) $custom['path'], '/');
}
// by default custom path is true
$customPath = 'custom';
@@ -2961,14 +2961,14 @@ class Structure extends Get
$customPath = 'full';
}
// make sure we use the correct name
$pathArray = (array) explode('/', $custom['path']);
$pathArray = (array) explode('/', (string) $custom['path']);
$firstFolder = array_values($pathArray)[0];
$lastFolder = end($pathArray);
// only rename folder if last has folder name
if (isset($custom['rename']) && $custom['rename'] == 1)
{
$custom['path'] = str_replace(
'/' . $lastFolder, '', $custom['path']
'/' . $lastFolder, '', (string) $custom['path']
);
$rename = 'new';
$newname = $lastFolder;
@@ -2976,7 +2976,7 @@ class Structure extends Get
elseif ('full' === $customPath)
{
// make sure we use the correct name
$folderArray = (array) explode('/', $custom['folder']);
$folderArray = (array) explode('/', (string) $custom['folder']);
$lastFolder = end($folderArray);
$rename = 'new';
$newname = $lastFolder;
@@ -2993,12 +2993,12 @@ class Structure extends Get
) . '_f' . $pointer_tracker;
$pointer_tracker++;
// fix custom path
$custom['path'] = ltrim($custom['path'], '/');
$custom['path'] = ltrim((string) $custom['path'], '/');
// set new folder to object
$version_data->move->static->{$key_pointer} = new stdClass();
$version_data->move->static->{$key_pointer}->naam
= str_replace(
'//', '/', $custom['folder']
'//', '/', (string) $custom['folder']
);
$version_data->move->static->{$key_pointer}->path
= $_target_type
@@ -3084,14 +3084,14 @@ class Structure extends Get
// set new file to object
$version_data->move->static->{$key_pointer} = new stdClass();
$version_data->move->static->{$key_pointer}->naam = str_replace(
'//', '/', $custom['file']
'//', '/', (string) $custom['file']
);
// update the dynamic component name placholders in file names
$custom['path'] = CFactory::_('Placeholder')->update_(
$custom['path']
);
// get the path info
$pathInfo = pathinfo($custom['path']);
$pathInfo = pathinfo((string) $custom['path']);
if (isset($pathInfo['extension']) && $pathInfo['extension'])
{
$pathInfo['dirname'] = trim($pathInfo['dirname'], '/');
@@ -3106,9 +3106,9 @@ class Structure extends Get
elseif ('full' === $customPath)
{
// fix custom path
$custom['path'] = ltrim($custom['path'], '/');
$custom['path'] = ltrim((string) $custom['path'], '/');
// get file array
$fileArray = (array) explode('/', $custom['file']);
$fileArray = (array) explode('/', (string) $custom['file']);
// set the info
$version_data->move->static->{$key_pointer}->path
= $_target_type
@@ -3121,7 +3121,7 @@ class Structure extends Get
else
{
// fix custom path
$custom['path'] = ltrim($custom['path'], '/');
$custom['path'] = ltrim((string) $custom['path'], '/');
// set the info
$version_data->move->static->{$key_pointer}->path
= $_target_type
+54 -54
View File
@@ -1956,9 +1956,9 @@ class Fields extends Structure
$optionSet = '';
if (strtolower($typeName) === 'groupedlist'
&& strpos(
$value, ','
(string) $value, ','
) !== false
&& strpos($value, '@@') !== false)
&& strpos((string) $value, '@@') !== false)
{
// reset the group temp arrays
$groups_ = array();
@@ -1966,7 +1966,7 @@ class Fields extends Structure
'option' => array());
$order_ = array();
// mulitpal options
$options = explode(',', $value);
$options = explode(',', (string) $value);
foreach ($options as $option)
{
if (strpos($option, '@@') !== false)
@@ -2106,10 +2106,10 @@ class Fields extends Structure
}
}
}
elseif (strpos($value, ',') !== false)
elseif (strpos((string) $value, ',') !== false)
{
// mulitpal options
$options = explode(',', $value);
$options = explode(',', (string) $value);
foreach ($options as $option)
{
if (strpos($option, '|') !== false)
@@ -2156,10 +2156,10 @@ class Fields extends Structure
else
{
// one option
if (strpos($value, '|') !== false)
if (strpos((string) $value, '|') !== false)
{
// has other value then text
list($v, $t) = explode('|', $value);
list($v, $t) = explode('|', (string) $value);
$langValue = $langView . '_'
. FieldHelper::safe(
$t, true
@@ -2283,11 +2283,11 @@ class Fields extends Structure
$field .= PHP_EOL . Indent::_(4)
. '<fieldset hidden="true" name="'
. $fieldAttributes['name'] . '_modal" repeat="true">';
if (strpos($fieldAttributes['fields'], ',') !== false)
if (strpos((string) $fieldAttributes['fields'], ',') !== false)
{
// mulitpal fields
$fieldsSets = (array) explode(
',', $fieldAttributes['fields']
',', (string) $fieldAttributes['fields']
);
}
elseif (is_numeric($fieldAttributes['fields']))
@@ -2449,11 +2449,11 @@ class Fields extends Structure
$field .= PHP_EOL . Indent::_(3) . $taber
. '<form hidden="true" name="list_'
. $fieldAttributes['name'] . '_modal" repeat="true">';
if (strpos($fieldAttributes['fields'], ',') !== false)
if (strpos((string) $fieldAttributes['fields'], ',') !== false)
{
// mulitpal fields
$fieldsSets = (array) explode(
',', $fieldAttributes['fields']
',', (string) $fieldAttributes['fields']
);
}
elseif (is_numeric($fieldAttributes['fields']))
@@ -2640,9 +2640,9 @@ class Fields extends Structure
$optionSet = '';
if (strtolower($typeName) === 'groupedlist'
&& strpos(
$value, ','
(string) $value, ','
) !== false
&& strpos($value, '@@') !== false)
&& strpos((string) $value, '@@') !== false)
{
// reset the group temp arrays
$groups_ = array();
@@ -2650,7 +2650,7 @@ class Fields extends Structure
'option' => array());
$order_ = array();
// mulitpal options
$options = explode(',', $value);
$options = explode(',', (string) $value);
foreach ($options as $option)
{
if (strpos($option, '@@') !== false)
@@ -2790,10 +2790,10 @@ class Fields extends Structure
}
}
}
elseif (strpos($value, ',') !== false)
elseif (strpos((string) $value, ',') !== false)
{
// mulitpal options
$options = explode(',', $value);
$options = explode(',', (string) $value);
foreach ($options as $option)
{
if (strpos($option, '|') !== false)
@@ -2840,10 +2840,10 @@ class Fields extends Structure
else
{
// one option
if (strpos($value, '|') !== false)
if (strpos((string) $value, '|') !== false)
{
// has other value then text
list($v, $t) = explode('|', $value);
list($v, $t) = explode('|', (string) $value);
$langValue = $langView . '_'
. FieldHelper::safe(
$t, true
@@ -2972,9 +2972,9 @@ class Fields extends Structure
);
if (strtolower($typeName) === 'groupedlist'
&& strpos(
$value, ','
(string) $value, ','
) !== false
&& strpos($value, '@@') !== false)
&& strpos((string) $value, '@@') !== false)
{
// reset the group temp arrays
$groups_ = array();
@@ -2982,7 +2982,7 @@ class Fields extends Structure
'option' => array());
$order_ = array();
// mulitpal options
$options = explode(',', $value);
$options = explode(',', (string) $value);
foreach ($options as $option)
{
if (strpos($option, '@@') !== false)
@@ -3125,10 +3125,10 @@ class Fields extends Structure
}
}
}
elseif (strpos($value, ',') !== false)
elseif (strpos((string) $value, ',') !== false)
{
// mulitpal options
$options = explode(',', $value);
$options = explode(',', (string) $value);
foreach ($options as $option)
{
$optionXML = $field->fieldXML->addChild('option');
@@ -3170,10 +3170,10 @@ class Fields extends Structure
{
// one option
$optionXML = $field->fieldXML->addChild('option');
if (strpos($value, '|') !== false)
if (strpos((string) $value, '|') !== false)
{
// has other value then text
list($v, $t) = explode('|', $value);
list($v, $t) = explode('|', (string) $value);
$langValue = $langView . '_'
. FieldHelper::safe(
$t, true
@@ -3279,11 +3279,11 @@ class Fields extends Structure
);
$fieldSetXML->addAttribute('repeat', 'true');
if (strpos($fieldAttributes['fields'], ',') !== false)
if (strpos((string) $fieldAttributes['fields'], ',') !== false)
{
// mulitpal fields
$fieldsSets = (array) explode(
',', $fieldAttributes['fields']
',', (string) $fieldAttributes['fields']
);
}
elseif (is_numeric($fieldAttributes['fields']))
@@ -3462,11 +3462,11 @@ class Fields extends Structure
$form, $attributes
);
if (strpos($fieldAttributes['fields'], ',') !== false)
if (strpos((string) $fieldAttributes['fields'], ',') !== false)
{
// multiple fields
$fieldsSets = (array) explode(
',', $fieldAttributes['fields']
',', (string) $fieldAttributes['fields']
);
}
elseif (is_numeric($fieldAttributes['fields']))
@@ -3657,9 +3657,9 @@ class Fields extends Structure
);
if (strtolower($typeName) === 'groupedlist'
&& strpos(
$value, ','
(string) $value, ','
) !== false
&& strpos($value, '@@') !== false)
&& strpos((string) $value, '@@') !== false)
{
// reset the group temp arrays
$groups_ = array();
@@ -3667,7 +3667,7 @@ class Fields extends Structure
'option' => array());
$order_ = array();
// mulitpal options
$options = explode(',', $value);
$options = explode(',', (string) $value);
foreach ($options as $option)
{
if (strpos($option, '@@') !== false)
@@ -3810,10 +3810,10 @@ class Fields extends Structure
}
}
}
elseif (strpos($value, ',') !== false)
elseif (strpos((string) $value, ',') !== false)
{
// municipal options
$options = explode(',', $value);
$options = explode(',', (string) $value);
foreach ($options as $option)
{
$optionXML = $field->fieldXML->addChild('option');
@@ -3855,10 +3855,10 @@ class Fields extends Structure
{
// one option
$optionXML = $field->fieldXML->addChild('option');
if (strpos($value, '|') !== false)
if (strpos((string) $value, '|') !== false)
{
// has other value then text
list($v, $t) = explode('|', $value);
list($v, $t) = explode('|', (string) $value);
$langValue = $langView . '_'
. FieldHelper::safe(
$t, true
@@ -4053,7 +4053,7 @@ class Fields extends Structure
foreach ($this->siteFields[$view][$field] as $codeString => $array)
{
// get the code array
$codeArray = explode('___', $codeString);
$codeArray = explode('___', (string) $codeString);
// set the code
$code = trim($codeArray[0]);
// set the decoding methods
@@ -4189,18 +4189,18 @@ class Fields extends Structure
);
}
// catch all PHP here
elseif (strpos($property['name'], 'type_php') !== false
elseif (strpos((string) $property['name'], 'type_php') !== false
&& $setCustom)
{
// set the line number
$phpLine = (int) preg_replace(
'/[^0-9]/', '', $property['name']
'/[^0-9]/', '', (string) $property['name']
);
// set the type key
$phpKey = (string) trim(
str_replace(
'type_', '',
preg_replace('/[0-9]+/', '', $property['name'])
preg_replace('/[0-9]+/', '', (string) $property['name'])
), '_'
);
// load the php for the custom field file
@@ -4619,7 +4619,7 @@ class Fields extends Structure
&& !is_numeric($number_check))
{
$number_check = str_replace(
',', '.', $field['settings']->datadefault_other
',', '.', (string) $field['settings']->datadefault_other
);
}
// check if we have a valid number value
@@ -4962,14 +4962,14 @@ class Fields extends Structure
. $otherView;
}
// check the context (does our target match)
if (strpos($_extension, '.') !== false)
if (strpos((string) $_extension, '.') !== false)
{
$target_view = trim(explode('.', $_extension)[1]);
$target_view = trim(explode('.', (string) $_extension)[1]);
// from my understanding the target extension view and the otherView must align
// so I will here check that it does, and if not raise an error message to fix this
if ($target_view !== $otherView)
{
$target_extension = trim(explode('.', $_extension)[0]);
$target_extension = trim(explode('.', (string) $_extension)[0]);
$correction = $target_extension . '.' . $otherView;
$this->app->enqueueMessage(
JText::sprintf(
@@ -5242,7 +5242,7 @@ class Fields extends Structure
$filter_type_code = StringHelper::safe(
$nameListCode . 'filter' . $name
);
$filter_type_code = preg_replace('/_+/', '', $filter_type_code);
$filter_type_code = preg_replace('/_+/', '', (string) $filter_type_code);
$filter_function_name = StringHelper::safe(
$name, 'F'
);
@@ -5338,10 +5338,10 @@ class Fields extends Structure
// set J prefix
$jprefix = 'J';
// check if this field has a dot in field type name
if (strpos($data['type'], '.') !== false)
if (strpos((string) $data['type'], '.') !== false)
{
// so we have name spacing in custom field type name
$dotTypeArray = explode('.', $data['type']);
$dotTypeArray = explode('.', (string) $data['type']);
// set the J prefix
if (count((array) $dotTypeArray) > 1)
{
@@ -5527,7 +5527,7 @@ class Fields extends Structure
);
}
// check the the JFormHelper::loadFieldClass(..) was set
elseif (strpos(CFactory::_('Content')->get_('customfield_' . $data['type'], 'JFORM_TYPE_HEADER'),
elseif (strpos((string) CFactory::_('Content')->get_('customfield_' . $data['type'], 'JFORM_TYPE_HEADER'),
'JFormHelper::loadFieldClass(') === false)
{
CFactory::_('Content')->add_('customfield_' . $data['type'], 'JFORM_TYPE_HEADER',
@@ -5873,7 +5873,7 @@ class Fields extends Structure
$field_filter_sets[] = Indent::_(3) . 'type="'
. $filter['type'] . '"';
// set css classname of this field
$filter['class'] = ucfirst($filter['type']);
$filter['class'] = ucfirst((string) $filter['type']);
}
else
{
@@ -5881,7 +5881,7 @@ class Fields extends Structure
$field_filter_sets[] = Indent::_(3) . 'type="'
. $filter['filter_type'] . '"';
// set css classname of this field
$filter['class'] = ucfirst($filter['filter_type']);
$filter['class'] = ucfirst((string) $filter['filter_type']);
}
$field_filter_sets[] = Indent::_(3) . 'name="'
. $filter['code'] . '"';
@@ -6124,17 +6124,17 @@ class Fields extends Structure
$fieldData['component'] = $local_component;
}
// check that the component has the com_ value in it
if (strpos($fieldData['component'], 'com_') === false
if (strpos((string) $fieldData['component'], 'com_') === false
|| strpos(
$fieldData['component'], '='
(string) $fieldData['component'], '='
) !== false)
{
$fieldData['component'] = "com_" . $fieldData['component'];
}
// make sure the component is update if # # # or [ [ [ component placeholder is used
if (strpos($fieldData['component'], Placefix::h()) !== false
if (strpos((string) $fieldData['component'], (string) Placefix::h()) !== false
|| strpos(
$fieldData['component'], Placefix::b()
(string) $fieldData['component'], (string) Placefix::b()
) !== false) // should not be needed... but
{
$fieldData['component'] = CFactory::_('Placeholder')->update_(
File diff suppressed because it is too large. Load diff
+17 -17
View File
@@ -103,7 +103,7 @@ class Infusion extends Interpretation
// COMPANYNAME
CFactory::_('Content')->set('COMPANYNAME', trim(
JFilterOutput::cleanText($this->componentData->companyname)
(string) JFilterOutput::cleanText($this->componentData->companyname)
));
// CREATIONDATE
@@ -121,31 +121,31 @@ class Infusion extends Interpretation
// AUTHOR
CFactory::_('Content')->set('AUTHOR', trim(
JFilterOutput::cleanText($this->componentData->author)
(string) JFilterOutput::cleanText($this->componentData->author)
));
// AUTHOREMAIL
CFactory::_('Content')->set('AUTHOREMAIL', trim($this->componentData->email));
CFactory::_('Content')->set('AUTHOREMAIL', trim((string) $this->componentData->email));
// AUTHORWEBSITE
CFactory::_('Content')->set('AUTHORWEBSITE', trim($this->componentData->website));
CFactory::_('Content')->set('AUTHORWEBSITE', trim((string) $this->componentData->website));
// COPYRIGHT
CFactory::_('Content')->set('COPYRIGHT', trim($this->componentData->copyright));
CFactory::_('Content')->set('COPYRIGHT', trim((string) $this->componentData->copyright));
// LICENSE
CFactory::_('Content')->set('LICENSE', trim($this->componentData->license));
CFactory::_('Content')->set('LICENSE', trim((string) $this->componentData->license));
// VERSION
CFactory::_('Content')->set('VERSION', trim($this->componentData->component_version));
CFactory::_('Content')->set('VERSION', trim((string) $this->componentData->component_version));
// set the actual global version
CFactory::_('Content')->set('ACTUALVERSION', CFactory::_('Content')->get('VERSION'));
// do some Tweaks to the version based on selected options
if (strpos(CFactory::_('Content')->get('VERSION'), '.') !== false)
if (strpos((string) CFactory::_('Content')->get('VERSION'), '.') !== false)
{
$versionArray = explode(
'.', CFactory::_('Content')->get('VERSION')
'.', (string) CFactory::_('Content')->get('VERSION')
);
}
// load only first two values
@@ -177,13 +177,13 @@ class Infusion extends Interpretation
// SHORT_DISCRIPTION
CFactory::_('Content')->set('SHORT_DESCRIPTION', trim(
JFilterOutput::cleanText(
(string) JFilterOutput::cleanText(
$this->componentData->short_description
)
));
// DESCRIPTION
CFactory::_('Content')->set('DESCRIPTION', trim($this->componentData->description));
CFactory::_('Content')->set('DESCRIPTION', trim((string) $this->componentData->description));
// COMP_IMAGE_TYPE
CFactory::_('Content')->set('COMP_IMAGE_TYPE', $this->setComponentImageType($this->componentData->image));
@@ -419,7 +419,7 @@ class Infusion extends Interpretation
))
{
CFactory::_('Content')->set_($nameSingleCode, 'DOCUMENT_CUSTOM_PHP', str_replace(
'$document->', '$this->document->', $phpDocument
'$document->', '$this->document->', (string) $phpDocument
));
// clear some memory
unset($phpDocument);
@@ -835,7 +835,7 @@ class Infusion extends Interpretation
{
// only minfy if no php is added to the footer script
if (CFactory::_('Config')->get('minify', 0)
&& strpos($footerScript, '<?php') === false)
&& strpos((string) $footerScript, '<?php') === false)
{
// minfy the script
$minifier = new JS;
@@ -1425,7 +1425,7 @@ class Infusion extends Interpretation
$target = array('admin' => 'a_rule_zi');
$this->buildDynamique($target, 'rule', $rule);
// set the JFormRule Name
CFactory::_('Content')->set_('a_rule_zi_' . $rule, 'Name', ucfirst($rule));
CFactory::_('Content')->set_('a_rule_zi_' . $rule, 'Name', ucfirst((string) $rule));
// set the JFormRule PHP
CFactory::_('Content')->set_('a_rule_zi_' . $rule, 'VALIDATION_RULE_METHODS', PHP_EOL . $_php);
}
@@ -2118,13 +2118,13 @@ class Infusion extends Interpretation
foreach ($this->languages['components'] as $tag => $areas)
{
// trim the tag
$tag = trim($tag);
$tag = trim((string) $tag);
foreach ($areas as $area => $languageStrings)
{
// set naming convention
$p = 'admin';
$t = '';
if (strpos($area, 'site') !== false)
if (strpos((string) $area, 'site') !== false)
{
if (CFactory::_('Config')->remove_site_folder
&& CFactory::_('Config')->remove_site_edit_folder)
@@ -2133,7 +2133,7 @@ class Infusion extends Interpretation
}
$p = 'site';
}
if (strpos($area, 'sys') !== false)
if (strpos((string) $area, 'sys') !== false)
{
$t = '.sys';
}
+23 -18
View File
@@ -26,6 +26,11 @@
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use VDM\Joomla\Utilities\StringHelper;
use VDM\Joomla\Utilities\JsonHelper;
use VDM\Joomla\Utilities\GetHelper;
use VDM\Joomla\Utilities\ArrayHelper;
/**
* Mapping class
*/
@@ -102,7 +107,7 @@ class Mapping
// set the app to insure messages can be set
$this->app = JFactory::getApplication();
// check that we have data
if (ComponentbuilderHelper::checkArray($data))
if (ArrayHelper::check($data))
{
// make sure we have an id
if (isset($data['id']) && $data['id'] > 0)
@@ -117,15 +122,15 @@ class Mapping
{
case 'base64':
// set needed value
$this->$key = base64_decode($value);
$this->$key = base64_decode((string) $value);
break;
case 'json':
// set needed value
$this->$key = json_decode($value, true);
$this->$key = json_decode((string) $value, true);
break;
case 'safeString':
// set needed value
$this->$key = ComponentbuilderHelper::safeString($value);
$this->$key = StringHelper::check($value);
break;
default :
$this->$key = $value;
@@ -134,10 +139,10 @@ class Mapping
}
}
// get linked admin views
$addadmin_views = ComponentbuilderHelper::getVar('component_admin_views', $data['id'], 'joomla_component', 'addadmin_views');
if (ComponentbuilderHelper::checkJson($addadmin_views))
$addadmin_views = GetHelper::var('component_admin_views', $data['id'], 'joomla_component', 'addadmin_views');
if (JsonHelper::check($addadmin_views))
{
$this->addadmin_views = json_decode($addadmin_views, true);
$this->addadmin_views = json_decode((string)$addadmin_views, true);
}
// set the map of the views needed
if ($this->setMap())
@@ -173,7 +178,7 @@ class Mapping
{
// start parsing the sql dump data
$queries = JDatabaseDriver::splitSql($this->buildcompsql);
if (ComponentbuilderHelper::checkArray($queries))
if (ArrayHelper::check($queries))
{
foreach ($queries as $query)
{
@@ -208,7 +213,7 @@ class Mapping
}
}
// check if the mapping was done
if (ComponentbuilderHelper::checkArray($this->map))
if (ArrayHelper::check($this->map))
{
return true;
}
@@ -224,12 +229,12 @@ class Mapping
if (strpos($query, '`#__') !== false)
{
// get table name
$tableName = ComponentbuilderHelper::getBetween($query, '`#__', "`");
$tableName = GetHelper::between($query, '`#__', "`");
}
elseif (strpos($query, "'#__") !== false)
{
// get table name
$tableName = ComponentbuilderHelper::getBetween($query, "'#__", "'");
$tableName = GetHelper::between($query, "'#__", "'");
}
// if it still was not found
if (!isset($tableName) || !ComponentbuilderHelper::checkString($tableName))
@@ -267,12 +272,12 @@ class Mapping
if (0 === strpos($row, '`'))
{
// get field name
$name = ComponentbuilderHelper::getBetween($row, '`', '`');
$name = GetHelper::between($row, '`', '`');
}
if (0 === strpos($row, "'"))
{
// get field name
$name = ComponentbuilderHelper::getBetween($row, "'", "'");
$name = GetHelper::between($row, "'", "'");
}
// check if the name was found
if (ComponentbuilderHelper::checkString($name))
@@ -289,7 +294,7 @@ class Mapping
{
$field['row'] = $row;
$field['name'] = $name;
$field['label'] = ComponentbuilderHelper::safeString($name, 'W');
$field['label'] = StringHelper::check($name, 'W');
$field['fieldType'] = $fieldType;
$field['size'] = $this->getSize($row, $field);
$field['sizeOther'] = '';
@@ -319,7 +324,7 @@ class Mapping
}
}
}
if (ComponentbuilderHelper::checkArray($fields))
if (ArrayHelper::check($fields))
{
return $fields;
}
@@ -352,7 +357,7 @@ class Mapping
{
if (in_array($field['dataType'], $this->dataSize))
{
return ComponentbuilderHelper::getBetween($row, $field['dataType'].'(', ')');
return GetHelper::between($row, $field['dataType'].'(', ')');
}
return '';
}
@@ -365,12 +370,12 @@ class Mapping
// get default value
if (strpos($row, 'DEFAULT "') !== false) // to sure it this is correct...
{
return ComponentbuilderHelper::getBetween($row, 'DEFAULT "', '"');
return GetHelper::between($row, 'DEFAULT "', '"');
}
// get default value
if (strpos($row, "DEFAULT '") !== false)
{
return ComponentbuilderHelper::getBetween($row, "DEFAULT '", "'");
return GetHelper::between($row, "DEFAULT '", "'");
}
return '';
}
+7 -3
View File
@@ -26,6 +26,10 @@
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use VDM\Joomla\Componentbuilder\Compiler\Factory as CFactory;
use VDM\Joomla\Utilities\StringHelper;
use VDM\Joomla\Utilities\GetHelper;
/**
* Builder class
*/
@@ -102,7 +106,7 @@ class Builder extends Mapping
{
// set the view object
$object = new stdClass();
$object->system_name = ComponentbuilderHelper::safeString($name, 'W') . ' (dynamic build)';
$object->system_name = StringHelper::check($name, 'W') . ' (dynamic build)';
$object->name_single = $name;
$object->name_list = $name. 's';
$object->short_description = $name. ' view (dynamic build)';
@@ -257,14 +261,14 @@ class Builder extends Mapping
}
return false;
}
/**
* get the field type id from system
*/
protected function getFieldType($fieldName)
{
// load the field settings
return ComponentbuilderHelper::getVar('fieldtype', $fieldName, 'name', 'id');
return GetHelper::var('fieldtype', $fieldName, 'name', 'id');
}
/**
+7 -4
View File
@@ -26,6 +26,9 @@
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use VDM\Joomla\Utilities\GetHelper;
use VDM\Joomla\Utilities\ArrayHelper;
/**
* Extrusion class
*/
@@ -58,10 +61,10 @@ class Extrusion extends Builder
protected function setAdminViews(&$component_id)
{
// check if views were set
if (ComponentbuilderHelper::checkArray($this->views))
if (ArrayHelper::check($this->views))
{
$count = 0;
if (ComponentbuilderHelper::checkArray($this->addadmin_views))
if (ArrayHelper::check($this->addadmin_views))
{
$count = (int) count((array)$this->addadmin_views) + 3;
}
@@ -84,7 +87,7 @@ class Extrusion extends Builder
$this->addadmin_views['addadmin_views'.$pointer]['order'] = $pointer + 1;
}
}
if (isset($this->addadmin_views) && ComponentbuilderHelper::checkArray($this->addadmin_views))
if (isset($this->addadmin_views) && ArrayHelper::check($this->addadmin_views))
{
// set the field object
$object = new stdClass();
@@ -94,7 +97,7 @@ class Extrusion extends Builder
$object->created_by = $this->user->id;
$object->published = 1;
// check if it is already set
if ($item_id = ComponentbuilderHelper::getVar('component_admin_views', $component_id, 'joomla_component', 'id'))
if ($item_id = GetHelper::var('component_admin_views', $component_id, 'joomla_component', 'id'))
{
// set ID
$object->id = (int) $item_id;
+10 -10
View File
@@ -1977,20 +1977,20 @@ INSERT INTO `#__componentbuilder_power` (`id`, `add_head`, `description`, `exten
(7, 1, '', 'aa253bac-f4b4-41b4-8ace-071a73fc4d96', '', 'c65aaf1f-817c-49a2-8202-282e3904f5b1', 'dXNlIEpvb21sYVxDTVNcSHR0cFxIdHRwIGFzIEJhc2VIdHRwOw0KdXNlIEpvb21sYVxSZWdpc3RyeVxSZWdpc3RyeTs=', '', '', '{}', 'CS8qKg0KCSAqIENvbnN0cnVjdG9yLg0KCSAqDQoJICogQHBhcmFtICAgUmVnaXN0cnkgICRvcHRpb25zICBHaXRlYSBvcHRpb25zIG9iamVjdC4NCgkgKiBAcGFyYW0gICBIdHRwICAgICAgJGNsaWVudCAgIFRoZSBIVFRQIGNsaWVudCBvYmplY3QuDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoUmVnaXN0cnkgJG9wdGlvbnMgPSBudWxsLCBCYXNlSHR0cCAkY2xpZW50ID0gbnVsbCkNCgl7DQoJCXBhcmVudDo6X19jb25zdHJ1Y3QoJG9wdGlvbnMsICRjbGllbnQpOw0KDQoJCSR0aGlzLT5wYWNrYWdlID0gXGdldF9jbGFzcygkdGhpcyk7DQoJCSR0aGlzLT5wYWNrYWdlID0gc3Vic3RyKCR0aGlzLT5wYWNrYWdlLCBzdHJycG9zKCR0aGlzLT5wYWNrYWdlLCAnXFwnKSArIDEpOw0KCX0NCg0KCS8qKg0KCSAqIE1hZ2ljIG1ldGhvZCB0byBsYXppbHkgY3JlYXRlIEFQSSBvYmplY3RzDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICRuYW1lICBOYW1lIG9mIHByb3BlcnR5IHRvIHJldHJpZXZlDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24NCgkgKg0KCSAqIEByZXR1cm4gIEFic3RyYWN0UGFja2FnZSAgR2l0ZWEgQVBJIHBhY2thZ2Ugb2JqZWN0Lg0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBfX2dldCgkbmFtZSkNCgl7DQoJCSRjbGFzcyA9ICdcXFZETVxcR2l0ZWFcXFBhY2thZ2VcXCcgLiAkdGhpcy0+cGFja2FnZSAuICdcXCcgLiB1Y2ZpcnN0KCRuYW1lKTsNCg0KCQlpZiAoY2xhc3NfZXhpc3RzKCRjbGFzcykgPT0gZmFsc2UpDQoJCXsNCgkJCXRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKA0KCQkJCXNwcmludGYoDQoJCQkJCSdBcmd1bWVudCAlMSRzIHByb2R1Y2VkIGFuIGludmFsaWQgY2xhc3MgbmFtZTogJTIkcyBpbiBwYWNrYWdlICUzJHMnLA0KCQkJCQkkbmFtZSwgJGNsYXNzLCAkdGhpcy0+cGFja2FnZQ0KCQkJCSkNCgkJCSk7DQoJCX0NCg0KCQlpZiAoaXNzZXQoJHRoaXMtPiRuYW1lKSA9PSBmYWxzZSkNCgkJew0KCQkJJHRoaXMtPiRuYW1lID0gbmV3ICRjbGFzcygkdGhpcy0+b3B0aW9ucywgJHRoaXMtPmNsaWVudCk7DQoJCX0NCg0KCQlyZXR1cm4gJHRoaXMtPiRuYW1lOw0KCX0NCg==', '{}', 'AbstractPackage', 'VDM\\Gitea\\AbstractPackage', '1.0.0', '{}', 'Abstract Gitea Package', 'abstract class', '{}', '', 1, '2021-12-03 16:03:06', '2022-09-20 10:09:39', 16, 4),
(8, 1, '', 'c65aaf1f-817c-49a2-8202-282e3904f5b1', '', '51195163-1e87-4251-b755-a03c376798a6', 'dXNlIEpvb21sYVxDTVNcSHR0cFxIdHRwOw0KdXNlIEpvb21sYVxSZWdpc3RyeVxSZWdpc3RyeTs=', '', '', '{}', 'CS8qKg0KCSAqIExpc3QgeW91ciByZXBvc2l0b3JpZXMuDQoJICoNCgkgKiBMaXN0IHJlcG9zaXRvcmllcyBmb3IgdGhlIGF1dGhlbnRpY2F0ZWQgdXNlci4NCgkgKg0KCSAqIEByZXR1cm4gIG9iamVjdA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGdldExpc3RPd24oKQ0KCXsNCgkJLy8gQnVpbGQgdGhlIHJlcXVlc3QgcGF0aC4NCgkJJHVyaSA9ICR0aGlzLT5mZXRjaFVybCgnL3VzZXIvcmVwb3MnKTsNCg0KCQkvLyBTZW5kIHRoZSByZXF1ZXN0Lg0KCQlyZXR1cm4gJHRoaXMtPnByb2Nlc3NSZXNwb25zZSgkdGhpcy0+Y2xpZW50LT5nZXQoJHVyaSkpOw0KCX0NCg0KCS8qKg0KCSAqIExpc3QgdXNlciByZXBvc2l0b3JpZXMuDQoJICoNCgkgKiBMaXN0IHB1YmxpYyByZXBvc2l0b3JpZXMgZm9yIHRoZSBzcGVjaWZpZWQgdXNlci4NCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgJHVzZXIgICAgICAgVGhlIHVzZXIgbmFtZS4NCgkgKg0KCSAqIEByZXR1cm4gIG9iamVjdA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGdldExpc3RVc2VyKCR1c2VyKQ0KCXsNCgkJLy8gQnVpbGQgdGhlIHJlcXVlc3QgcGF0aC4NCgkJJHVyaSA9ICR0aGlzLT5mZXRjaFVybCgnL3VzZXJzLycgLiAkdXNlciAuICcvcmVwb3MnKTsNCg0KCQkvLyBTZW5kIHRoZSByZXF1ZXN0Lg0KCQlyZXR1cm4gJHRoaXMtPnByb2Nlc3NSZXNwb25zZSgkdGhpcy0+Y2xpZW50LT5nZXQoJHVyaSkpOw0KCX0NCg0KCS8qKg0KCSAqIExpc3Qgb3JnYW5pemF0aW9uIHJlcG9zaXRvcmllcy4NCgkgKg0KCSAqIExpc3QgcmVwb3NpdG9yaWVzIGZvciB0aGUgc3BlY2lmaWVkIG9yZy4NCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgJG9yZyAgIFRoZSBuYW1lIG9mIHRoZSBvcmdhbml6YXRpb24uDQoJICoNCgkgKiBAcmV0dXJuICBvYmplY3QNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBnZXRMaXN0T3JnKCRvcmcpDQoJew0KCQkvLyBCdWlsZCB0aGUgcmVxdWVzdCBwYXRoLg0KCQkkdXJpID0gJHRoaXMtPmZldGNoVXJsKCcvb3Jncy8nIC4gJG9yZyAuICcvcmVwb3MnKTsNCg0KCQkvLyBTZW5kIHRoZSByZXF1ZXN0Lg0KCQlyZXR1cm4gJHRoaXMtPnByb2Nlc3NSZXNwb25zZSgkdGhpcy0+Y2xpZW50LT5nZXQoJHVyaSkpOw0KCX0NCg0KCS8qKg0KCSAqIENyZWF0ZS4NCgkgKg0KCSAqIENyZWF0ZSBhIG5ldyByZXBvc2l0b3J5IGZvciB0aGUgYXV0aGVudGljYXRlZCB1c2VyIG9yIGFuIG9yZ2FuaXphdGlvbi4gT0F1dGggdXNlcnMgbXVzdCBzdXBwbHkgcmVwbyBzY29wZS4NCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICRuYW1lICAgICAgICAgICAgICAgVGhlIHJlcG9zaXRvcnkgbmFtZS4NCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkb3JnICAgICAgICAgICAgICAgIFRoZSBvcmdhbml6YXRpb24gbmFtZSAoaWYgbmVlZGVkKS4NCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkZGVzY3JpcHRpb24gICAgICAgIFRoZSByZXBvc2l0b3J5IGRlc2NyaXB0aW9uLg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICRyZWFkbWUgICAgICAgICAgICAgUmVhZG1lIG9mIHRoZSByZXBvc2l0b3J5IHRvIGNyZWF0ZS4NCgkgKiBAcGFyYW0gICBib29sZWFuICAkcHJpdmF0ZSAgICAgICAgICAgIFNldCB0cnVlIHRvIGNyZWF0ZSBhIHByaXZhdGUgcmVwb3NpdG9yeSwgZmFsc2UgdG8gY3JlYXRlIGEgcHVibGljIG9uZS4NCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkZGVmYXVsdEJyYW5jaCAgICAgIERlZmF1bHRCcmFuY2ggb2YgdGhlIHJlcG9zaXRvcnkgKHVzZWQgd2hlbiBpbml0aWFsaXplcyBhbmQgaW4gdGVtcGxhdGUpLg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICRsaWNlbnNlICAgICAgICAgICAgTGljZW5zZSB0byB1c2UuDQoJICogQHBhcmFtICAgYm9vbGVhbiAgJGF1dG9Jbml0ICAgICAgICAgICBXaGV0aGVyIHRoZSByZXBvc2l0b3J5IHNob3VsZCBhdXRvIGluaXQuDQoJICogQHBhcmFtICAgYm9vbGVhbiAgJHRlbXBsYXRlICAgICAgICAgICBXaGV0aGVyIHRoZSByZXBvc2l0b3J5IGlzIHRlbXBsYXRlLg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICRnaXRpZ25vcmVzICAgICAgICAgR2l0aWdub3JlcyB0byB1c2UuDQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFsgSm9vbWxhLCBKZXRCcmFpbnMgXSBhbmQgbXVjaCBtb3JlLi4uDQoJICogQHBhcmFtICAgc3RyaW5nICAgJGlzc3VlTGFiZWxzICAgICAgICBMYWJlbC1TZXQgdG8gdXNlLg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICR0cnVzdE1vZGVsICAgICAgICAgVHJ1c3RNb2RlbCBvZiB0aGUgcmVwb3NpdG9yeS4NCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogWyBkZWZhdWx0LCBjb2xsYWJvcmF0b3IsIGNvbW1pdHRlciwgY29sbGFib3JhdG9yY29tbWl0dGVyIF0NCgkgKg0KCSAqIEByZXR1cm4gIG9iamVjdA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGNyZWF0ZSgkbmFtZSwgJG9yZyA9ICcnLCAkZGVzY3JpcHRpb24gPSAnJywgJHJlYWRtZSA9ICdEZWZhdWx0JywgJHByaXZhdGUgPSBmYWxzZSwgJGRlZmF1bHRCcmFuY2ggPSAnbWFzdGVyJywNCgkJJGxpY2Vuc2UgPSAnR1BMLTIuMC1vci1sYXRlcicsICRhdXRvSW5pdCA9IHRydWUsICR0ZW1wbGF0ZSA9IGZhbHNlLCAkdHJ1c3RNb2RlbCA9ICdkZWZhdWx0JywgJGdpdGlnbm9yZXMgPSAnJywgJGlzc3VlTGFiZWxzID0gJycNCgkpDQoJew0KCQkkcGF0aCA9ICgkb3JnKQ0KCQkJLy8gQ3JlYXRlIGEgcmVwb3NpdG9yeSBmb3IgYW4gb3JnYW5pemF0aW9uDQoJCQk/ICcvb3Jncy8nIC4gJG9yZyAuICcvcmVwb3MnDQoJCQkvLyBDcmVhdGUgYSByZXBvc2l0b3J5IGZvciBhIHVzZXINCgkJCTogJy91c2VyL3JlcG9zJzsNCg0KCQkkZGF0YSA9IFsNCgkJCSduYW1lJyAgICAgICAgICAgICAgID0+ICRuYW1lLA0KCQkJJ2Rlc2NyaXB0aW9uJyAgICAgICAgPT4gJGRlc2NyaXB0aW9uLA0KCQkJJ3JlYWRtZScgICAgICAgICAgICAgPT4gJHJlYWRtZSwNCgkJCSdwcml2YXRlJyAgICAgICAgICAgID0+ICRwcml2YXRlLA0KCQkJJ2F1dG9faW5pdCcgICAgICAgICAgPT4gJGF1dG9Jbml0LA0KCQkJJ2RlZmF1bHRfYnJhbmNoJyAgICAgPT4gJGRlZmF1bHRCcmFuY2gsDQoJCQknaXNzdWVfbGFiZWxzJyAgICAgICA9PiAkaXNzdWVMYWJlbHMsDQoJCQknbGljZW5zZScgICAgICAgICAgICA9PiAkbGljZW5zZSwNCgkJCSd0ZW1wbGF0ZScgICAgICAgICAgID0+ICR0ZW1wbGF0ZSwNCgkJCSdnaXRpZ25vcmVzJyAgICAgICAgID0+ICRnaXRpZ25vcmVzLA0KCQkJJ3RydXN0X21vZGVsJyAgICAgICAgPT4gJHRydXN0TW9kZWwNCgkJXTsNCg0KCQkvLyBTZW5kIHRoZSByZXF1ZXN0Lg0KCQlyZXR1cm4gJHRoaXMtPnByb2Nlc3NSZXNwb25zZSgNCgkJCSR0aGlzLT5jbGllbnQtPnBvc3QoJHRoaXMtPmZldGNoVXJsKCRwYXRoKSwganNvbl9lbmNvZGUoJGRhdGEpKSwNCgkJCTIwMQ0KCQkpOw0KCX0NCg0KCS8qKg0KCSAqIEdldC4NCgkgKg0KCSAqIEBwYXJhbSAgIHN0cLine truncated
(9, 1, '', '', '', '011813ba-8dd2-4beb-98f9-50ab3f3665d1', 'dXNlIEpvb21sYVxDTVNcSHR0cFxIdHRwIGFzIEJhc2VIdHRwOw0KdXNlIEpvb21sYVxDTVNcSHR0cFxIdHRwRmFjdG9yeTsNCnVzZSBKb29tbGFcUmVnaXN0cnlcUmVnaXN0cnk7', '', '', '{\"load_selection0\":{\"load\":\"aa253bac-f4b4-41b4-8ace-071a73fc4d96\"},\"load_selection1\":{\"load\":\"c65aaf1f-817c-49a2-8202-282e3904f5b1\"},\"load_selection2\":{\"load\":\"51195163-1e87-4251-b755-a03c376798a6\"}}', 'CS8qKg0KCSAqIE9wdGlvbnMgZm9yIHRoZSBbW1tBcGldXV0gb2JqZWN0Lg0KCSAqDQoJICogQHZhciAgICBhcnJheQ0KCSAqIEBzaW5jZSAgMS4wDQoJICovDQoJcHJvdGVjdGVkICRvcHRpb25zOw0KDQoJLyoqDQoJICogVGhlIEhUVFAgY2xpZW50IG9iamVjdCB0byB1c2UgaW4gc2VuZGluZyBIVFRQIHJlcXVlc3RzLg0KCSAqDQoJICogQHZhciAgICBCYXNlSHR0cA0KCSAqIEBzaW5jZSAgMS4wDQoJICovDQoJcHJvdGVjdGVkICRjbGllbnQ7DQoNCgkvKioNCgkgKiBDb25zdHJ1Y3Rvci4NCgkgKg0KCSAqIEBwYXJhbSAgIFJlZ2lzdHJ5ICAkb3B0aW9ucyAgW1tbQXBpXV1dIG9wdGlvbnMgb2JqZWN0Lg0KCSAqIEBwYXJhbSAgIEh0dHAgICAgICAkY2xpZW50ICAgVGhlIEhUVFAgY2xpZW50IG9iamVjdC4NCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChSZWdpc3RyeSAkb3B0aW9ucyA9IG51bGwsIEJhc2VIdHRwICRjbGllbnQgPSBudWxsKQ0KCXsNCgkJJHRoaXMtPm9wdGlvbnMgPSAkb3B0aW9ucyA/OiBuZXcgUmVnaXN0cnk7DQoNCgkJLy8gU2V0dXAgdGhlIGRlZmF1bHQgdXNlciBhZ2VudCBpZiBub3QgYWxyZWFkeSBzZXQuDQoJCWlmICghJHRoaXMtPmdldE9wdGlvbigndXNlckFnZW50JykpDQoJCXsNCgkJCSR0aGlzLT5zZXRPcHRpb24oJ3VzZXJBZ2VudCcsICdKW1tbQXBpXV1dLzEuMCcpOw0KCQl9DQoNCgkJLy8gU2V0dXAgdGhlIGRlZmF1bHQgQVBJIHVybCBpZiBub3QgYWxyZWFkeSBzZXQuDQoJCWlmICghJHRoaXMtPmdldE9wdGlvbignYXBpLnVybCcpKQ0KCQl7DQoJCQkkdGhpcy0+c2V0T3B0aW9uKCdhcGkudXJsJywgJ1tbW3Jvb3RfYXBpX3VybF1dXScpOw0KCQl9DQoNCgkJJHRoaXMtPmNsaWVudCA9ICRjbGllbnQgPzogKG5ldyBIdHRwRmFjdG9yeSktPmdldEh0dHAoJHRoaXMtPm9wdGlvbnMpOw0KCX0NCg0KCS8qKg0KCSAqIE1hZ2ljIG1ldGhvZCB0byBsYXppbHkgY3JlYXRlIEFQSSBvYmplY3RzDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICRuYW1lICBOYW1lIG9mIHByb3BlcnR5IHRvIHJldHJpZXZlDQoJICoNCgkgKiBAcmV0dXJuICBBYnN0cmFjdFtbW0FwaV1dXU9iamVjdCAgW1tbQXBpXV1dIEFQSSBvYmplY3QgKGlzc3VlcywgcHVsbHMsIGV0YykuDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKiBAdGhyb3dzICBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmICRuYW1lIGlzIG5vdCBhIHZhbGlkIHN1YiBjbGFzcy4NCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gX19nZXQoJG5hbWUpDQoJew0KCQkkY2xhc3MgPSAnXFxbW1tDT01QQU5ZXV1dXFxbW1tBcGldXV1cXFBhY2thZ2VcXCcgLiB1Y2ZpcnN0KCRuYW1lKTsNCg0KCQlpZiAoY2xhc3NfZXhpc3RzKCRjbGFzcykpDQoJCXsNCgkJCWlmIChpc3NldCgkdGhpcy0+JG5hbWUpID09IGZhbHNlKQ0KCQkJew0KCQkJCSR0aGlzLT4kbmFtZSA9IG5ldyAkY2xhc3MoJHRoaXMtPm9wdGlvbnMsICR0aGlzLT5jbGllbnQpOw0KCQkJfQ0KDQoJCQlyZXR1cm4gJHRoaXMtPiRuYW1lOw0KCQl9DQoNCgkJdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignQXJndW1lbnQgJXMgcHJvZHVjZWQgYW4gaW52YWxpZCBjbGFzcyBuYW1lOiAlcycsICRuYW1lLCAkY2xhc3MpKTsNCgl9DQoNCgkvKioNCgkgKiBHZXQgYW4gb3B0aW9uIGZyb20gdGhlIFtbW0FwaV1dXSBpbnN0YW5jZS4NCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgJGtleSAgVGhlIG5hbWUgb2YgdGhlIG9wdGlvbiB0byBnZXQuDQoJICoNCgkgKiBAcmV0dXJuICBtaXhlZCAgVGhlIG9wdGlvbiB2YWx1ZS4NCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBnZXRPcHRpb24oJGtleSkNCgl7DQoJCXJldHVybiBpc3NldCgkdGhpcy0+b3B0aW9uc1ska2V5XSkgPyAkdGhpcy0+b3B0aW9uc1ska2V5XSA6IG51bGw7DQoJfQ0KDQoJLyoqDQoJICogU2V0IGFuIG9wdGlvbiBmb3IgdGhlIFtbW0FwaV1dXSBpbnN0YW5jZS4NCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgJGtleSAgICBUaGUgbmFtZSBvZiB0aGUgb3B0aW9uIHRvIHNldC4NCgkgKiBAcGFyYW0gICBtaXhlZCAgICR2YWx1ZSAgVGhlIG9wdGlvbiB2YWx1ZSB0byBzZXQuDQoJICoNCgkgKiBAcmV0dXJuICBbW1tBcGldXV0gIFRoaXMgb2JqZWN0IGZvciBtZXRob2QgY2hhaW5pbmcuDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gc2V0T3B0aW9uKCRrZXksICR2YWx1ZSkNCgl7DQoJCSR0aGlzLT5vcHRpb25zWyRrZXldID0gJHZhbHVlOw0KDQoJCXJldHVybiAkdGhpczsNCgl9DQo=', '{}', '[[[Api]]]', '[[[COMPANY]]]\\[[[Api]]]\\[[[Api]]]', '1.0.0', '{}', 'API', 'class', '{}', '', 1, '2022-01-05 00:44:15', '2022-09-20 10:09:49', 6, 4),
(10, 1, 'Control the naming of a field\r\n\r\n@since 3.0.9', '', '', '9ef0eb24-aae4-4f5a-99af-d724db44808f', 'dXNlIEpvb21sYVxDTVNcQ29tcG9uZW50XENvbXBvbmVudEhlbHBlcjs=', '', '', '{}', 'CS8qKg0KCSAqIFRoZSBmaWVsZCBidWlsZGVyIHN3aXRjaA0KCSAqIA0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKi8NCglwcm90ZWN0ZWQgc3RhdGljICRidWlsZGVyID0gZmFsc2U7DQoNCgkvKioNCgkgKiBNYWtpbmcgZmllbGQgbmFtZXMgc2FmZQ0KCSAqDQoJICogQGlucHV0CXN0cmluZyAgICAgICBUaGUgc3RyaW5nIHlvdSB3b3VsZCBsaWtlIHRvIG1ha2Ugc2FmZQ0KCSAqIEBpbnB1dAlib29sZWFuICAgICAgVGhlIHN3aXRjaCB0byByZXR1cm4gYW4gQUxMIFVQUEVSIENBU0Ugc3RyaW5nDQoJICogQGlucHV0CXN0cmluZyAgICAgICBUaGUgc3RyaW5nIHRvIHVzZSBpbiB3aGl0ZSBzcGFjZQ0KCSAqDQoJICogQHJldHVybnMgc3RyaW5nIG9uIHN1Y2Nlc3MNCgkgKiANCgkgKiBAc2luY2UgIDMuMC45DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzYWZlKCRzdHJpbmcsICRhbGxjYXAgPSBmYWxzZSwgJHNwYWNlciA9ICdfJykNCgl7DQoJCS8vIGdldCBnbG9iYWwgdmFsdWUNCgkJaWYgKHNlbGY6OiRidWlsZGVyID09PSBmYWxzZSkNCgkJew0KCQkJc2VsZjo6JGJ1aWxkZXIgPSBIZWxwZXI6OmdldFBhcmFtcygpLT5nZXQoJ2ZpZWxkX25hbWVfYnVpbGRlcicsIDEpOw0KCQl9DQoNCgkJLy8gdXNlIHRoZSBuZXcgY29udmVudGlvbg0KCQlpZiAoMiA9PSBzZWxmOjokYnVpbGRlcikNCgkJew0KCQkJLy8gMG5seSBjb250aW51ZSBpZiB3ZSBoYXZlIGEgc3RyaW5nDQoJCQlpZiAoU3RyaW5nSGVscGVyOjpjaGVjaygkc3RyaW5nKSkNCgkJCXsNCgkJCQkvLyBjaGVjayB0aGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIgaXMgbm90IGEgbnVtYmVyDQoJCQkJaWYgKGlzX251bWVyaWMoc3Vic3RyKCRzdHJpbmcsIDAsIDEpKSkNCgkJCQl7DQoJCQkJCSRzdHJpbmcgPSBTdHJpbmdIZWxwZXI6Om51bWJlcnMoJHN0cmluZyk7DQoJCQkJfQ0KDQoJCQkJLy8gcmVtb3ZlIGFsbCBvdGhlciBzdHJhbmdlIGNoYXJhY3RlcnMNCgkJCQkkc3RyaW5nID0gdHJpbSgkc3RyaW5nKTsNCgkJCQkkc3RyaW5nID0gcHJlZ19yZXBsYWNlKCcvJy4kc3BhY2VyLicrLycsICcgJywgJHN0cmluZyk7DQoJCQkJJHN0cmluZyA9IHByZWdfcmVwbGFjZSgnL1xzKy8nLCAnICcsICRzdHJpbmcpOw0KDQoJCQkJLy8gVHJhbnNsaXRlcmF0ZSBzdHJpbmcNCgkJCQkkc3RyaW5nID0gU3RyaW5nSGVscGVyOjp0cmFuc2xpdGVyYXRlKCRzdHJpbmcpOw0KDQoJCQkJLy8gcmVtb3ZlIGFsbCBhbmQga2VlcCBvbmx5IGNoYXJhY3RlcnMgYW5kIG51bWJlcnMNCgkJCQkkc3RyaW5nID0gcHJlZ19yZXBsYWNlKCIvW15BLVphLXowLTkgXS8iLCAnJywgJHN0cmluZyk7DQoNCgkJCQkvLyByZXBsYWNlIHdoaXRlIHNwYWNlIHdpdGggdW5kZXJzY29yZSAoU0FGRVNUIE9QVElPTikNCgkJCQkkc3RyaW5nID0gcHJlZ19yZXBsYWNlKCcvXHMrLycsICRzcGFjZXIsICRzdHJpbmcpOw0KDQoJCQkJLy8gcmV0dXJuIGFsbCBjYXBzDQoJCQkJaWYgKCRhbGxjYXApDQoJCQkJew0KCQkJCQlyZXR1cm4gc3RydG91cHBlcigkc3RyaW5nKTsNCgkJCQl9DQoNCgkJCQkvLyBkZWZhdWx0IGlzIHRvIHJldHVybiBsb3dlcg0KCQkJCXJldHVybiBzdHJ0b2xvd2VyKCRzdHJpbmcpOw0KCQkJfQ0KCQkJLy8gbm90IGEgc3RyaW5nDQoJCQlyZXR1cm4gJyc7DQoJCX0NCg0KCQkvLyByZXR1cm4gYWxsIGNhcHMNCgkJaWYgKCRhbGxjYXApDQoJCXsNCgkJCXJldHVybiBTdHJpbmdIZWxwZXI6OnNhZmUoJHN0cmluZywgJ1UnKTsNCgkJfQ0KDQoJCS8vIHVzZSB0aGUgZGVmYXVsdCAob3JpZ2luYWwgYmVoYXZpb3IvY29udmVudGlvbikNCgkJcmV0dXJuIFN0cmluZ0hlbHBlcjo6c2FmZSgkc3RyaW5nKTsNCgl9DQo=', '{}', 'FieldHelper', 'VDM\\Joomla\\Utilities.String.FieldHelper', '1.0.0', '{}', 'String Field Helper', 'abstract class', '{\"use_selection0\":{\"use\":\"1f28cb53-60d9-4db1-b517-3c7dc6b429ef\",\"as\":\"default\"},\"use_selection1\":{\"use\":\"640b5352-fb09-425f-a26e-cd44eda03f15\",\"as\":\"default\"}}', '', 1, '2022-03-08 20:46:56', '2022-09-20 10:09:54', 21, 5),
(11, '', 'The json checker\r\n\r\n@since 3.0.9', '', '', '4b225c51-d293-48e4-b3f6-5136cf5c3f18', '', '', '', '{\"load_selection0\":{\"load\":\"1f28cb53-60d9-4db1-b517-3c7dc6b429ef\"},\"load_selection1\":{\"load\":\"0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a\"},\"load_selection2\":{\"load\":\"db87c339-5bb6-4291-a7ef-2c48ea1b06bc\"}}', 'CS8qKg0KCSAqIENoZWNrIGlmIHlvdSBoYXZlIGEganNvbiBzdHJpbmcNCgkgKg0KCSAqIEBpbnB1dCAgICBzdHJpbmcgICRzdHJpbmcgIFRoZSBqc29uIHN0cmluZyB0byBjaGVjaw0KCSAqDQoJICogQHJldHVybnMgYm9vbCB0cnVlIG9uIHN1Y2Nlc3MNCgkgKiANCgkgKiBAc2luY2UgIDMuMC45DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjaGVjaygkc3RyaW5nKTogYm9vbA0KCXsNCgkJaWYgKFN0cmluZ0hlbHBlcjo6Y2hlY2soJHN0cmluZykpDQoJCXsNCgkJCWpzb25fZGVjb2RlKCRzdHJpbmcpOw0KCQkJcmV0dXJuIChqc29uX2xhc3RfZXJyb3IoKSA9PT0gSlNPTl9FUlJPUl9OT05FKTsNCgkJfQ0KDQoJCXJldHVybiBmYWxzZTsNCgl9DQoNCgkvKioNCgkgKiBDb252ZXJ0IGEganNvbiBvYmplY3QgdG8gYSBzdHJpbmcNCgkgKg0KCSAqIEBpbnB1dCAgICBzdHJpbmcgICR2YWx1ZSAgVGhlIGpzb24gc3RyaW5nIHRvIGNvbnZlcnQNCgkgKg0KCSAqIEByZXR1cm5zIGEgc3RyaW5nDQoJICogDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc3RyaW5nKCR2YWx1ZSwgJHNlcGFyYXRvciA9ICIsICIsICR0YWJsZSA9IG51bGwsICRpZCA9ICdpZCcsICRuYW1lID0gJ25hbWUnKQ0KCXsNCgkJLy8gZG8gc29tZSB0YWJsZSBmb290IHdvcmsNCgkJJGV4dGVybmFsID0gZmFsc2U7DQoJCWlmIChzdHJwb3MoJHRhYmxlLCAnI19fJykgIT09IGZhbHNlKQ0KCQl7DQoJCQkkZXh0ZXJuYWwgPSB0cnVlOw0KCQkJJHRhYmxlID0gc3RyX3JlcGxhY2UoJyNfXycsICcnLCAkdGFibGUpOw0KCQl9DQoNCgkJLy8gY2hlY2sgaWYgc3RyaW5nIGlzIEpTT04NCgkJJHJlc3VsdCA9IGpzb25fZGVjb2RlKCR2YWx1ZSwgdHJ1ZSk7DQoJCWlmIChqc29uX2xhc3RfZXJyb3IoKSA9PT0gSlNPTl9FUlJPUl9OT05FKQ0KCQl7DQoJCQkvLyBpcyBKU09ODQoJCQlpZiAoQXJyYXlIZWxwZXI6OmNoZWNrKCRyZXN1bHQpKQ0KCQkJew0KCQkJCWlmIChTdHJpbmdIZWxwZXI6OmNoZWNrKCR0YWJsZSkpDQoJCQkJew0KCQkJCQkkbmFtZXMgPSBhcnJheSgpOw0KCQkJCQlmb3JlYWNoICgkcmVzdWx0IGFzICR2YWwpDQoJCQkJCXsNCgkJCQkJCWlmICgkZXh0ZXJuYWwpDQoJCQkJCQl7DQoJCQkJCQkJaWYgKCRfbmFtZSA9IEdldEhlbHBlcjo6dmFyKG51bGwsICR2YWwsICRpZCwgJG5hbWUsICc9JywgJHRhYmxlKSkNCgkJCQkJCQl7DQoJCQkJCQkJCSRuYW1lc1tdID0gJF9uYW1lOw0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJCWVsc2UNCgkJCQkJCXsNCgkJCQkJCQlpZiAoJF9uYW1lID0gR2V0SGVscGVyOjp2YXIoJHRhYmxlLCAkdmFsLCAkaWQsICRuYW1lKSkNCgkJCQkJCQl7DQoJCQkJCQkJCSRuYW1lc1tdID0gJF9uYW1lOw0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCQlpZiAoQXJyYXlIZWxwZXI6OmNoZWNrKCRuYW1lcykpDQoJCQkJCXsNCgkJCQkJCXJldHVybiAoc3RyaW5nKSBpbXBsb2RlKCRzZXBhcmF0b3IsICRuYW1lcyk7DQoJCQkJCX0JDQoJCQkJfQ0KCQkJCXJldHVybiAoc3RyaW5nKSBpbXBsb2RlKCRzZXBhcmF0b3IsICRyZXN1bHQpOw0KCQkJfQ0KCQkJcmV0dXJuIChzdHJpbmcpIGpzb25fZGVjb2RlKCR2YWx1ZSk7DQoJCX0NCgkJcmV0dXJuICR2YWx1ZTsNCgl9DQo=', '{}', 'JsonHelper', 'VDM\\Joomla\\Utilities.JsonHelper', '1.0.0', '{}', 'Utilities Json Helper', 'abstract class', '{}', '', 1, '2022-03-08 21:03:54', '2022-09-20 09:51:51', 21, 6),
(12, 1, 'Some string tricks\r\n\r\n@since 3.0.9', '', '', '1f28cb53-60d9-4db1-b517-3c7dc6b429ef', 'dXNlIEpvb21sYVxDTVNcRmlsdGVyXElucHV0RmlsdGVyOw0KdXNlIEpvb21sYVxDTVNcTGFuZ3VhZ2VcTGFuZ3VhZ2U7', '', '', '{\"load_selection0\":{\"load\":\"0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a\"}}', 'CS8qKg0KCSAqIFRoZSBNYWluIEFjdGl2ZSBMYW5ndWFnZQ0KCSAqIA0KCSAqIEB2YXIgICAgICBzdHJpbmcNCgkgKiANCgkgKiBAc2luY2UgIDMuMC45DQoJICovDQoJcHVibGljIHN0YXRpYyAkbGFuZ1RhZzsNCg0KCS8qKg0KCSAqIENoZWNrIGlmIHdlIGhhdmUgYSBzdHJpbmcgd2l0aCBhIGxlbmd0aA0KCSAqDQoJICogQGlucHV0ICAgIHN0cmluZyAgJHN0cmluZyBUaGUgc3RyaW5nIHRvIGNoZWNrDQoJICoNCgkgKiBAcmV0dXJucyBib29sIHRydWUgb24gc3VjY2Vzcw0KCSAqIA0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNoZWNrKCRzdHJpbmcpOiBib29sDQoJew0KCQlpZiAoaXNfc3RyaW5nKCRzdHJpbmcpICYmIHN0cmxlbigkc3RyaW5nKSA+IDApDQoJCXsNCgkJCXJldHVybiB0cnVlOw0KCQl9DQoNCgkJcmV0dXJuIGZhbHNlOw0KCX0NCg0KCS8qKg0KCSAqIFNob3J0ZW4gYSBzdHJpbmcNCgkgKg0KCSAqIEBpbnB1dAlzdHJpbmcgICBUaGUgeW91IHdvdWxkIGxpa2UgdG8gc2hvcnRlbg0KCSAqDQoJICogQHJldHVybnMgc3RyaW5nIG9uIHN1Y2Nlc3MNCgkgKiANCgkgKiBAc2luY2UgIDMuMC45DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzaG9ydGVuKCRzdHJpbmcsICRsZW5ndGggPSA0MCwgJGFkZFRpcCA9IHRydWUpDQoJew0KCQlpZiAoc2VsZjo6Y2hlY2soJHN0cmluZykpDQoJCXsNCgkJCSRpbml0aWFsID0gc3RybGVuKCRzdHJpbmcpOw0KCQkJJHdvcmRzID0gcHJlZ19zcGxpdCgnLyhbXHNcblxyXSspLycsICRzdHJpbmcsIG51bGwsIFBSRUdfU1BMSVRfREVMSU1fQ0FQVFVSRSk7DQoJCQkkd29yZHNfY291bnQgPSBjb3VudCgoYXJyYXkpJHdvcmRzKTsNCg0KCQkJJHdvcmRfbGVuZ3RoID0gMDsNCgkJCSRsYXN0X3dvcmQgPSAwOw0KCQkJZm9yICg7ICRsYXN0X3dvcmQgPCAkd29yZHNfY291bnQ7ICsrJGxhc3Rfd29yZCkNCgkJCXsNCgkJCQkkd29yZF9sZW5ndGggKz0gc3RybGVuKCR3b3Jkc1skbGFzdF93b3JkXSk7DQoJCQkJaWYgKCR3b3JkX2xlbmd0aCA+ICRsZW5ndGgpDQoJCQkJew0KCQkJCQlicmVhazsNCgkJCQl9DQoJCQl9DQoNCgkJCSRuZXdTdHJpbmcJPSBpbXBsb2RlKGFycmF5X3NsaWNlKCR3b3JkcywgMCwgJGxhc3Rfd29yZCkpOw0KCQkJJGZpbmFsCT0gc3RybGVuKCRuZXdTdHJpbmcpOw0KCQkJaWYgKCRpbml0aWFsICE9ICRmaW5hbCAmJiAkYWRkVGlwKQ0KCQkJew0KCQkJCSR0aXRsZSA9IHNlbGY6OnNob3J0ZW4oJHN0cmluZywgNDAwICwgZmFsc2UpOw0KCQkJCXJldHVybiAnPHNwYW4gY2xhc3M9Imhhc1RpcCIgdGl0bGU9IicgLiAkdGl0bGUgLiAnIiBzdHlsZT0iY3Vyc29yOmhlbHAiPicgLiB0cmltKCRuZXdTdHJpbmcpIC4gJy4uLjwvc3Bhbj4nOw0KCQkJfQ0KCQkJZWxzZWlmICgkaW5pdGlhbCAhPSAkZmluYWwgJiYgISRhZGRUaXApDQoJCQl7DQoJCQkJcmV0dXJuIHRyaW0oJG5ld1N0cmluZykgLiAnLi4uJzsNCgkJCX0NCgkJfQ0KCQlyZXR1cm4gJHN0cmluZzsNCgl9DQoNCgkvKioNCgkgKiBNYWtpbmcgc3RyaW5ncyBzYWZlICh2YXJpb3VzIHdheXMpDQoJICoNCgkgKiBAaW5wdXQJc3RyaW5nICAgVGhlIHlvdSB3b3VsZCBsaWtlIHRvIG1ha2Ugc2FmZQ0KCSAqDQoJICogQHJldHVybnMgc3RyaW5nIG9uIHN1Y2Nlc3MNCgkgKiANCgkgKiBAc2luY2UgIDMuMC45DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzYWZlKCRzdHJpbmcsICR0eXBlID0gJ0wnLCAkc3BhY2VyID0gJ18nLCAkcmVwbGFjZU51bWJlcnMgPSB0cnVlLCAka2VlcE9ubHlDaGFyYWN0ZXJzID0gdHJ1ZSkNCgl7DQoJCWlmICgkcmVwbGFjZU51bWJlcnMgPT09IHRydWUpDQoJCXsNCgkJCS8vIHJlbW92ZSBhbGwgbnVtYmVycyBhbmQgcmVwbGFjZSB3aXRoIEVuZ2xpc2ggdGV4dCB2ZXJzaW9uICh3b3JrcyB3ZWxsIG9ubHkgdXAgdG8gbWlsbGlvbnMpDQoJCQkkc3RyaW5nID0gc2VsZjo6bnVtYmVycygkc3RyaW5nKTsNCgkJfQ0KCQkvLyAwbmx5IGNvbnRpbnVlIGlmIHdlIGhhdmUgYSBzdHJpbmcNCgkJaWYgKHNlbGY6OmNoZWNrKCRzdHJpbmcpKQ0KCQl7DQoJCQkvLyBjcmVhdGUgZmlsZSBuYW1lIHdpdGhvdXQgdGhlIGV4dGVuc2lvbiB0aGF0IGlzIHNhZmUNCgkJCWlmICgkdHlwZSA9PT0gJ2ZpbGVuYW1lJykNCgkJCXsNCgkJCQkvLyBtYWtlIHN1cmUgVkRNIGlzIG5vdCBpbiB0aGUgc3RyaW5nDQoJCQkJJHN0cmluZyA9IHN0cl9yZXBsYWNlKCdWRE0nLCAndkRtJywgJHN0cmluZyk7DQoJCQkJLy8gUmVtb3ZlIGFueXRoaW5nIHdoaWNoIGlzbid0IGEgd29yZCwgd2hpdGVzcGFjZSwgbnVtYmVyDQoJCQkJLy8gb3IgYW55IG9mIHRoZSBmb2xsb3dpbmcgY2FyYWN0ZXJzIC1fKCkNCgkJCQkvLyBJZiB5b3UgZG9uJ3QgbmVlZCB0byBoYW5kbGUgbXVsdGktYnl0ZSBjaGFyYWN0ZXJzDQoJCQkJLy8geW91IGNhbiB1c2UgcHJlZ19yZXBsYWNlIHJhdGhlciB0aGFuIG1iX2VyZWdfcmVwbGFjZQ0KCQkJCS8vIFRoYW5rcyBAxYF1a2FzeiBSeXNpYWshDQoJCQkJLy8gJHN0cmluZyA9IG1iX2VyZWdfcmVwbGFjZSgiKFteXHdcc1xkXC1fXChcKV0pIiwgJycsICRzdHJpbmcpOw0KCQkJCSRzdHJpbmcgPSBwcmVnX3JlcGxhY2UoIihbXlx3XHNcZFwtX1woXCldKSIsICcnLCAkc3RyaW5nKTsNCg0KCQkJCS8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzIwMjE3MjkvMTQyOTY3Nw0KCQkJCXJldHVybiBwcmVnX3JlcGxhY2UoJy9ccysvJywgJyAnLCAkc3RyaW5nKTsNCgkJCX0NCgkJCS8vIHJlbW92ZSBhbGwgb3RoZXIgY2hhcmFjdGVycw0KCQkJJHN0cmluZyA9IHRyaW0oJHN0cmluZyk7DQoJCQkkc3RyaW5nID0gcHJlZ19yZXBsYWNlKCcvJy4kc3BhY2VyLicrLycsICcgJywgJHN0cmluZyk7DQoJCQkkc3RyaW5nID0gcHJlZ19yZXBsYWNlKCcvXHMrLycsICcgJywgJHN0cmluZyk7DQoJCQkvLyBUcmFuc2xpdGVyYXRlIHN0cmluZw0KCQkJJHN0cmluZyA9IHNlbGY6OnRyYW5zbGl0ZXJhdGUoJHN0cmluZyk7DQoJCQkvLyByZW1vdmUgYWxsIGFuZCBrZWVwIG9ubHkgY2hhcmFjdGVycw0KCQkJaWYgKCRrZWVwT25seUNoYXJhY3RlcnMpDQoJCQl7DQoJCQkJJHN0cmluZyA9IHByZWdfcmVwbGFjZSgiL1teQS1aYS16IF0vIiwgJycsICRzdHJpbmcpOw0KCQkJfQ0KCQkJLy8ga2VlcCBib3RoIG51bWJlcnMgYW5kIGNoYXJhY3RlcnMNCgkJCWVsc2UNCgkJCXsNCgkJCQkkc3RyaW5nID0gcHJlZ19yZXBsYWNlKCIvW15BLVphLXowLTkgXS8iLCAnJywgJHN0cmluZyk7DQoJCQl9DQoJCQkvLyBzZWxlY3QgZmluYWwgYWRhcHRhdGlvbnMNCgkJCWlmICgkdHlwZSA9PT0gJ0wnIHx8ICR0eXBlID09PSAnc3RydG9sb3dlcicpDQoJCQl7DQoJCQkJLy8gcmVwbGFjZSB3aGl0ZSBzcGFjZSB3aXRoIHVuZGVyc2NvcmUNCgkJCQkkc3RyaW5nID0gcHJlZ19yZXBsYWNlKCcvXHMrLycsICRzcGFjZXIsICRzdHJpbmcpOw0KCQkJCS8vIGRlZmF1bHQgaXMgdG8gcmV0dXJuIGxvd2VyDQoJCQkJcmV0dXJuIHN0cnRvbG93ZXIoJHN0cmluZyk7DQoJCQl9DQoJCQLine truncated
(13, '', 'Some array tricks helper\r\n\r\n@since 3.0.9', '', '', '0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a', '', '', '', '{}', 'CS8qKg0KCSAqIENoZWNrIGlmIGhhdmUgYW4gYXJyYXkgd2l0aCBhIGxlbmd0aA0KCSAqDQoJICogQGlucHV0CWFycmF5ICAgVGhlIGFycmF5IHRvIGNoZWNrDQoJICoNCgkgKiBAcmV0dXJucyBib29sL2ludCAgbnVtYmVyIG9mIGl0ZW1zIGluIGFycmF5IG9uIHN1Y2Nlc3MNCgkgKiANCgkgKiBAc2luY2UgIDMuMC45DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjaGVjaygkYXJyYXksICRyZW1vdmVFbXB0eVN0cmluZyA9IGZhbHNlKQ0KCXsNCgkJaWYgKGlzX2FycmF5KCRhcnJheSkgJiYgKCRuciA9IGNvdW50KChhcnJheSkkYXJyYXkpKSA+IDApDQoJCXsNCgkJCS8vIGFsc28gbWFrZSBzdXJlIHRoZSBlbXB0eSBzdHJpbmdzIGFyZSByZW1vdmVkDQoJCQlpZiAoJHJlbW92ZUVtcHR5U3RyaW5nKQ0KCQkJew0KCQkJCWZvcmVhY2ggKCRhcnJheSBhcyAka2V5ID0+ICRzdHJpbmcpDQoJCQkJew0KCQkJCQlpZiAoZW1wdHkoJHN0cmluZykpDQoJCQkJCXsNCgkJCQkJCXVuc2V0KCRhcnJheVska2V5XSk7DQoJCQkJCX0NCgkJCQl9DQoJCQkJcmV0dXJuIHNlbGY6OmNoZWNrKCRhcnJheSwgZmFsc2UpOw0KCQkJfQ0KCQkJcmV0dXJuICRucjsNCgkJfQ0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KDQoJLyoqDQoJICogTWVyZ2UgYW4gYXJyYXkgb2YgYXJyYXkncw0KCSAqDQoJICogQGlucHV0CWFycmF5ICAgVGhlIGFycmF5cyB5b3Ugd291bGQgbGlrZSB0byBtZXJnZQ0KCSAqDQoJICogQHJldHVybnMgYXJyYXkgb24gc3VjY2Vzcw0KCSAqIA0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1lcmdlKCRhcnJheXMpDQoJew0KCQlpZihzZWxmOjpjaGVjaygkYXJyYXlzKSkNCgkJew0KCQkJJGFycmF5QnVrZXQgPSBhcnJheSgpOw0KCQkJZm9yZWFjaCAoJGFycmF5cyBhcyAkYXJyYXkpDQoJCQl7DQoJCQkJaWYgKHNlbGY6OmNoZWNrKCRhcnJheSkpDQoJCQkJew0KCQkJCQkkYXJyYXlCdWtldCA9IGFycmF5X21lcmdlKCRhcnJheUJ1a2V0LCAkYXJyYXkpOw0KCQkJCX0NCgkJCX0NCgkJCXJldHVybiAkYXJyYXlCdWtldDsNCgkJfQ0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KDQoJLyoqDQoJICogQ2hlY2sgaWYgYXJyYXlzIGludGVyc2VjdA0KCSAqDQoJICogQGlucHV0CWFycmF5ICAgVGhlIGZpcnN0IGFycmF5DQoJICogQGlucHV0CWFycmF5ICAgVGhlIHNlY29uZCBhcnJheQ0KCSAqDQoJICogQHJldHVybnMgYm9vbCAgdHJ1ZSBpZiBpbnRlcnNlY3QgZWxzZSBmYWxzZQ0KCSAqIA0KCSAqIEBzaW5jZSAgMy4xLjENCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGludGVyc2VjdCgkYV9hcnJheSwgJGJfYXJyYXkpDQoJew0KCQkvLyBmbGlwIHRoZSBzZWNvbmQgYXJyYXkNCgkJJGJfYXJyYXkgPSBhcnJheV9mbGlwKCRiX2FycmF5KTsNCg0KCQkvLyBsb29wIHRoZSBmaXJzdCBhcnJheQ0KCQlmb3JlYWNoICgkYV9hcnJheSBhcyAkdikNCgkJew0KCQkJaWYgKGlzc2V0KCRiX2FycmF5WyR2XSkpDQoJCQl7DQoJCQkJcmV0dXJuIHRydWU7DQoJCQl9DQoJCX0NCgkJcmV0dXJuIGZhbHNlOw0KCX0NCg==', '{}', 'ArrayHelper', 'VDM\\Joomla\\Utilities.ArrayHelper', '1.0.0', '{}', 'Utilities Array Helper', 'abstract class', '{}', '', 1, '2022-03-08 22:53:52', '2022-09-20 09:51:40', 17, 8),
(14, '', 'Control the naming of a namespace helper\r\n\r\n@since 3.0.9', '', '', 'ce8cf834-6bac-44fb-941c-861f7e046cc0', '', '', '', '{}', 'CS8qKg0KCSAqIE1ha2luZyBuYW1lc3BhY2Ugc2FmZQ0KCSAqDQoJICogQGlucHV0ICAgIHN0cmluZyAgICRzdHJpbmcgICAgICAgICAgIFRoZSB5b3Ugd291bGQgbGlrZSB0byBtYWtlIHNhZmUNCgkgKiBAaW5wdXQgICAgYm9vbCAgICAgJHJlbW92ZU51bWJlcnMgICAgVGhlIHN3aXRjaCB0byByZW1vdmUgbnVtYmVycw0KCSAqDQoJICogQHJldHVybnMgc3RyaW5nIG9uIHN1Y2Nlc3MNCgkgKiANCgkgKiBAc2luY2UgIDMuMC45DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzYWZlKHN0cmluZyAkc3RyaW5nLCBib29sICRyZW1vdmVOdW1iZXJzID0gdHJ1ZSkNCgl7DQoJCS8vIDBubHkgY29udGludWUgaWYgd2UgaGF2ZSBhIHN0cmluZyB3aXRoIGxlbmd0aA0KCQlpZiAoU3RyaW5nSGVscGVyOjpjaGVjaygkc3RyaW5nKSkNCgkJew0KCQkJLy8gbWFrZSBzdXJlIGl0IGhhcyBub3QgbnVtYmVycw0KCQkJaWYgKCRyZW1vdmVOdW1iZXJzKQ0KCQkJew0KCQkJCSRzdHJpbmcgPSBTdHJpbmdIZWxwZXI6Om51bWJlcnMoJHN0cmluZyk7DQoJCQl9DQoNCgkJCS8vIFRyYW5zbGl0ZXJhdGUgc3RyaW5nIFRPRE86IGxvb2sgYWdhaW4gYXMgdGhpcyBtYWtlcyBpdCBsb3dlcmNhc2UNCgkJCS8vICRzdHJpbmcgPSBTdHJpbmdIZWxwZXI6OnRyYW5zbGl0ZXJhdGUoJHN0cmluZyk7DQoNCgkJCS8vIGZpcnN0IHJlbW92ZSBhbGwgW1xdIGJhY2tzbGFzaGVzDQoJCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoJ1xcJywgJysnLCAkc3RyaW5nKTsNCg0KCQkJLy8gcmVtb3ZlIGFsbCBhbmQga2VlcCBvbmx5IGNoYXJhY3RlcnMgYW5kIFtcXSBiYWNrc2xhc2hlcyBpbnNpZGUgb2YgdGhlIHN0cmluZw0KCQkJaWYgKCRyZW1vdmVOdW1iZXJzKQ0KCQkJew0KCQkJCSRzdHJpbmcgPSB0cmltKCBwcmVnX3JlcGxhY2UoIi9bXkEtWmEtelwrXS8iLCAnJywgJHN0cmluZyksICcrJyk7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJJHN0cmluZyA9IHRyaW0oIHByZWdfcmVwbGFjZSgiL1teQS1aYS16MC05XCtdLyIsICcnLCAkc3RyaW5nKSwgJysnKTsNCgkJCX0NCg0KCQkJLy8gcGxhY2UgdGhlIFtcXSBiYWNrc2xhc2hlcyBiYWNrDQoJCQlyZXR1cm4gdHJpbSggcHJlZ19yZXBsYWNlKCIvXCsrLyIsICdcXCcsICRzdHJpbmcpKTsNCgkJfQ0KDQoJCS8vIG5vdCBhIHN0cmluZw0KCQlyZXR1cm4gJyc7DQoJfQ0K', '{}', 'NamespaceHelper', 'VDM\\Joomla\\Utilities.String.NamespaceHelper', '1.0.0', '{}', 'String Namespace Helper', 'abstract class', '{\"use_selection0\":{\"use\":\"1f28cb53-60d9-4db1-b517-3c7dc6b429ef\",\"as\":\"default\"}}', '', 1, '2022-03-08 23:27:57', '2022-12-26 09:56:37', 18, 5),
(15, 1, 'Control the naming of a field type\r\n\r\n@since 3.0.9', '', '', 'a8935cbe-7701-40dc-bfd5-675f2d600954', 'dXNlIEpvb21sYVxDTVNcQ29tcG9uZW50XENvbXBvbmVudEhlbHBlcjs=', '', '', '{}', 'CS8qKg0KCSAqIFRoZSBmaWVsZCBidWlsZGVyIHN3aXRjaA0KCSAqIA0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKi8NCglwcm90ZWN0ZWQgc3RhdGljICRidWlsZGVyID0gZmFsc2U7DQoNCgkvKioNCgkgKiBNYWtpbmcgZmllbGQgdHlwZSBuYW1lIHNhZmUNCgkgKg0KCSAqIEBwYXJhbSAgIFN0cmluZyAgICAgICRzdHJpbmcgICAgIFRoZSB5b3Ugd291bGQgbGlrZSB0byBtYWtlIHNhZmUNCgkgKiBAcGFyYW0gICBTdHJpbmcgICAgICAkb3B0aW9uICAgIFRoZSBvcHRpb24gZm9yIHRoZSBjb21wb25lbnQuDQoJICoNCgkgKiBAcmV0dXJucyBzdHJpbmcgb24gc3VjY2Vzcw0KCSAqIA0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNhZmUoJHN0cmluZywgJG9wdGlvbiA9IG51bGwpDQoJew0KCQkvLyBnZXQgZ2xvYmFsIHZhbHVlDQoJCWlmIChzZWxmOjokYnVpbGRlciA9PT0gZmFsc2UpDQoJCXsNCgkJCXNlbGY6OiRidWlsZGVyID0gSGVscGVyOjpnZXRQYXJhbXMoJG9wdGlvbiktPmdldCgndHlwZV9uYW1lX2J1aWxkZXInLCAxKTsNCgkJfQ0KDQoJCS8vIHVzZSB0aGUgbmV3IGNvbnZlbnRpb24NCgkJaWYgKDIgPT0gc2VsZjo6JGJ1aWxkZXIpDQoJCXsNCgkJCS8vIDBubHkgY29udGludWUgaWYgd2UgaGF2ZSBhIHN0cmluZw0KCQkJaWYgKFN0cmluZ0hlbHBlcjo6Y2hlY2soJHN0cmluZykpDQoJCQl7DQoJCQkJLy8gY2hlY2sgdGhhdCB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzIG5vdCBhIG51bWJlcg0KCQkJCWlmIChpc19udW1lcmljKHN1YnN0cigkc3RyaW5nLCAwLCAxKSkpDQoJCQkJew0KCQkJCQkkc3RyaW5nID0gU3RyaW5nSGVscGVyOjpudW1iZXJzKCRzdHJpbmcpOw0KCQkJCX0NCg0KCQkJCS8vIFRyYW5zbGl0ZXJhdGUgc3RyaW5nDQoJCQkJJHN0cmluZyA9IFN0cmluZ0hlbHBlcjo6dHJhbnNsaXRlcmF0ZSgkc3RyaW5nKTsNCg0KCQkJCS8vIHJlbW92ZSBhbGwgYW5kIGtlZXAgb25seSBjaGFyYWN0ZXJzIGFuZCBudW1iZXJzIGFuZCBwb2ludCAoVE9ETyBqdXN0IG9uZSBwb2ludCkNCgkJCQkkc3RyaW5nID0gdHJpbShwcmVnX3JlcGxhY2UoIi9bXkEtWmEtejAtOVwuXS8iLCAnJywgJHN0cmluZykpOw0KDQoJCQkJLy8gYmVzdCBpcyB0byByZXR1cm4gbG93ZXIgKGZvciBhbGwgc3RyaW5nIGVxdWFsaXR5IGluIGNvbXBpbGVyKQ0KCQkJCXJldHVybiBzdHJ0b2xvd2VyKCRzdHJpbmcpOw0KCQkJfQ0KCQkJLy8gbm90IGEgc3RyaW5nDQoJCQlyZXR1cm4gJyc7DQoJCX0NCg0KCQkvLyB1c2UgdGhlIGRlZmF1bHQgKG9yaWdpbmFsIGJlaGF2aW91ci9jb252ZW50aW9uKQ0KCQlyZXR1cm4gU3RyaW5nSGVscGVyOjpzYWZlKCRzdHJpbmcpOw0KCX0NCg==', '{}', 'TypeHelper', 'VDM\\Joomla\\Utilities.String.TypeHelper', '1.0.0', '{}', 'String Type Helper', 'abstract class', '{\"use_selection0\":{\"use\":\"1f28cb53-60d9-4db1-b517-3c7dc6b429ef\",\"as\":\"default\"},\"use_selection1\":{\"use\":\"640b5352-fb09-425f-a26e-cd44eda03f15\",\"as\":\"default\"}}', '', 1, '2022-03-08 23:33:09', '2022-09-20 10:10:03', 15, 5),
(16, '', 'Control the naming of a class and function\r\n\r\n@since 3.0.9', '', '', '30c5b4c2-f75f-4d15-869a-f8bfedd87358', '', '', '', '{}', 'CS8qKg0KCSAqIE1ha2luZyBjbGFzcyBvciBmdW5jdGlvbiBuYW1lIHNhZmUNCgkgKg0KCSAqIEBpbnB1dAlzdHJpbmcgICAgICAgVGhlIG5hbWUgeW91IHdvdWxkIGxpa2UgdG8gbWFrZSBzYWZlDQoJICoNCgkgKiBAcmV0dXJucyBzdHJpbmcgb24gc3VjY2Vzcw0KCSAqIA0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNhZmUoJG5hbWUpDQoJew0KCQkvLyByZW1vdmUgbnVtYmVycyBpZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzIGEgbnVtYmVyDQoJCWlmIChpc19udW1lcmljKHN1YnN0cigkbmFtZSwgMCwgMSkpKQ0KCQl7DQoJCQkkbmFtZSA9IFN0cmluZ0hlbHBlcjo6bnVtYmVycygkbmFtZSk7DQoJCX0NCg0KCQkvLyByZW1vdmUgYWxsIHNwYWNlcyBhbmQgc3RyYW5nZSBjaGFyYWN0ZXJzDQoJCXJldHVybiB0cmltKHByZWdfcmVwbGFjZSgiL1teQS1aYS16MC05Xy1dLyIsICcnLCAkbmFtZSkpOw0KCX0NCg==', '{}', 'ClassfunctionHelper', 'VDM\\Joomla\\Utilities.String.ClassfunctionHelper', '1.0.0', '{}', 'String Classfunction Helper', 'abstract class', '{\"use_selection0\":{\"use\":\"1f28cb53-60d9-4db1-b517-3c7dc6b429ef\",\"as\":\"default\"}}', '', 1, '2022-03-08 23:43:10', '2022-09-20 10:10:07', 15, 5),
(10, 1, 'Control the naming of a field\r\n\r\n@since 3.0.9', '', '', '9ef0eb24-aae4-4f5a-99af-d724db44808f', 'dXNlIEpvb21sYVxDTVNcQ29tcG9uZW50XENvbXBvbmVudEhlbHBlcjs=', '', '', '{}', 'CS8qKg0KCSAqIFRoZSBmaWVsZCBidWlsZGVyIHN3aXRjaA0KCSAqIA0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKi8NCglwcm90ZWN0ZWQgc3RhdGljICRidWlsZGVyID0gZmFsc2U7DQoNCgkvKioNCgkgKiBNYWtpbmcgZmllbGQgbmFtZXMgc2FmZQ0KCSAqDQoJICogQGlucHV0CXN0cmluZyAgICAgICBUaGUgc3RyaW5nIHlvdSB3b3VsZCBsaWtlIHRvIG1ha2Ugc2FmZQ0KCSAqIEBpbnB1dAlib29sZWFuICAgICAgVGhlIHN3aXRjaCB0byByZXR1cm4gYW4gQUxMIFVQUEVSIENBU0Ugc3RyaW5nDQoJICogQGlucHV0CXN0cmluZyAgICAgICBUaGUgc3RyaW5nIHRvIHVzZSBpbiB3aGl0ZSBzcGFjZQ0KCSAqDQoJICogQHJldHVybnMgc3RyaW5nIG9uIHN1Y2Nlc3MNCgkgKiANCgkgKiBAc2luY2UgIDMuMC45DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzYWZlKCRzdHJpbmcsICRhbGxjYXAgPSBmYWxzZSwgJHNwYWNlciA9ICdfJykNCgl7DQoJCS8vIGdldCBnbG9iYWwgdmFsdWUNCgkJaWYgKHNlbGY6OiRidWlsZGVyID09PSBmYWxzZSkNCgkJew0KCQkJc2VsZjo6JGJ1aWxkZXIgPSBIZWxwZXI6OmdldFBhcmFtcygpLT5nZXQoJ2ZpZWxkX25hbWVfYnVpbGRlcicsIDEpOw0KCQl9DQoNCgkJLy8gdXNlIHRoZSBuZXcgY29udmVudGlvbg0KCQlpZiAoMiA9PSBzZWxmOjokYnVpbGRlcikNCgkJew0KCQkJLy8gMG5seSBjb250aW51ZSBpZiB3ZSBoYXZlIGEgc3RyaW5nDQoJCQlpZiAoU3RyaW5nSGVscGVyOjpjaGVjaygkc3RyaW5nKSkNCgkJCXsNCgkJCQkvLyBjaGVjayB0aGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIgaXMgbm90IGEgbnVtYmVyDQoJCQkJaWYgKGlzX251bWVyaWMoc3Vic3RyKChzdHJpbmcpJHN0cmluZywgMCwgMSkpKQ0KCQkJCXsNCgkJCQkJJHN0cmluZyA9IFN0cmluZ0hlbHBlcjo6bnVtYmVycygkc3RyaW5nKTsNCgkJCQl9DQoNCgkJCQkvLyByZW1vdmUgYWxsIG90aGVyIHN0cmFuZ2UgY2hhcmFjdGVycw0KCQkJCSRzdHJpbmcgPSB0cmltKChzdHJpbmcpICRzdHJpbmcpOw0KCQkJCSRzdHJpbmcgPSBwcmVnX3JlcGxhY2UoJy8nLiRzcGFjZXIuJysvJywgJyAnLCAkc3RyaW5nKTsNCgkJCQkkc3RyaW5nID0gcHJlZ19yZXBsYWNlKCcvXHMrLycsICcgJywgJHN0cmluZyk7DQoNCgkJCQkvLyBUcmFuc2xpdGVyYXRlIHN0cmluZw0KCQkJCSRzdHJpbmcgPSBTdHJpbmdIZWxwZXI6OnRyYW5zbGl0ZXJhdGUoJHN0cmluZyk7DQoNCgkJCQkvLyByZW1vdmUgYWxsIGFuZCBrZWVwIG9ubHkgY2hhcmFjdGVycyBhbmQgbnVtYmVycw0KCQkJCSRzdHJpbmcgPSBwcmVnX3JlcGxhY2UoIi9bXkEtWmEtejAtOSBdLyIsICcnLCAoc3RyaW5nKSAkc3RyaW5nKTsNCg0KCQkJCS8vIHJlcGxhY2Ugd2hpdGUgc3BhY2Ugd2l0aCB1bmRlcnNjb3JlIChTQUZFU1QgT1BUSU9OKQ0KCQkJCSRzdHJpbmcgPSBwcmVnX3JlcGxhY2UoJy9ccysvJywgKHN0cmluZykgJHNwYWNlciwgJHN0cmluZyk7DQoNCgkJCQkvLyByZXR1cm4gYWxsIGNhcHMNCgkJCQlpZiAoJGFsbGNhcCkNCgkJCQl7DQoJCQkJCXJldHVybiBzdHJ0b3VwcGVyKCRzdHJpbmcpOw0KCQkJCX0NCg0KCQkJCS8vIGRlZmF1bHQgaXMgdG8gcmV0dXJuIGxvd2VyDQoJCQkJcmV0dXJuIHN0cnRvbG93ZXIoJHN0cmluZyk7DQoJCQl9DQoJCQkvLyBub3QgYSBzdHJpbmcNCgkJCXJldHVybiAnJzsNCgkJfQ0KDQoJCS8vIHJldHVybiBhbGwgY2Fwcw0KCQlpZiAoJGFsbGNhcCkNCgkJew0KCQkJcmV0dXJuIFN0cmluZ0hlbHBlcjo6c2FmZSgkc3RyaW5nLCAnVScpOw0KCQl9DQoNCgkJLy8gdXNlIHRoZSBkZWZhdWx0IChvcmlnaW5hbCBiZWhhdmlvci9jb252ZW50aW9uKQ0KCQlyZXR1cm4gU3RyaW5nSGVscGVyOjpzYWZlKCRzdHJpbmcpOw0KCX0NCg==', '{}', 'FieldHelper', 'VDM\\Joomla\\Utilities.String.FieldHelper', '1.0.0', '{}', 'String Field Helper', 'abstract class', '{\"use_selection0\":{\"use\":\"1f28cb53-60d9-4db1-b517-3c7dc6b429ef\",\"as\":\"default\"},\"use_selection1\":{\"use\":\"640b5352-fb09-425f-a26e-cd44eda03f15\",\"as\":\"default\"}}', '', 1, '2022-03-08 20:46:56', '2023-01-14 18:06:18', 22, 5),
(11, '', 'The json checker\r\n\r\n@since 3.0.9', '', '', '4b225c51-d293-48e4-b3f6-5136cf5c3f18', '', '', '', '{\"load_selection0\":{\"load\":\"1f28cb53-60d9-4db1-b517-3c7dc6b429ef\"},\"load_selection1\":{\"load\":\"0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a\"},\"load_selection2\":{\"load\":\"db87c339-5bb6-4291-a7ef-2c48ea1b06bc\"}}', 'CS8qKg0KCSAqIENoZWNrIGlmIHlvdSBoYXZlIGEganNvbiBzdHJpbmcNCgkgKg0KCSAqIEBpbnB1dCAgICBzdHJpbmcgICRzdHJpbmcgIFRoZSBqc29uIHN0cmluZyB0byBjaGVjaw0KCSAqDQoJICogQHJldHVybnMgYm9vbCB0cnVlIG9uIHN1Y2Nlc3MNCgkgKiANCgkgKiBAc2luY2UgIDMuMC45DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjaGVjaygkc3RyaW5nKTogYm9vbA0KCXsNCgkJaWYgKFN0cmluZ0hlbHBlcjo6Y2hlY2soJHN0cmluZykpDQoJCXsNCgkJCWpzb25fZGVjb2RlKChzdHJpbmcpICRzdHJpbmcpOw0KCQkJcmV0dXJuIChqc29uX2xhc3RfZXJyb3IoKSA9PT0gSlNPTl9FUlJPUl9OT05FKTsNCgkJfQ0KDQoJCXJldHVybiBmYWxzZTsNCgl9DQoNCgkvKioNCgkgKiBDb252ZXJ0IGEganNvbiBvYmplY3QgdG8gYSBzdHJpbmcNCgkgKg0KCSAqIEBpbnB1dCAgICBzdHJpbmcgICR2YWx1ZSAgVGhlIGpzb24gc3RyaW5nIHRvIGNvbnZlcnQNCgkgKg0KCSAqIEByZXR1cm5zIGEgc3RyaW5nDQoJICogDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc3RyaW5nKCR2YWx1ZSwgJHNlcGFyYXRvciA9ICIsICIsICR0YWJsZSA9IG51bGwsICRpZCA9ICdpZCcsICRuYW1lID0gJ25hbWUnKQ0KCXsNCgkJLy8gZG8gc29tZSB0YWJsZSBmb290IHdvcmsNCgkJJGV4dGVybmFsID0gZmFsc2U7DQoJCWlmIChpc19zdHJpbmcoJHRhYmxlKSAmJiBzdHJwb3MoKHN0cmluZykgJHRhYmxlLCAnI19fJykgIT09IGZhbHNlKQ0KCQl7DQoJCQkkZXh0ZXJuYWwgPSB0cnVlOw0KCQkJJHRhYmxlID0gc3RyX3JlcGxhY2UoJyNfXycsICcnLCAoc3RyaW5nKSAkdGFibGUpOw0KCQl9DQoNCgkJLy8gY2hlY2sgaWYgc3RyaW5nIGlzIEpTT04NCgkJJHJlc3VsdCA9IGpzb25fZGVjb2RlKChzdHJpbmcpICR2YWx1ZSwgdHJ1ZSk7DQoJCWlmIChqc29uX2xhc3RfZXJyb3IoKSA9PT0gSlNPTl9FUlJPUl9OT05FKQ0KCQl7DQoJCQkvLyBpcyBKU09ODQoJCQlpZiAoQXJyYXlIZWxwZXI6OmNoZWNrKCRyZXN1bHQpKQ0KCQkJew0KCQkJCWlmIChTdHJpbmdIZWxwZXI6OmNoZWNrKCR0YWJsZSkpDQoJCQkJew0KCQkJCQkkbmFtZXMgPSBhcnJheSgpOw0KCQkJCQlmb3JlYWNoICgkcmVzdWx0IGFzICR2YWwpDQoJCQkJCXsNCgkJCQkJCWlmICgkZXh0ZXJuYWwpDQoJCQkJCQl7DQoJCQkJCQkJaWYgKCRfbmFtZSA9IEdldEhlbHBlcjo6dmFyKG51bGwsICR2YWwsICRpZCwgJG5hbWUsICc9JywgJHRhYmxlKSkNCgkJCQkJCQl7DQoJCQkJCQkJCSRuYW1lc1tdID0gJF9uYW1lOw0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJCWVsc2UNCgkJCQkJCXsNCgkJCQkJCQlpZiAoJF9uYW1lID0gR2V0SGVscGVyOjp2YXIoJHRhYmxlLCAkdmFsLCAkaWQsICRuYW1lKSkNCgkJCQkJCQl7DQoJCQkJCQkJCSRuYW1lc1tdID0gJF9uYW1lOw0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCQlpZiAoQXJyYXlIZWxwZXI6OmNoZWNrKCRuYW1lcykpDQoJCQkJCXsNCgkJCQkJCXJldHVybiAoc3RyaW5nKSBpbXBsb2RlKCRzZXBhcmF0b3IsICRuYW1lcyk7DQoJCQkJCX0JDQoJCQkJfQ0KCQkJCXJldHVybiAoc3RyaW5nKSBpbXBsb2RlKCRzZXBhcmF0b3IsICRyZXN1bHQpOw0KCQkJfQ0KCQkJcmV0dXJuIChzdHJpbmcpIGpzb25fZGVjb2RlKChzdHJpbmcpICR2YWx1ZSk7DQoJCX0NCgkJcmV0dXJuICR2YWx1ZTsNCgl9DQo=', '{}', 'JsonHelper', 'VDM\\Joomla\\Utilities.JsonHelper', '1.0.0', '{}', 'Utilities Json Helper', 'abstract class', '{}', '', 1, '2022-03-08 21:03:54', '2023-01-14 18:11:18', 22, 6),
(12, 1, 'Some string tricks\r\n\r\n@since 3.0.9', '', '', '1f28cb53-60d9-4db1-b517-3c7dc6b429ef', 'dXNlIEpvb21sYVxDTVNcRmlsdGVyXElucHV0RmlsdGVyOw0KdXNlIEpvb21sYVxDTVNcTGFuZ3VhZ2VcTGFuZ3VhZ2U7', '', '', '{\"load_selection0\":{\"load\":\"0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a\"}}', 'CS8qKg0KCSAqIFRoZSBNYWluIEFjdGl2ZSBMYW5ndWFnZQ0KCSAqIA0KCSAqIEB2YXIgICAgICBzdHJpbmcNCgkgKiANCgkgKiBAc2luY2UgIDMuMC45DQoJICovDQoJcHVibGljIHN0YXRpYyAkbGFuZ1RhZzsNCg0KCS8qKg0KCSAqIENoZWNrIGlmIHdlIGhhdmUgYSBzdHJpbmcgd2l0aCBhIGxlbmd0aA0KCSAqDQoJICogQGlucHV0ICAgIHN0cmluZyAgJHN0cmluZyBUaGUgc3RyaW5nIHRvIGNoZWNrDQoJICoNCgkgKiBAcmV0dXJucyBib29sIHRydWUgb24gc3VjY2Vzcw0KCSAqIA0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNoZWNrKCRzdHJpbmcpOiBib29sDQoJew0KCQlyZXR1cm4gaXNfc3RyaW5nKCRzdHJpbmcpICYmIHN0cmxlbigkc3RyaW5nKSA+IDA7DQoJfQ0KDQoJLyoqDQoJICogU2hvcnRlbiBhIHN0cmluZw0KCSAqDQoJICogQGlucHV0CXN0cmluZyAgIFRoZSB5b3Ugd291bGQgbGlrZSB0byBzaG9ydGVuDQoJICoNCgkgKiBAcmV0dXJucyBzdHJpbmcgb24gc3VjY2Vzcw0KCSAqIA0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNob3J0ZW4oJHN0cmluZywgJGxlbmd0aCA9IDQwLCAkYWRkVGlwID0gdHJ1ZSkNCgl7DQoJCWlmIChzZWxmOjpjaGVjaygkc3RyaW5nKSkNCgkJew0KCQkJJGluaXRpYWwgPSBzdHJsZW4oKHN0cmluZykgJHN0cmluZyk7DQoJCQkkd29yZHMgPSBwcmVnX3NwbGl0KCcvKFtcc1xuXHJdKykvJywgKHN0cmluZykgJHN0cmluZywgbnVsbCwgUFJFR19TUExJVF9ERUxJTV9DQVBUVVJFKTsNCgkJCSR3b3Jkc19jb3VudCA9IGNvdW50KChhcnJheSkkd29yZHMpOw0KDQoJCQkkd29yZF9sZW5ndGggPSAwOw0KCQkJJGxhc3Rfd29yZCA9IDA7DQoJCQlmb3IgKDsgJGxhc3Rfd29yZCA8ICR3b3Jkc19jb3VudDsgKyskbGFzdF93b3JkKQ0KCQkJew0KCQkJCSR3b3JkX2xlbmd0aCArPSBzdHJsZW4oJHdvcmRzWyRsYXN0X3dvcmRdKTsNCgkJCQlpZiAoJHdvcmRfbGVuZ3RoID4gJGxlbmd0aCkNCgkJCQl7DQoJCQkJCWJyZWFrOw0KCQkJCX0NCgkJCX0NCg0KCQkJJG5ld1N0cmluZwk9IGltcGxvZGUoYXJyYXlfc2xpY2UoJHdvcmRzLCAwLCAkbGFzdF93b3JkKSk7DQoJCQkkZmluYWwJPSBzdHJsZW4oJG5ld1N0cmluZyk7DQoJCQlpZiAoJGluaXRpYWwgIT09ICRmaW5hbCAmJiAkYWRkVGlwKQ0KCQkJew0KCQkJCSR0aXRsZSA9IHNlbGY6OnNob3J0ZW4oJHN0cmluZywgNDAwICwgZmFsc2UpOw0KCQkJCXJldHVybiAnPHNwYW4gY2xhc3M9Imhhc1RpcCIgdGl0bGU9IicgLiAkdGl0bGUgLiAnIiBzdHlsZT0iY3Vyc29yOmhlbHAiPicgLiB0cmltKCRuZXdTdHJpbmcpIC4gJy4uLjwvc3Bhbj4nOw0KCQkJfQ0KCQkJZWxzZWlmICgkaW5pdGlhbCAhPT0gJGZpbmFsICYmICEkYWRkVGlwKQ0KCQkJew0KCQkJCXJldHVybiB0cmltKCRuZXdTdHJpbmcpIC4gJy4uLic7DQoJCQl9DQoJCX0NCgkJcmV0dXJuICRzdHJpbmc7DQoJfQ0KDQoJLyoqDQoJICogTWFraW5nIHN0cmluZ3Mgc2FmZSAodmFyaW91cyB3YXlzKQ0KCSAqDQoJICogQGlucHV0CXN0cmluZyAgIFRoZSB5b3Ugd291bGQgbGlrZSB0byBtYWtlIHNhZmUNCgkgKg0KCSAqIEByZXR1cm5zIHN0cmluZyBvbiBzdWNjZXNzDQoJICogDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2FmZSgkc3RyaW5nLCAkdHlwZSA9ICdMJywgJHNwYWNlciA9ICdfJywgJHJlcGxhY2VOdW1iZXJzID0gdHJ1ZSwgJGtlZXBPbmx5Q2hhcmFjdGVycyA9IHRydWUpDQoJew0KCQlpZiAoJHJlcGxhY2VOdW1iZXJzID09PSB0cnVlKQ0KCQl7DQoJCQkvLyByZW1vdmUgYWxsIG51bWJlcnMgYW5kIHJlcGxhY2Ugd2l0aCBFbmdsaXNoIHRleHQgdmVyc2lvbiAod29ya3Mgd2VsbCBvbmx5IHVwIHRvIG1pbGxpb25zKQ0KCQkJJHN0cmluZyA9IHNlbGY6Om51bWJlcnMoJHN0cmluZyk7DQoJCX0NCgkJLy8gMG5seSBjb250aW51ZSBpZiB3ZSBoYXZlIGEgc3RyaW5nDQoJCWlmIChzZWxmOjpjaGVjaygkc3RyaW5nKSkNCgkJew0KCQkJLy8gY3JlYXRlIGZpbGUgbmFtZSB3aXRob3V0IHRoZSBleHRlbnNpb24gdGhhdCBpcyBzYWZlDQoJCQlpZiAoJHR5cGUgPT09ICdmaWxlbmFtZScpDQoJCQl7DQoJCQkJLy8gbWFrZSBzdXJlIFZETSBpcyBub3QgaW4gdGhlIHN0cmluZw0KCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgnVkRNJywgJ3ZEbScsIChzdHJpbmcpICRzdHJpbmcpOw0KCQkJCS8vIFJlbW92ZSBhbnl0aGluZyB3aGljaCBpc24ndCBhIHdvcmQsIHdoaXRlc3BhY2UsIG51bWJlcg0KCQkJCS8vIG9yIGFueSBvZiB0aGUgZm9sbG93aW5nIGNhcmFjdGVycyAtXygpDQoJCQkJLy8gSWYgeW91IGRvbid0IG5lZWQgdG8gaGFuZGxlIG11bHRpLWJ5dGUgY2hhcmFjdGVycw0KCQkJCS8vIHlvdSBjYW4gdXNlIHByZWdfcmVwbGFjZSByYXRoZXIgdGhhbiBtYl9lcmVnX3JlcGxhY2UNCgkJCQkvLyBUaGFua3MgQMWBdWthc3ogUnlzaWFrIQ0KCQkJCS8vICRzdHJpbmcgPSBtYl9lcmVnX3JlcGxhY2UoIihbXlx3XHNcZFwtX1woXCldKSIsICcnLCAkc3RyaW5nKTsNCgkJCQkkc3RyaW5nID0gcHJlZ19yZXBsYWNlKCIoW15cd1xzXGRcLV9cKFwpXSkiLCAnJywgJHN0cmluZyk7DQoNCgkJCQkvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMDIxNzI5LzE0Mjk2NzcNCgkJCQlyZXR1cm4gcHJlZ19yZXBsYWNlKCcvXHMrLycsICcgJywgJHN0cmluZyk7DQoJCQl9DQoJCQkvLyByZW1vdmUgYWxsIG90aGVyIGNoYXJhY3RlcnMNCgkJCSRzdHJpbmcgPSB0cmltKChzdHJpbmcpICRzdHJpbmcpOw0KCQkJJHN0cmluZyA9IHByZWdfcmVwbGFjZSgnLycuJHNwYWNlci4nKy8nLCAnICcsICRzdHJpbmcpOw0KCQkJJHN0cmluZyA9IHByZWdfcmVwbGFjZSgnL1xzKy8nLCAnICcsICRzdHJpbmcpOw0KCQkJLy8gVHJhbnNsaXRlcmF0ZSBzdHJpbmcNCgkJCSRzdHJpbmcgPSBzZWxmOjp0cmFuc2xpdGVyYXRlKCRzdHJpbmcpOw0KCQkJLy8gcmVtb3ZlIGFsbCBhbmQga2VlcCBvbmx5IGNoYXJhY3RlcnMNCgkJCWlmICgka2VlcE9ubHlDaGFyYWN0ZXJzKQ0KCQkJew0KCQkJCSRzdHJpbmcgPSBwcmVnX3JlcGxhY2UoIi9bXkEtWmEteiBdLyIsICcnLCAkc3RyaW5nKTsNCgkJCX0NCgkJCS8vIGtlZXAgYm90aCBudW1iZXJzIGFuZCBjaGFyYWN0ZXJzDQoJCQllbHNlDQoJCQl7DQoJCQkJJHN0cmluZyA9IHByZWdfcmVwbGFjZSgiL1teQS1aYS16MC05IF0vIiwgJycsICRzdHJpbmcpOw0KCQkJfQ0KCQkJLy8gc2VsZWN0IGZpbmFsIGFkYXB0YXRpb25zDQoJCQlpZiAoJHR5cGUgPT09ICdMJyB8fCAkdHlwZSA9PT0gJ3N0cnRvbG93ZXInKQ0KCQkJew0KCQkJCS8vIHJlcGxhY2Ugd2hpdGUgc3BhY2Ugd2l0aCB1bmRlcnNjb3JlDQoJCQkJJHN0cmluZyA9IHByZWdfcmVwbGFjZSgnL1xzKy8nLCAoc3RyaW5nKSAkc3BhY2VyLCAkc3RyaW5nKTsNCgkJCQkvLyBkZWZhdWx0IGlzIHRvIHJldHVybiBsb3dlcg0KCQkJCXJldHVybiBzdHJ0b2xvd2VyKCRzdHJpbmcpOw0KCQkJfQLine truncated
(13, '', 'Some array tricks helper\r\n\r\n@since 3.0.9', '', '', '0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a', '', '', '', '{}', 'CS8qKg0KCSAqIENoZWNrIGlmIGhhdmUgYW4gYXJyYXkgd2l0aCBhIGxlbmd0aA0KCSAqDQoJICogQGlucHV0CWFycmF5ICAgVGhlIGFycmF5IHRvIGNoZWNrDQoJICoNCgkgKiBAcmV0dXJucyBib29sL2ludCAgbnVtYmVyIG9mIGl0ZW1zIGluIGFycmF5IG9uIHN1Y2Nlc3MNCgkgKiANCgkgKiBAc2luY2UgIDMuMC45DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjaGVjaygkYXJyYXksICRyZW1vdmVFbXB0eVN0cmluZyA9IGZhbHNlKQ0KCXsNCgkJaWYgKGlzX2FycmF5KCRhcnJheSkgJiYgKCRuciA9IGNvdW50KChhcnJheSkkYXJyYXkpKSA+IDApDQoJCXsNCgkJCS8vIGFsc28gbWFrZSBzdXJlIHRoZSBlbXB0eSBzdHJpbmdzIGFyZSByZW1vdmVkDQoJCQlpZiAoJHJlbW92ZUVtcHR5U3RyaW5nKQ0KCQkJew0KCQkJCWZvcmVhY2ggKCRhcnJheSBhcyAka2V5ID0+ICRzdHJpbmcpDQoJCQkJew0KCQkJCQlpZiAoZW1wdHkoJHN0cmluZykpDQoJCQkJCXsNCgkJCQkJCXVuc2V0KCRhcnJheVska2V5XSk7DQoJCQkJCX0NCgkJCQl9DQoJCQkJcmV0dXJuIHNlbGY6OmNoZWNrKCRhcnJheSwgZmFsc2UpOw0KCQkJfQ0KCQkJcmV0dXJuICRucjsNCgkJfQ0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KDQoJLyoqDQoJICogTWVyZ2UgYW4gYXJyYXkgb2YgYXJyYXkncw0KCSAqDQoJICogQGlucHV0CWFycmF5ICAgVGhlIGFycmF5cyB5b3Ugd291bGQgbGlrZSB0byBtZXJnZQ0KCSAqDQoJICogQHJldHVybnMgYXJyYXkgb24gc3VjY2Vzcw0KCSAqIA0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1lcmdlKCRhcnJheXMpDQoJew0KCQlpZihzZWxmOjpjaGVjaygkYXJyYXlzKSkNCgkJew0KCQkJJGFycmF5QnVrZXQgPSBhcnJheSgpOw0KCQkJZm9yZWFjaCAoJGFycmF5cyBhcyAkYXJyYXkpDQoJCQl7DQoJCQkJaWYgKHNlbGY6OmNoZWNrKCRhcnJheSkpDQoJCQkJew0KCQkJCQkkYXJyYXlCdWtldCA9IGFycmF5X21lcmdlKCRhcnJheUJ1a2V0LCAkYXJyYXkpOw0KCQkJCX0NCgkJCX0NCgkJCXJldHVybiAkYXJyYXlCdWtldDsNCgkJfQ0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KDQoJLyoqDQoJICogQ2hlY2sgaWYgYXJyYXlzIGludGVyc2VjdA0KCSAqDQoJICogQGlucHV0CWFycmF5ICAgVGhlIGZpcnN0IGFycmF5DQoJICogQGlucHV0CWFycmF5ICAgVGhlIHNlY29uZCBhcnJheQ0KCSAqDQoJICogQHJldHVybnMgYm9vbCAgdHJ1ZSBpZiBpbnRlcnNlY3QgZWxzZSBmYWxzZQ0KCSAqIA0KCSAqIEBzaW5jZSAgMy4xLjENCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGludGVyc2VjdCgkYV9hcnJheSwgJGJfYXJyYXkpOiBib29sDQoJew0KCQkvLyBmbGlwIHRoZSBzZWNvbmQgYXJyYXkNCgkJJGJfYXJyYXkgPSBhcnJheV9mbGlwKCRiX2FycmF5KTsNCg0KCQkvLyBsb29wIHRoZSBmaXJzdCBhcnJheQ0KCQlmb3JlYWNoICgkYV9hcnJheSBhcyAkdikNCgkJew0KCQkJaWYgKGlzc2V0KCRiX2FycmF5WyR2XSkpDQoJCQl7DQoJCQkJcmV0dXJuIHRydWU7DQoJCQl9DQoJCX0NCgkJcmV0dXJuIGZhbHNlOw0KCX0NCg==', '{}', 'ArrayHelper', 'VDM\\Joomla\\Utilities.ArrayHelper', '1.0.0', '{}', 'Utilities Array Helper', 'abstract class', '{}', '', 1, '2022-03-08 22:53:52', '2023-01-14 21:12:28', 18, 8),
(14, '', 'Control the naming of a namespace helper\r\n\r\n@since 3.0.9', '', '', 'ce8cf834-6bac-44fb-941c-861f7e046cc0', '', '', '', '{}', 'CS8qKg0KCSAqIE1ha2luZyBuYW1lc3BhY2Ugc2FmZQ0KCSAqDQoJICogQGlucHV0ICAgIHN0cmluZyAgICRzdHJpbmcgICAgICAgICAgIFRoZSB5b3Ugd291bGQgbGlrZSB0byBtYWtlIHNhZmUNCgkgKiBAaW5wdXQgICAgYm9vbCAgICAgJHJlbW92ZU51bWJlcnMgICAgVGhlIHN3aXRjaCB0byByZW1vdmUgbnVtYmVycw0KCSAqDQoJICogQHJldHVybnMgc3RyaW5nIG9uIHN1Y2Nlc3MNCgkgKiANCgkgKiBAc2luY2UgIDMuMC45DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzYWZlKHN0cmluZyAkc3RyaW5nLCBib29sICRyZW1vdmVOdW1iZXJzID0gdHJ1ZSk6IHN0cmluZw0KCXsNCgkJLy8gMG5seSBjb250aW51ZSBpZiB3ZSBoYXZlIGEgc3RyaW5nIHdpdGggbGVuZ3RoDQoJCWlmIChTdHJpbmdIZWxwZXI6OmNoZWNrKCRzdHJpbmcpKQ0KCQl7DQoJCQkvLyBtYWtlIHN1cmUgaXQgaGFzIG5vdCBudW1iZXJzDQoJCQlpZiAoJHJlbW92ZU51bWJlcnMpDQoJCQl7DQoJCQkJJHN0cmluZyA9IFN0cmluZ0hlbHBlcjo6bnVtYmVycygkc3RyaW5nKTsNCgkJCX0NCg0KCQkJLy8gVHJhbnNsaXRlcmF0ZSBzdHJpbmcgVE9ETzogbG9vayBhZ2FpbiBhcyB0aGlzIG1ha2VzIGl0IGxvd2VyY2FzZQ0KCQkJLy8gJHN0cmluZyA9IFN0cmluZ0hlbHBlcjo6dHJhbnNsaXRlcmF0ZSgkc3RyaW5nKTsNCg0KCQkJLy8gZmlyc3QgcmVtb3ZlIGFsbCBbXF0gYmFja3NsYXNoZXMNCgkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgnXFwnLCAnKycsIChzdHJpbmcpICRzdHJpbmcpOw0KDQoJCQkvLyByZW1vdmUgYWxsIGFuZCBrZWVwIG9ubHkgY2hhcmFjdGVycyBhbmQgW1xdIGJhY2tzbGFzaGVzIGluc2lkZSBvZiB0aGUgc3RyaW5nDQoJCQlpZiAoJHJlbW92ZU51bWJlcnMpDQoJCQl7DQoJCQkJJHN0cmluZyA9IHRyaW0oIHByZWdfcmVwbGFjZSgiL1teQS1aYS16XCtdLyIsICcnLCAkc3RyaW5nKSwgJysnKTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkkc3RyaW5nID0gdHJpbSggcHJlZ19yZXBsYWNlKCIvW15BLVphLXowLTlcK10vIiwgJycsICRzdHJpbmcpLCAnKycpOw0KCQkJfQ0KDQoJCQkvLyBwbGFjZSB0aGUgW1xdIGJhY2tzbGFzaGVzIGJhY2sNCgkJCXJldHVybiB0cmltKCBwcmVnX3JlcGxhY2UoIi9cKysvIiwgJ1xcJywgJHN0cmluZykpOw0KCQl9DQoNCgkJLy8gbm90IGEgc3RyaW5nDQoJCXJldHVybiAnJzsNCgl9DQo=', '{}', 'NamespaceHelper', 'VDM\\Joomla\\Utilities.String.NamespaceHelper', '1.0.0', '{}', 'String Namespace Helper', 'abstract class', '{\"use_selection0\":{\"use\":\"1f28cb53-60d9-4db1-b517-3c7dc6b429ef\",\"as\":\"default\"}}', '', 1, '2022-03-08 23:27:57', '2023-01-14 18:04:48', 19, 5),
(15, 1, 'Control the naming of a field type\r\n\r\n@since 3.0.9', '', '', 'a8935cbe-7701-40dc-bfd5-675f2d600954', 'dXNlIEpvb21sYVxDTVNcQ29tcG9uZW50XENvbXBvbmVudEhlbHBlcjs=', '', '', '{}', 'CS8qKg0KCSAqIFRoZSBmaWVsZCBidWlsZGVyIHN3aXRjaA0KCSAqIA0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKi8NCglwcm90ZWN0ZWQgc3RhdGljICRidWlsZGVyID0gZmFsc2U7DQoNCgkvKioNCgkgKiBNYWtpbmcgZmllbGQgdHlwZSBuYW1lIHNhZmUNCgkgKg0KCSAqIEBwYXJhbSAgIFN0cmluZyAgICAgICRzdHJpbmcgICAgIFRoZSB5b3Ugd291bGQgbGlrZSB0byBtYWtlIHNhZmUNCgkgKiBAcGFyYW0gICBTdHJpbmcgICAgICAkb3B0aW9uICAgIFRoZSBvcHRpb24gZm9yIHRoZSBjb21wb25lbnQuDQoJICoNCgkgKiBAcmV0dXJucyBzdHJpbmcgb24gc3VjY2Vzcw0KCSAqIA0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNhZmUoJHN0cmluZywgJG9wdGlvbiA9IG51bGwpDQoJew0KCQkvLyBnZXQgZ2xvYmFsIHZhbHVlDQoJCWlmIChzZWxmOjokYnVpbGRlciA9PT0gZmFsc2UpDQoJCXsNCgkJCXNlbGY6OiRidWlsZGVyID0gSGVscGVyOjpnZXRQYXJhbXMoJG9wdGlvbiktPmdldCgndHlwZV9uYW1lX2J1aWxkZXInLCAxKTsNCgkJfQ0KDQoJCS8vIHVzZSB0aGUgbmV3IGNvbnZlbnRpb24NCgkJaWYgKDIgPT0gc2VsZjo6JGJ1aWxkZXIpDQoJCXsNCgkJCS8vIDBubHkgY29udGludWUgaWYgd2UgaGF2ZSBhIHN0cmluZw0KCQkJaWYgKFN0cmluZ0hlbHBlcjo6Y2hlY2soJHN0cmluZykpDQoJCQl7DQoJCQkJLy8gY2hlY2sgdGhhdCB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzIG5vdCBhIG51bWJlcg0KCQkJCWlmIChpc19udW1lcmljKHN1YnN0cigkc3RyaW5nLCAwLCAxKSkpDQoJCQkJew0KCQkJCQkkc3RyaW5nID0gU3RyaW5nSGVscGVyOjpudW1iZXJzKCRzdHJpbmcpOw0KCQkJCX0NCg0KCQkJCS8vIFRyYW5zbGl0ZXJhdGUgc3RyaW5nDQoJCQkJJHN0cmluZyA9IFN0cmluZ0hlbHBlcjo6dHJhbnNsaXRlcmF0ZSgkc3RyaW5nKTsNCg0KCQkJCS8vIHJlbW92ZSBhbGwgYW5kIGtlZXAgb25seSBjaGFyYWN0ZXJzIGFuZCBudW1iZXJzIGFuZCBwb2ludCAoVE9ETyBqdXN0IG9uZSBwb2ludCkNCgkJCQkkc3RyaW5nID0gdHJpbShwcmVnX3JlcGxhY2UoIi9bXkEtWmEtejAtOVwuXS8iLCAnJywgKHN0cmluZykgJHN0cmluZykpOw0KDQoJCQkJLy8gYmVzdCBpcyB0byByZXR1cm4gbG93ZXIgKGZvciBhbGwgc3RyaW5nIGVxdWFsaXR5IGluIGNvbXBpbGVyKQ0KCQkJCXJldHVybiBzdHJ0b2xvd2VyKCRzdHJpbmcpOw0KCQkJfQ0KCQkJLy8gbm90IGEgc3RyaW5nDQoJCQlyZXR1cm4gJyc7DQoJCX0NCg0KCQkvLyB1c2UgdGhlIGRlZmF1bHQgKG9yaWdpbmFsIGJlaGF2aW91ci9jb252ZW50aW9uKQ0KCQlyZXR1cm4gU3RyaW5nSGVscGVyOjpzYWZlKCRzdHJpbmcpOw0KCX0NCg==', '{}', 'TypeHelper', 'VDM\\Joomla\\Utilities.String.TypeHelper', '1.0.0', '{}', 'String Type Helper', 'abstract class', '{\"use_selection0\":{\"use\":\"1f28cb53-60d9-4db1-b517-3c7dc6b429ef\",\"as\":\"default\"},\"use_selection1\":{\"use\":\"640b5352-fb09-425f-a26e-cd44eda03f15\",\"as\":\"default\"}}', '', 1, '2022-03-08 23:33:09', '2023-01-14 17:56:28', 16, 5),
(16, '', 'Control the naming of a class and function\r\n\r\n@since 3.0.9', '', '', '30c5b4c2-f75f-4d15-869a-f8bfedd87358', '', '', '', '{}', 'CS8qKg0KCSAqIE1ha2luZyBjbGFzcyBvciBmdW5jdGlvbiBuYW1lIHNhZmUNCgkgKg0KCSAqIEBpbnB1dAlzdHJpbmcgICAgICAgVGhlIG5hbWUgeW91IHdvdWxkIGxpa2UgdG8gbWFrZSBzYWZlDQoJICoNCgkgKiBAcmV0dXJucyBzdHJpbmcgb24gc3VjY2Vzcw0KCSAqIA0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNhZmUoJG5hbWUpDQoJew0KCQkvLyByZW1vdmUgbnVtYmVycyBpZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzIGEgbnVtYmVyDQoJCWlmIChpc19udW1lcmljKHN1YnN0cigoc3RyaW5nKSAkbmFtZSwgMCwgMSkpKQ0KCQl7DQoJCQkkbmFtZSA9IFN0cmluZ0hlbHBlcjo6bnVtYmVycygkbmFtZSk7DQoJCX0NCg0KCQkvLyByZW1vdmUgYWxsIHNwYWNlcyBhbmQgc3RyYW5nZSBjaGFyYWN0ZXJzDQoJCXJldHVybiB0cmltKHByZWdfcmVwbGFjZSgiL1teQS1aYS16MC05Xy1dLyIsICcnLCAoc3RyaW5nKSAkbmFtZSkpOw0KCX0NCg==', '{}', 'ClassfunctionHelper', 'VDM\\Joomla\\Utilities.String.ClassfunctionHelper', '1.0.0', '{}', 'String Classfunction Helper', 'abstract class', '{\"use_selection0\":{\"use\":\"1f28cb53-60d9-4db1-b517-3c7dc6b429ef\",\"as\":\"default\"}}', '', 1, '2022-03-08 23:43:10', '2023-01-14 18:07:10', 16, 5),
(17, 1, 'Some easy get...\r\n\r\n@since 3.0.9', '', '', 'db87c339-5bb6-4291-a7ef-2c48ea1b06bc', 'dXNlIEpvb21sYVxDTVNcRmFjdG9yeTs=', '', '', '{\"load_selection0\":{\"load\":\"0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a\"},\"load_selection1\":{\"load\":\"1f28cb53-60d9-4db1-b517-3c7dc6b429ef\"}}', 'CS8qKg0KCSAqIEdldCBhIFZhcmlhYmxlIA0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nfG51bGwgICR0YWJsZSAgICAgICAgVGhlIHRhYmxlIGZyb20gd2hpY2ggdG8gZ2V0IHRoZSB2YXJpYWJsZQ0KCSAqIEBwYXJhbSAgIG1peGVkICAgICAgICAkd2hlcmUgICAgICAgIFRoZSB2YWx1ZSB3aGVyZQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICAgICAkd2hlcmVTdHJpbmcgIFRoZSB0YXJnZXQvZmllbGQgc3RyaW5nIHdoZXJlL25hbWUNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAgICAgJHdoYXQgICAgICAgICBUaGUgcmV0dXJuIGZpZWxkDQoJICogQHBhcmFtICAgc3RyaW5nICAgICAgICRvcGVyYXRvciAgICAgVGhlIG9wZXJhdG9yIGJldHdlZW4gJHdoZXJlU3RyaW5nL2ZpZWxkIGFuZCAkd2hlcmUvdmFsdWUNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAgICAgJG1haW4gICAgICAgICBUaGUgY29tcG9uZW50IGluIHdoaWNoIHRoZSB0YWJsZSBpcyBmb3VuZA0KCSAqDQoJICogQHJldHVybiAgbWl4ZWQgc3RyaW5nL2ludC9mbG9hdA0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHZhcig/c3RyaW5nICR0YWJsZSA9IG51bGwsICR3aGVyZSA9IG51bGwsDQoJCXN0cmluZyAkd2hlcmVTdHJpbmcgPSAndXNlcicsIHN0cmluZyAkd2hhdCA9ICdpZCcsDQoJCXN0cmluZyAkb3BlcmF0b3IgPSAnPScsID9zdHJpbmcgJG1haW4gPSBudWxsKQ0KCXsNCgkJaWYoZW1wdHkoJHdoZXJlKSkNCgkJew0KCQkJJHdoZXJlID0gRmFjdG9yeTo6Z2V0VXNlcigpLT5pZDsNCgkJfQ0KDQoJCWlmKGVtcHR5KCRtYWluKSkNCgkJew0KCQkJJG1haW4gPSBIZWxwZXI6OmdldENvZGUoKTsNCgkJfQ0KDQoJCS8vIEdldCBhIGRiIGNvbm5lY3Rpb24uDQoJCSRkYiA9IEZhY3Rvcnk6OmdldERibygpOw0KDQoJCS8vIENyZWF0ZSBhIG5ldyBxdWVyeSBvYmplY3QuDQoJCSRxdWVyeSA9ICRkYi0+Z2V0UXVlcnkodHJ1ZSk7DQoJCSRxdWVyeS0+c2VsZWN0KCRkYi0+cXVvdGVOYW1lKGFycmF5KCR3aGF0KSkpOw0KDQoJCWlmIChlbXB0eSgkdGFibGUpKQ0KCQl7DQoJCQkkcXVlcnktPmZyb20oJGRiLT5xdW90ZU5hbWUoJyNfXycgLiAkbWFpbikpOw0KCQl9DQoJCWVsc2UNCgkJew0KCQkJJHF1ZXJ5LT5mcm9tKCRkYi0+cXVvdGVOYW1lKCcjX18nIC4gJG1haW4gLiAnXycgLiAkdGFibGUpKTsNCgkJfQ0KDQoJCWlmIChpc19udW1lcmljKCR3aGVyZSkpDQoJCXsNCgkJCSRxdWVyeS0+d2hlcmUoJGRiLT5xdW90ZU5hbWUoJHdoZXJlU3RyaW5nKSAuICcgJyAuICRvcGVyYXRvciAuICcgJyAuIChpbnQpICR3aGVyZSk7DQoJCX0NCgkJZWxzZWlmIChpc19zdHJpbmcoJHdoZXJlKSkNCgkJew0KCQkJJHF1ZXJ5LT53aGVyZSgkZGItPnF1b3RlTmFtZSgkd2hlcmVTdHJpbmcpIC4gJyAnIC4gJG9wZXJhdG9yIC4gJyAnIC4gJGRiLT5xdW90ZSgoc3RyaW5nKSR3aGVyZSkpOw0KCQl9DQoJCWVsc2UNCgkJew0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoNCgkJJGRiLT5zZXRRdWVyeSgkcXVlcnkpOw0KCQkkZGItPmV4ZWN1dGUoKTsNCg0KCQlpZiAoJGRiLT5nZXROdW1Sb3dzKCkpDQoJCXsNCgkJCXJldHVybiAkZGItPmxvYWRSZXN1bHQoKTsNCgkJfQ0KDQoJCXJldHVybiBmYWxzZTsNCgl9DQoNCgkvKioNCgkgKiBHZXQgYXJyYXkgb2YgdmFyaWFibGVzDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmd8bnVsbCAgJHRhYmxlICAgICAgICBUaGUgdGFibGUgZnJvbSB3aGljaCB0byBnZXQgdGhlIHZhcmlhYmxlcw0KCSAqIEBwYXJhbSAgIG1peGVkICAgICAgICAkd2hlcmUgICAgICAgIFRoZSB2YWx1ZSB3aGVyZQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICAgICAkd2hlcmVTdHJpbmcgIFRoZSB0YXJnZXQvZmllbGQgc3RyaW5nIHdoZXJlL25hbWUNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAgICAgJHdoYXQgICAgICAgICBUaGUgcmV0dXJuIGZpZWxkDQoJICogQHBhcmFtICAgc3RyaW5nICAgICAgICRvcGVyYXRvciAgICAgVGhlIG9wZXJhdG9yIGJldHdlZW4gJHdoZXJlU3RyaW5nL2ZpZWxkIGFuZCAkd2hlcmUvdmFsdWUNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAgICAgJG1haW4gICAgICAgICBUaGUgY29tcG9uZW50IGluIHdoaWNoIHRoZSB0YWJsZSBpcyBmb3VuZA0KCSAqIEBwYXJhbSAgIGJvb2wgICAgICAgICAkdW5pcXVlICAgICAgIFRoZSBzd2l0Y2ggdG8gcmV0dXJuIGEgdW5pcXVlIGFycmF5DQoJICoNCgkgKiBAcmV0dXJuICBhcnJheXxudWxsDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdmFycyg/c3RyaW5nICR0YWJsZSA9IG51bGwsICR3aGVyZSA9IG51bGwsDQoJCXN0cmluZyAkd2hlcmVTdHJpbmcgPSAndXNlcicsIHN0cmluZyAkd2hhdCA9ICdpZCcsIHN0cmluZyAkb3BlcmF0b3IgPSAnSU4nLA0KCQk/c3RyaW5nICRtYWluID0gbnVsbCwgYm9vbCAkdW5pcXVlID0gdHJ1ZSk6ID9hcnJheQ0KCXsNCgkJaWYoZW1wdHkoJHdoZXJlKSkNCgkJew0KCQkJJHdoZXJlID0gRmFjdG9yeTo6Z2V0VXNlcigpLT5pZDsNCgkJfQ0KDQoJCWlmKGlzX251bGwoJG1haW4pKQ0KCQl7DQoJCQkkbWFpbiA9IEhlbHBlcjo6Z2V0Q29kZSgpOw0KCQl9DQoNCgkJaWYgKCFBcnJheUhlbHBlcjo6Y2hlY2soJHdoZXJlKSAmJiAkd2hlcmUgPiAwKQ0KCQl7DQoJCQkkd2hlcmUgPSBhcnJheSgkd2hlcmUpOw0KCQl9DQoNCgkJaWYgKEFycmF5SGVscGVyOjpjaGVjaygkd2hlcmUpKQ0KCQl7DQoJCQkvLyBwcmVwIG1haW4gPC0tIHdoeT8gd2VsbCBpZiAkbWFpbj0nJyBpcyBlbXB0eSB0aGVuICR0YWJsZSBjYW4gYmUgY2F0ZWdvcmllcyBvciB1c2Vycw0KCQkJaWYgKFN0cmluZ0hlbHBlcjo6Y2hlY2soJG1haW4pKQ0KCQkJew0KCQkJCSRtYWluID0gJ18nIC4gbHRyaW0oJG1haW4sICdfJyk7DQoJCQl9DQoNCgkJCS8vIEdldCBhIGRiIGNvbm5lY3Rpb24uDQoJCQkkZGIgPSBGYWN0b3J5OjpnZXREYm8oKTsNCg0KCQkJLy8gQ3JlYXRlIGEgbmV3IHF1ZXJ5IG9iamVjdC4NCgkJCSRxdWVyeSA9ICRkYi0+Z2V0UXVlcnkodHJ1ZSk7DQoJCQkkcXVlcnktPnNlbGVjdCgkZGItPnF1b3RlTmFtZShhcnJheSgkd2hhdCkpKTsNCg0KCQkJaWYgKGVtcHR5KCR0YWJsZSkpDQoJCQl7DQoJCQkJJHF1ZXJ5LT5mcm9tKCRkYi0+cXVvdGVOYW1lKCcjX18nIC4gJG1haW4pKTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkkcXVlcnktPmZyb20oJGRiLT5xdW90ZU5hbWUoJyNfJyAuICRtYWluIC4gJ18nIC4gJHRhYmxlKSk7DQoJCQl9DQoNCgkJCS8vIGFkZCBzdHJpbmdzIHRvIGFycmF5IHNlYXJjaA0KCQkJaWYgKCdJTl9TVFJJTkdTJyA9PT0gJG9wZXJhdG9yIHx8ICdOT1QgSU5fU1RSSU5HUycgPT09ICRvcGVyYXRvcikNCgkJCXsNCgkJCQkkcXVlcnktPndoZXJlKCRkYi0+cXVvdGVOYW1lKCR3aGVyZVN0cmluZykgLiAnICcgLiBzdHJfcmVwbGFjZSgnX1NUUklOR1MnLCAnJywgJG9wZXJhdG9yKSAuICcgKCInIC4gaW1wbG9kZSgnIiwiJywgJHdoZXJlKSAuICciKScpOw0KCQkJfQ0KCQkJZWxzZQ0KLine truncated
(18, '', 'Some object tricks\r\n\r\n@since 3.0.9', '', '', '91004529-94a9-4590-b842-e7c6b624ecf5', '', '', '', '{}', 'CS8qKg0KCSAqIENoZWNrIGlmIGhhdmUgYW4gb2JqZWN0IHdpdGggYSBsZW5ndGgNCgkgKg0KCSAqIEBpbnB1dAlvYmplY3QgICBUaGUgb2JqZWN0IHRvIGNoZWNrDQoJICoNCgkgKiBAcmV0dXJucyBib29sIHRydWUgb24gc3VjY2Vzcw0KCSAqIA0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNoZWNrKCRvYmplY3QpDQoJew0KCQlpZiAoaXNfb2JqZWN0KCRvYmplY3QpKQ0KCQl7DQoJCQlyZXR1cm4gY291bnQoKGFycmF5KSAkb2JqZWN0KSA+IDA7DQoJCX0NCg0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0K', '{}', 'ObjectHelper', 'VDM\\Joomla\\Utilities.ObjectHelper', '1.0.0', '{}', 'Utilities Object Helper', 'abstract class', '{}', '', 1, '2022-03-09 00:35:23', '2022-09-20 09:51:31', 15, 8),
(19, '', 'Basic Math Helper\r\n\r\n@since 3.0.9', '', '', '152c8793-8b75-4715-996a-257b9f65451c', '', '', '', '{}', 'CS8qKg0KCSAqIGJjIG1hdGggd3JhcHBlciAodmVyeSBiYXNpYyBub3QgZm9yIGFjY291bnRpbmcpDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkdHlwZSAgICBUaGUgdHlwZSBiYyBtYXRoDQoJICogQHBhcmFtICAgaW50ICAgICAgJHZhbDEgICAgVGhlIGZpcnN0IHZhbHVlDQoJICogQHBhcmFtICAgaW50ICAgICAgJHZhbDIgICAgVGhlIHNlY29uZCB2YWx1ZQ0KCSAqIEBwYXJhbSAgIGludCAgICAgICRzY2FsZSAgIFRoZSBzY2FsZSB2YWx1ZQ0KCSAqDQoJICogQHJldHVybiBpbnQNCgkgKiANCgkgKiBAc2luY2UgIDMuMC45DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBiYygkdHlwZSwgJHZhbDEsICR2YWwyLCAkc2NhbGUgPSAwKQ0KCXsNCgkJLy8gYnVpbGQgZnVuY3Rpb24gbmFtZQ0KCQkkZnVuY3Rpb24gPSAnYmMnIC4gJHR5cGU7DQoJCS8vIHVzZSB0aGUgYmNtYXRoIGZ1bmN0aW9uIGlmIGF2YWlsYWJsZQ0KCQlpZiAoZnVuY3Rpb25fZXhpc3RzKCRmdW5jdGlvbikpDQoJCXsNCgkJCXJldHVybiAkZnVuY3Rpb24oJHZhbDEsICR2YWwyLCAkc2NhbGUpOw0KCQl9DQoJCS8vIGlmIGZ1bmN0aW9uIGRvZXMgbm90IGV4aXN0IHdlIHVzZSArLSovIG9wZXJhdG9ycyAoZmFsbGJhY2sgLSBub3QgaWRlYWwpDQoJCXN3aXRjaCAoJHR5cGUpDQoJCXsNCgkJCS8vIE11bHRpcGx5IHR3byBudW1iZXJzDQoJCQljYXNlICdtdWwnOg0KCQkJCXJldHVybiAoc3RyaW5nKSByb3VuZCgkdmFsMSAqICR2YWwyLCAkc2NhbGUpOw0KCQkJCWJyZWFrOw0KCQkJLy8gRGl2aWRlIG9mIHR3byBudW1iZXJzDQoJCQljYXNlICdkaXYnOg0KCQkJCXJldHVybiAoc3RyaW5nKSByb3VuZCgkdmFsMSAvICR2YWwyLCAkc2NhbGUpOw0KCQkJCWJyZWFrOw0KCQkJLy8gQWRkaW5nIHR3byBudW1iZXJzDQoJCQljYXNlICdhZGQnOg0KCQkJCXJldHVybiAoc3RyaW5nKSByb3VuZCgkdmFsMSArICR2YWwyLCAkc2NhbGUpOw0KCQkJCWJyZWFrOw0KCQkJLy8gU3VidHJhY3Qgb25lIG51bWJlciBmcm9tIHRoZSBvdGhlcg0KCQkJY2FzZSAnc3ViJzoNCgkJCQlyZXR1cm4gKHN0cmluZykgcm91bmQoJHZhbDEgLSAkdmFsMiwgJHNjYWxlKTsNCgkJCQlicmVhazsNCgkJCS8vIFJhaXNlIGFuIGFyYml0cmFyeSBwcmVjaXNpb24gbnVtYmVyIHRvIGFub3RoZXINCgkJCWNhc2UgJ3Bvdyc6DQoJCQkJcmV0dXJuIChzdHJpbmcpIHJvdW5kKHBvdygkdmFsMSwgJHZhbDIpLCAkc2NhbGUpOw0KCQkJCWJyZWFrOw0KCQkJLy8gQ29tcGFyZSB0d28gYXJiaXRyYXJ5IHByZWNpc2lvbiBudW1iZXJzDQoJCQljYXNlICdjb21wJzoNCgkJCQlyZXR1cm4gKHJvdW5kKCR2YWwxLDIpID09IHJvdW5kKCR2YWwyLDIpKTsNCgkJCQlicmVhazsNCgkJfQ0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KDQoJLyoqDQoJICogQmFzaWMgc3VtIG9mIGFuIGFycmF5IHdpdGggbW9yZSBwcmVjaXNpb24NCgkgKg0KCSAqIEBwYXJhbSAgIGFycmF5ICAgJGFycmF5ICAgIFRoZSB2YWx1ZXMgdG8gc3VtDQoJICogQHBhcmFtICAgaW50ICAgICAgJHNjYWxlICAgVGhlIHNjYWxlIHZhbHVlDQoJICoNCgkgKiBAcmV0dXJuIGZsb2F0DQoJICogDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc3VtKCRhcnJheSwgJHNjYWxlID0gNCkNCgl7DQoJCS8vIHVzZSB0aGUgYmNhZGQgZnVuY3Rpb24gaWYgYXZhaWxhYmxlDQoJCWlmIChmdW5jdGlvbl9leGlzdHMoJ2JjYWRkJykpDQoJCXsNCgkJCS8vIHNldCB0aGUgc3RhcnQgdmFsdWUNCgkJCSR2YWx1ZSA9IDAuMDsNCgkJCS8vIGxvb3AgdGhlIHZhbHVlcyBhbmQgcnVuIGJjYWRkDQoJCQlmb3JlYWNoKCRhcnJheSBhcyAkdmFsKQ0KCQkJew0KCQkJCSR2YWx1ZSA9IGJjYWRkKCR2YWx1ZSwgJHZhbCwgJHNjYWxlKTsNCgkJCX0NCgkJCXJldHVybiAkdmFsdWU7DQoJCX0NCgkJLy8gZmFsbCBiYWNrIG9uIGFycmF5IHN1bQ0KCQlyZXR1cm4gYXJyYXlfc3VtKCRhcnJheSk7DQoJfQ0K', '{}', 'MathHelper', 'VDM\\Joomla\\Utilities.MathHelper', '1.0.0', '{}', 'Utilities Math Helper', 'abstract class', '{}', '', 1, '2022-03-09 13:05:39', '2022-09-20 09:51:26', 11, 9),
(20, '', 'Control the naming of a plugin\r\n\r\n@since 3.0.9', '', '', '3cf76fbf-fd95-4a33-878e-7aff6d36b7f6', '', '', '', '{}', 'CS8qKg0KCSAqIE1ha2luZyBwbHVnaW4gZm9sZGVyIG5hbWUgc2FmZQ0KCSAqDQoJICogQGlucHV0CXN0cmluZyAgICAkY29kZU5hbWUgICBUaGUgbmFtZQ0KCSAqIEBpbnB1dAlzdHJpbmcgICAgJGdyb3VwICAgVGhlIGdyb3VwIG5hbWUNCgkgKg0KCSAqIEByZXR1cm5zIHN0cmluZyBvbiBzdWNjZXNzDQoJICogDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2FmZUZvbGRlck5hbWUoJGNvZGVOYW1lLCAkZ3JvdXApDQoJew0KCQkvLyBlZGl0b3JzLXh0ZCBncm91cCBwbHVnaW5zIG11c3QgaGF2ZSBhIGNsYXNzIHdpdGggcGxnQnV0dG9uPFBsdWdpbk5hbWU+IHN0cnVjdHVyZQ0KCQlpZiAoJGdyb3VwID09PSAnZWRpdG9ycy14dGQnKQ0KCQl7DQoJCQkkZ3JvdXAgPSAnQnV0dG9uJzsNCgkJfQ0KDQoJCXJldHVybiAncGxnXycgLiBzdHJ0b2xvd2VyKCRncm91cCkgLiAnXycgLiBzdHJ0b2xvd2VyKA0KCQkJJGNvZGVOYW1lDQoJCSk7DQoJfQ0KDQoJLyoqDQoJICogTWFraW5nIHBsdWdpbiBjbGFzcyBuYW1lIHNhZmUNCgkgKg0KCSAqIEBpbnB1dAlzdHJpbmcgICAgJGNvZGVOYW1lICAgVGhlIG5hbWUNCgkgKiBAaW5wdXQJc3RyaW5nICAgICRncm91cCAgIFRoZSBncm91cCBuYW1lDQoJICoNCgkgKiBAcmV0dXJucyBzdHJpbmcgb24gc3VjY2Vzcw0KCSAqIA0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNhZmVDbGFzc05hbWUoJGNvZGVOYW1lLCAkZ3JvdXApDQoJew0KCQkvLyBlZGl0b3JzLXh0ZCBncm91cCBwbHVnaW5zIG11c3QgaGF2ZSBhIGNsYXNzIHdpdGggcGxnQnV0dG9uPFBsdWdpbk5hbWU+IHN0cnVjdHVyZQ0KCQlpZiAoJGdyb3VwID09PSAnZWRpdG9ycy14dGQnKQ0KCQl7DQoJCQkkZ3JvdXAgPSAnQnV0dG9uJzsNCgkJfQ0KDQoJCXJldHVybiAnUGxnJyAuIHVjZmlyc3QoJGdyb3VwKSAuIHVjZmlyc3QoDQoJCQkkY29kZU5hbWUNCgkJKTsNCgl9DQoNCgkvKioNCgkgKiBNYWtpbmcgcGx1Z2luIGluc3RhbGwgY2xhc3MgbmFtZSBzYWZlDQoJICoNCgkgKiBAaW5wdXQJc3RyaW5nICAgICRjb2RlTmFtZSAgIFRoZSBuYW1lDQoJICogQGlucHV0CXN0cmluZyAgICAkZ3JvdXAgICBUaGUgZ3JvdXAgbmFtZQ0KCSAqDQoJICogQHJldHVybnMgc3RyaW5nIG9uIHN1Y2Nlc3MNCgkgKiANCgkgKiBAc2luY2UgIDMuMC45DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzYWZlSW5zdGFsbENsYXNzTmFtZSgkY29kZU5hbWUsICRncm91cCkNCgl7DQoJCS8vIGVkaXRvcnMteHRkIGdyb3VwIHBsdWdpbnMgbXVzdCBoYXZlIGEgY2xhc3Mgd2l0aCBwbGdCdXR0b248UGx1Z2luTmFtZT4gc3RydWN0dXJlDQoJCWlmICgkZ3JvdXAgPT09ICdlZGl0b3JzLXh0ZCcpDQoJCXsNCgkJCSRncm91cCA9ICdCdXR0b24nOw0KCQl9DQoNCgkJcmV0dXJuICdwbGcnIC4gdWNmaXJzdCgkZ3JvdXApIC4gdWNmaXJzdCgNCgkJCSRjb2RlTmFtZQ0KCQkpIC4gJ0luc3RhbGxlclNjcmlwdCc7DQoJfQ0KDQoJLyoqDQoJICogTWFraW5nIGxhbmd1YWdlIHByZWZpeCBzYWZlDQoJICoNCgkgKiBAaW5wdXQJc3RyaW5nICAgICRjb2RlTmFtZSAgIFRoZSBuYW1lDQoJICogQGlucHV0CXN0cmluZyAgICAkZ3JvdXAgICBUaGUgZ3JvdXAgbmFtZQ0KCSAqDQoJICogQHJldHVybnMgc3RyaW5nIG9uIHN1Y2Nlc3MNCgkgKiANCgkgKiBAc2luY2UgIDMuMC45DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzYWZlTGFuZ1ByZWZpeCgkY29kZU5hbWUsICRncm91cCkNCgl7DQoJCS8vIGVkaXRvcnMteHRkIGdyb3VwIHBsdWdpbnMgbXVzdCBoYXZlIGEgY2xhc3Mgd2l0aCBwbGdCdXR0b248UGx1Z2luTmFtZT4gc3RydWN0dXJlDQoJCWlmICgkZ3JvdXAgPT09ICdlZGl0b3JzLXh0ZCcpDQoJCXsNCgkJCSRncm91cCA9ICdCdXR0b24nOw0KCQl9DQoNCgkJcmV0dXJuICdQTEdfJyAuIHN0cnRvdXBwZXIoJGdyb3VwKSAuICdfJyAuIHN0cnRvdXBwZXIoDQoJCQkkY29kZU5hbWUNCgkJKTsNCgl9DQo=', '{}', 'PluginHelper', 'VDM\\Joomla\\Utilities.String.PluginHelper', '1.0.0', '{}', 'String Plugin Helper', 'abstract class', '{}', '', 1, '2022-03-09 14:44:58', '2022-09-20 10:10:12', 14, 5),
(21, 1, 'Global Unique ID Helper\r\n\r\n@since 3.0.9', '', '', '9c513baf-b279-43fd-ae29-a585c8cbc4f0', 'dXNlIEpvb21sYVxDTVNcRmFjdG9yeTs=', '', '', '{\"load_selection0\":{\"load\":\"0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a\"},\"load_selection1\":{\"load\":\"1f28cb53-60d9-4db1-b517-3c7dc6b429ef\"}}', 'CS8qKg0KCSAqIFJldHVybnMgYSBHVUlEdjQgc3RyaW5nDQoJICogDQoJICogVGhhbmtzIHRvIERhdmUgUGVhcnNvbiAoYW5kIG90aGVyKQ0KCSAqIGh0dHBzOi8vd3d3LnBocC5uZXQvbWFudWFsL2VuL2Z1bmN0aW9uLmNvbS1jcmVhdGUtZ3VpZC5waHAjMTE5MTY4IA0KCSAqDQoJICogVXNlcyB0aGUgYmVzdCBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgbWV0aG9kDQoJICogZm9yIGFsbCBzdXBwb3J0ZWQgcGxhdGZvcm1zIHdpdGggZmFsbGJhY2sgdG8gYW4gb2xkZXIsDQoJICogbGVzcyBzZWN1cmUgdmVyc2lvbi4NCgkgKg0KCSAqIEBwYXJhbSBib29sICR0cmltDQoJICoNCgkgKiBAcmV0dXJuIHN0cmluZw0KCSAqDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0KCR0cmltID0gdHJ1ZSkNCgl7DQoJCS8vIFdpbmRvd3MNCgkJaWYgKGZ1bmN0aW9uX2V4aXN0cygnY29tX2NyZWF0ZV9ndWlkJykgPT09IHRydWUpDQoJCXsNCgkJCWlmICgkdHJpbSA9PT0gdHJ1ZSkNCgkJCXsNCgkJCQlyZXR1cm4gdHJpbShjb21fY3JlYXRlX2d1aWQoKSwgJ3t9Jyk7DQoJCQl9DQoJCQlyZXR1cm4gY29tX2NyZWF0ZV9ndWlkKCk7DQoJCX0NCg0KCQkvLyBzZXQgdGhlIGJyYWNlcyBpZiBuZWVkZWQNCgkJJGxicmFjZSA9ICR0cmltID8gIiIgOiBjaHIoMTIzKTsgICAgLy8gInsiDQoJCSRyYnJhY2UgPSAkdHJpbSA/ICIiIDogY2hyKDEyNSk7ICAgIC8vICJ9Ig0KDQoJCS8vIE9TWC9MaW51eA0KCQlpZiAoZnVuY3Rpb25fZXhpc3RzKCdvcGVuc3NsX3JhbmRvbV9wc2V1ZG9fYnl0ZXMnKSA9PT0gdHJ1ZSkNCgkJew0KCQkJJGRhdGEgPSBvcGVuc3NsX3JhbmRvbV9wc2V1ZG9fYnl0ZXMoMTYpOw0KCQkJJGRhdGFbNl0gPSBjaHIoIG9yZCgkZGF0YVs2XSkgJiAweDBmIHwgMHg0MCk7ICAgIC8vIHNldCB2ZXJzaW9uIHRvIDAxMDANCgkJCSRkYXRhWzhdID0gY2hyKCBvcmQoJGRhdGFbOF0pICYgMHgzZiB8IDB4ODApOyAgICAvLyBzZXQgYml0cyA2LTcgdG8gMTANCgkJCXJldHVybiAkbGJyYWNlIC4gdnNwcmludGYoJyVzJXMtJXMtJXMtJXMtJXMlcyVzJywgc3RyX3NwbGl0KGJpbjJoZXgoJGRhdGEpLCA0KSkgLiAkbGJyYWNlOw0KCQl9DQoNCgkJLy8gRmFsbGJhY2sgKFBIUCA0LjIrKQ0KCQltdF9zcmFuZCgoZG91YmxlKSBtaWNyb3RpbWUoKSAqIDEwMDAwKTsNCgkJJGNoYXJpZCA9IHN0cnRvbG93ZXIoIG1kNSggdW5pcWlkKCByYW5kKCksIHRydWUpKSk7DQoJCSRoeXBoZW4gPSBjaHIoNDUpOyAgICAgICAgICAgICAgICAgIC8vICItIg0KCQkkZ3VpZHY0ID0gJGxicmFjZS4NCgkJCXN1YnN0cigkY2hhcmlkLCAgMCwgIDgpLiAkaHlwaGVuLg0KCQkJc3Vic3RyKCRjaGFyaWQsICA4LCAgNCkuICRoeXBoZW4uDQoJCQlzdWJzdHIoJGNoYXJpZCwgMTIsICA0KS4gJGh5cGhlbi4NCgkJCXN1YnN0cigkY2hhcmlkLCAxNiwgIDQpLiAkaHlwaGVuLg0KCQkJc3Vic3RyKCRjaGFyaWQsIDIwLCAxMikuDQoJCQkkcmJyYWNlOw0KCQlyZXR1cm4gJGd1aWR2NDsNCgl9DQoNCgkvKioNCgkgKiBWYWxpZGF0ZSB0aGUgR2xvYmFsbHkgVW5pcXVlIElkZW50aWZpZXIgKCBhbmQgY2hlY2sgaWYgdGFibGUgYWxyZWFkeSBoYXMgdGhpcyBpZGVudGlmaWVyKQ0KCSAqDQoJICogQHBhcmFtIHN0cmluZyAgICAgICAkZ3VpZA0KCSAqIEBwYXJhbSBzdHJpbmcgICAgICAgJHRhYmxlDQoJICogQHBhcmFtIGludCAgICAgICAgICAgICRpZA0KCSAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkY29tcG9uZW50DQoJICoNCgkgKiBAcmV0dXJuIGJvb2wNCgkgKg0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHZhbGlkKCRndWlkLCAkdGFibGUgPSBudWxsLCAkaWQgPSAwLCAkY29tcG9uZW50ID0gbnVsbCkNCgl7DQoJCS8vIGNoZWNrIGlmIHdlIGhhdmUgYSBzdHJpbmcNCgkJaWYgKHNlbGY6OnZhbGlkYXRlKCRndWlkKSkNCgkJew0KCQkJLy8gY2hlY2sgaWYgdGFibGUgYWxyZWFkeSBoYXMgdGhpcyBpZGVudGlmaWVyDQoJCQlpZiAoU3RyaW5nSGVscGVyOjpjaGVjaygkdGFibGUpKQ0KCQkJew0KCQkJCS8vIGNoZWNrIHRoYXQgd2UgaGF2ZSB0aGUgY29tcG9uZW50IGNvZGUgbmFtZQ0KCQkJCWlmICghaXNfc3RyaW5nKCRjb21wb25lbnQpKQ0KCQkJCXsNCgkJCQkJJGNvbXBvbmVudCA9IChzdHJpbmcpIEhlbHBlcjo6Z2V0Q29kZSgpOw0KCQkJCX0NCgkJCQkvLyBHZXQgdGhlIGRhdGFiYXNlIG9iamVjdCBhbmQgYSBuZXcgcXVlcnkgb2JqZWN0Lg0KCQkJCSRkYiA9IEZhY3Rvcnk6OmdldERibygpOw0KCQkJCSRxdWVyeSA9ICRkYi0+Z2V0UXVlcnkodHJ1ZSk7DQoJCQkJJHF1ZXJ5LT5zZWxlY3QoJ0NPVU5UKCopJykNCgkJCQkJLT5mcm9tKCcjX18nIC4gKHN0cmluZykgJGNvbXBvbmVudCAuICdfJyAuIChzdHJpbmcpICR0YWJsZSkNCgkJCQkJLT53aGVyZSgkZGItPnF1b3RlTmFtZSgnZ3VpZCcpIC4gJyA9ICcgLiAkZGItPnF1b3RlKCRndWlkKSk7DQoNCgkJCQkvLyByZW1vdmUgdGhpcyBpdGVtIGZyb20gdGhlIGxpc3QNCgkJCQlpZiAoJGlkID4gMCkNCgkJCQl7DQoJCQkJCSRxdWVyeS0+d2hlcmUoJGRiLT5xdW90ZU5hbWUoJ2lkJykgLiAnIDw+ICcgLiAoaW50KSAkaWQpOw0KCQkJCX0NCg0KCQkJCS8vIFNldCBhbmQgcXVlcnkgdGhlIGRhdGFiYXNlLg0KCQkJCSRkYi0+c2V0UXVlcnkoJHF1ZXJ5KTsNCgkJCQkkZHVwbGljYXRlID0gKGJvb2wpICRkYi0+bG9hZFJlc3VsdCgpOw0KDQoJCQkJaWYgKCRkdXBsaWNhdGUpDQoJCQkJew0KCQkJCQlyZXR1cm4gZmFsc2U7DQoJCQkJfQ0KCQkJfQ0KCQkJcmV0dXJuIHRydWU7DQoJCX0NCgkJcmV0dXJuIGZhbHNlOw0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgaXRlbSBieSBndWlkIGluIGEgdGFibGUNCgkgKg0KCSAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICRndWlkDQoJICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgJHRhYmxlDQoJICogQHBhcmFtIHN0cmluZy9hcnJheSAgJHdoYXQNCgkgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgJGNvbXBvbmVudA0KCSAqDQoJICogQHJldHVybiBtaXgNCgkgKg0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGl0ZW0oJGd1aWQsICR0YWJsZSwgJHdoYXQgPSAnYS5pZCcsICRjb21wb25lbnQgPSBudWxsKQ0KCXsNCgkJLy8gY2hlY2sgaWYgd2UgaGF2ZSBhIHN0cmluZw0KCQlpZiAoc2VsZjo6dmFsaWRhdGUoJGd1aWQpKQ0KCQl7DQoJCQkvLyBjaGVjayBpZiB0YWJsZSBhbHJlYWR5IGhhcyB0aGlzIGlkZW50aWZpZXINCgkJCWlmIChTdHJpbmdIZWxwZXI6OmNoZWNrKCR0YWJsZSkpDQoJCQl7DQoJCQkJLy8gY2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSBjb21wb25lbnQgY29kZSBuYW1lDQoJCQkJaWYgKCFpc19zdHJpbmcoJGNvbXBvbmVudCkpDQoJCQkJew0KCQkJCQkkY29tcG9uZW50ID0gKHN0cmluZykgSGVscGVyOjpnZXRDb2RlKCk7DQoJCQkJfQ0KCQkJCS8vIEdldCB0aGUgZGF0YWJhc2Ugb2JqZWN0IGFuZCBhIG5ldyBxdWVyeLine truncated
(20, '', 'Control the naming of a plugin\r\n\r\n@since 3.0.9', '', '', '3cf76fbf-fd95-4a33-878e-7aff6d36b7f6', '', '', '', '{}', 'CS8qKg0KCSAqIE1ha2luZyBwbHVnaW4gZm9sZGVyIG5hbWUgc2FmZQ0KCSAqDQoJICogQGlucHV0CXN0cmluZyAgICAkY29kZU5hbWUgICBUaGUgbmFtZQ0KCSAqIEBpbnB1dAlzdHJpbmcgICAgJGdyb3VwICAgVGhlIGdyb3VwIG5hbWUNCgkgKg0KCSAqIEByZXR1cm5zIHN0cmluZyBvbiBzdWNjZXNzDQoJICogDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2FmZUZvbGRlck5hbWUoc3RyaW5nICRjb2RlTmFtZSwgc3RyaW5nICRncm91cCk6IHN0cmluZw0KCXsNCgkJLy8gZWRpdG9ycy14dGQgZ3JvdXAgcGx1Z2lucyBtdXN0IGhhdmUgYSBjbGFzcyB3aXRoIHBsZ0J1dHRvbjxQbHVnaW5OYW1lPiBzdHJ1Y3R1cmUNCgkJaWYgKCRncm91cCA9PT0gJ2VkaXRvcnMteHRkJykNCgkJew0KCQkJJGdyb3VwID0gJ0J1dHRvbic7DQoJCX0NCg0KCQlyZXR1cm4gJ3BsZ18nIC4gc3RydG9sb3dlcigkZ3JvdXApIC4gJ18nIC4gc3RydG9sb3dlcigNCgkJCSRjb2RlTmFtZQ0KCQkpOw0KCX0NCg0KCS8qKg0KCSAqIE1ha2luZyBwbHVnaW4gY2xhc3MgbmFtZSBzYWZlDQoJICoNCgkgKiBAaW5wdXQJc3RyaW5nICAgICRjb2RlTmFtZSAgIFRoZSBuYW1lDQoJICogQGlucHV0CXN0cmluZyAgICAkZ3JvdXAgICBUaGUgZ3JvdXAgbmFtZQ0KCSAqDQoJICogQHJldHVybnMgc3RyaW5nIG9uIHN1Y2Nlc3MNCgkgKiANCgkgKiBAc2luY2UgIDMuMC45DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzYWZlQ2xhc3NOYW1lKHN0cmluZyAkY29kZU5hbWUsIHN0cmluZyAkZ3JvdXApOiBzdHJpbmcNCgl7DQoJCS8vIGVkaXRvcnMteHRkIGdyb3VwIHBsdWdpbnMgbXVzdCBoYXZlIGEgY2xhc3Mgd2l0aCBwbGdCdXR0b248UGx1Z2luTmFtZT4gc3RydWN0dXJlDQoJCWlmICgkZ3JvdXAgPT09ICdlZGl0b3JzLXh0ZCcpDQoJCXsNCgkJCSRncm91cCA9ICdCdXR0b24nOw0KCQl9DQoNCgkJcmV0dXJuICdQbGcnIC4gdWNmaXJzdCgkZ3JvdXApIC4gdWNmaXJzdCgNCgkJCSRjb2RlTmFtZQ0KCQkpOw0KCX0NCg0KCS8qKg0KCSAqIE1ha2luZyBwbHVnaW4gaW5zdGFsbCBjbGFzcyBuYW1lIHNhZmUNCgkgKg0KCSAqIEBpbnB1dAlzdHJpbmcgICAgJGNvZGVOYW1lICAgVGhlIG5hbWUNCgkgKiBAaW5wdXQJc3RyaW5nICAgICRncm91cCAgIFRoZSBncm91cCBuYW1lDQoJICoNCgkgKiBAcmV0dXJucyBzdHJpbmcgb24gc3VjY2Vzcw0KCSAqIA0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNhZmVJbnN0YWxsQ2xhc3NOYW1lKHN0cmluZyAkY29kZU5hbWUsIHN0cmluZyAkZ3JvdXApOiBzdHJpbmcNCgl7DQoJCS8vIGVkaXRvcnMteHRkIGdyb3VwIHBsdWdpbnMgbXVzdCBoYXZlIGEgY2xhc3Mgd2l0aCBwbGdCdXR0b248UGx1Z2luTmFtZT4gc3RydWN0dXJlDQoJCWlmICgkZ3JvdXAgPT09ICdlZGl0b3JzLXh0ZCcpDQoJCXsNCgkJCSRncm91cCA9ICdCdXR0b24nOw0KCQl9DQoNCgkJcmV0dXJuICdwbGcnIC4gdWNmaXJzdCgkZ3JvdXApIC4gdWNmaXJzdCgNCgkJCSRjb2RlTmFtZQ0KCQkpIC4gJ0luc3RhbGxlclNjcmlwdCc7DQoJfQ0KDQoJLyoqDQoJICogTWFraW5nIGxhbmd1YWdlIHByZWZpeCBzYWZlDQoJICoNCgkgKiBAaW5wdXQJc3RyaW5nICAgICRjb2RlTmFtZSAgIFRoZSBuYW1lDQoJICogQGlucHV0CXN0cmluZyAgICAkZ3JvdXAgICBUaGUgZ3JvdXAgbmFtZQ0KCSAqDQoJICogQHJldHVybnMgc3RyaW5nIG9uIHN1Y2Nlc3MNCgkgKiANCgkgKiBAc2luY2UgIDMuMC45DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzYWZlTGFuZ1ByZWZpeChzdHJpbmcgJGNvZGVOYW1lLCBzdHJpbmcgJGdyb3VwKTogc3RyaW5nDQoJew0KCQkvLyBlZGl0b3JzLXh0ZCBncm91cCBwbHVnaW5zIG11c3QgaGF2ZSBhIGNsYXNzIHdpdGggcGxnQnV0dG9uPFBsdWdpbk5hbWU+IHN0cnVjdHVyZQ0KCQlpZiAoJGdyb3VwID09PSAnZWRpdG9ycy14dGQnKQ0KCQl7DQoJCQkkZ3JvdXAgPSAnQnV0dG9uJzsNCgkJfQ0KDQoJCXJldHVybiAnUExHXycgLiBzdHJ0b3VwcGVyKCRncm91cCkgLiAnXycgLiBzdHJ0b3VwcGVyKA0KCQkJJGNvZGVOYW1lDQoJCSk7DQoJfQ0K', '{}', 'PluginHelper', 'VDM\\Joomla\\Utilities.String.PluginHelper', '1.0.0', '{}', 'String Plugin Helper', 'abstract class', '{}', '', 1, '2022-03-09 14:44:58', '2023-01-14 18:00:42', 16, 5),
(21, 1, 'Global Unique ID Helper\r\n\r\n@since 3.0.9', '', '', '9c513baf-b279-43fd-ae29-a585c8cbc4f0', 'dXNlIEpvb21sYVxDTVNcRmFjdG9yeTs=', '', '', '{\"load_selection0\":{\"load\":\"0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a\"},\"load_selection1\":{\"load\":\"1f28cb53-60d9-4db1-b517-3c7dc6b429ef\"}}', 'CS8qKg0KCSAqIFJldHVybnMgYSBHVUlEdjQgc3RyaW5nDQoJICogDQoJICogVGhhbmtzIHRvIERhdmUgUGVhcnNvbiAoYW5kIG90aGVyKQ0KCSAqIGh0dHBzOi8vd3d3LnBocC5uZXQvbWFudWFsL2VuL2Z1bmN0aW9uLmNvbS1jcmVhdGUtZ3VpZC5waHAjMTE5MTY4IA0KCSAqDQoJICogVXNlcyB0aGUgYmVzdCBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgbWV0aG9kDQoJICogZm9yIGFsbCBzdXBwb3J0ZWQgcGxhdGZvcm1zIHdpdGggZmFsbGJhY2sgdG8gYW4gb2xkZXIsDQoJICogbGVzcyBzZWN1cmUgdmVyc2lvbi4NCgkgKg0KCSAqIEBwYXJhbSBib29sICR0cmltDQoJICoNCgkgKiBAcmV0dXJuIHN0cmluZw0KCSAqDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0KGJvb2wgJHRyaW0gPSB0cnVlKTogc3RyaW5nDQoJew0KCQkvLyBXaW5kb3dzDQoJCWlmIChmdW5jdGlvbl9leGlzdHMoJ2NvbV9jcmVhdGVfZ3VpZCcpKQ0KCQl7DQoJCQlpZiAoJHRyaW0pDQoJCQl7DQoJCQkJcmV0dXJuIHRyaW0oY29tX2NyZWF0ZV9ndWlkKCksICd7fScpOw0KCQkJfQ0KCQkJcmV0dXJuIGNvbV9jcmVhdGVfZ3VpZCgpOw0KCQl9DQoNCgkJLy8gc2V0IHRoZSBicmFjZXMgaWYgbmVlZGVkDQoJCSRsYnJhY2UgPSAkdHJpbSA/ICIiIDogY2hyKDEyMyk7ICAgIC8vICJ7Ig0KCQkkcmJyYWNlID0gJHRyaW0gPyAiIiA6IGNocigxMjUpOyAgICAvLyAifSINCg0KCQkvLyBPU1gvTGludXgNCgkJaWYgKGZ1bmN0aW9uX2V4aXN0cygnb3BlbnNzbF9yYW5kb21fcHNldWRvX2J5dGVzJykpDQoJCXsNCgkJCSRkYXRhID0gb3BlbnNzbF9yYW5kb21fcHNldWRvX2J5dGVzKDE2KTsNCgkJCSRkYXRhWzZdID0gY2hyKCBvcmQoJGRhdGFbNl0pICYgMHgwZiB8IDB4NDApOyAgICAvLyBzZXQgdmVyc2lvbiB0byAwMTAwDQoJCQkkZGF0YVs4XSA9IGNociggb3JkKCRkYXRhWzhdKSAmIDB4M2YgfCAweDgwKTsgICAgLy8gc2V0IGJpdHMgNi03IHRvIDEwDQoJCQlyZXR1cm4gJGxicmFjZSAuIHZzcHJpbnRmKCclcyVzLSVzLSVzLSVzLSVzJXMlcycsIHN0cl9zcGxpdChiaW4yaGV4KCRkYXRhKSwgNCkpIC4gJGxicmFjZTsNCgkJfQ0KDQoJCS8vIEZhbGxiYWNrIChQSFAgNC4yKykNCgkJbXRfc3JhbmQoKGRvdWJsZSkgbWljcm90aW1lKCkgKiAxMDAwMCk7DQoJCSRjaGFyaWQgPSBzdHJ0b2xvd2VyKCBtZDUoIHVuaXFpZCggcmFuZCgpLCB0cnVlKSkpOw0KCQkkaHlwaGVuID0gY2hyKDQ1KTsgICAgICAgICAgICAgICAgICAvLyAiLSINCgkJJGd1aWR2NCA9ICRsYnJhY2UuDQoJCQlzdWJzdHIoJGNoYXJpZCwgIDAsICA4KS4gJGh5cGhlbi4NCgkJCXN1YnN0cigkY2hhcmlkLCAgOCwgIDQpLiAkaHlwaGVuLg0KCQkJc3Vic3RyKCRjaGFyaWQsIDEyLCAgNCkuICRoeXBoZW4uDQoJCQlzdWJzdHIoJGNoYXJpZCwgMTYsICA0KS4gJGh5cGhlbi4NCgkJCXN1YnN0cigkY2hhcmlkLCAyMCwgMTIpLg0KCQkJJHJicmFjZTsNCgkJcmV0dXJuICRndWlkdjQ7DQoJfQ0KDQoJLyoqDQoJICogVmFsaWRhdGUgdGhlIEdsb2JhbGx5IFVuaXF1ZSBJZGVudGlmaWVyICggYW5kIGNoZWNrIGlmIHRhYmxlIGFscmVhZHkgaGFzIHRoaXMgaWRlbnRpZmllcikNCgkgKg0KCSAqIEBwYXJhbSBzdHJpbmcgICAgICAgJGd1aWQNCgkgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgJHRhYmxlDQoJICogQHBhcmFtIGludCAgICAgICAgICAgICRpZA0KCSAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkY29tcG9uZW50DQoJICoNCgkgKiBAcmV0dXJuIGJvb2wNCgkgKg0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHZhbGlkKCRndWlkLCA/c3RyaW5nICR0YWJsZSA9IG51bGwsIGludCAkaWQgPSAwLCA/c3RyaW5nICRjb21wb25lbnQgPSBudWxsKTogYm9vbA0KCXsNCgkJLy8gY2hlY2sgaWYgd2UgaGF2ZSBhIHN0cmluZw0KCQlpZiAoc2VsZjo6dmFsaWRhdGUoJGd1aWQpKQ0KCQl7DQoJCQkvLyBjaGVjayBpZiB0YWJsZSBhbHJlYWR5IGhhcyB0aGlzIGlkZW50aWZpZXINCgkJCWlmIChTdHJpbmdIZWxwZXI6OmNoZWNrKCR0YWJsZSkpDQoJCQl7DQoJCQkJLy8gY2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSBjb21wb25lbnQgY29kZSBuYW1lDQoJCQkJaWYgKCFpc19zdHJpbmcoJGNvbXBvbmVudCkpDQoJCQkJew0KCQkJCQkkY29tcG9uZW50ID0gKHN0cmluZykgSGVscGVyOjpnZXRDb2RlKCk7DQoJCQkJfQ0KCQkJCS8vIEdldCB0aGUgZGF0YWJhc2Ugb2JqZWN0IGFuZCBhIG5ldyBxdWVyeSBvYmplY3QuDQoJCQkJJGRiID0gRmFjdG9yeTo6Z2V0RGJvKCk7DQoJCQkJJHF1ZXJ5ID0gJGRiLT5nZXRRdWVyeSh0cnVlKTsNCgkJCQkkcXVlcnktPnNlbGVjdCgnQ09VTlQoKiknKQ0KCQkJCQktPmZyb20oJyNfXycgLiAoc3RyaW5nKSAkY29tcG9uZW50IC4gJ18nIC4gKHN0cmluZykgJHRhYmxlKQ0KCQkJCQktPndoZXJlKCRkYi0+cXVvdGVOYW1lKCdndWlkJykgLiAnID0gJyAuICRkYi0+cXVvdGUoJGd1aWQpKTsNCg0KCQkJCS8vIHJlbW92ZSB0aGlzIGl0ZW0gZnJvbSB0aGUgbGlzdA0KCQkJCWlmICgkaWQgPiAwKQ0KCQkJCXsNCgkJCQkJJHF1ZXJ5LT53aGVyZSgkZGItPnF1b3RlTmFtZSgnaWQnKSAuICcgPD4gJyAuIChpbnQpICRpZCk7DQoJCQkJfQ0KDQoJCQkJLy8gU2V0IGFuZCBxdWVyeSB0aGUgZGF0YWJhc2UuDQoJCQkJJGRiLT5zZXRRdWVyeSgkcXVlcnkpOw0KCQkJCSRkdXBsaWNhdGUgPSAoYm9vbCkgJGRiLT5sb2FkUmVzdWx0KCk7DQoNCgkJCQlpZiAoJGR1cGxpY2F0ZSkNCgkJCQl7DQoJCQkJCXJldHVybiBmYWxzZTsNCgkJCQl9DQoJCQl9DQoJCQlyZXR1cm4gdHJ1ZTsNCgkJfQ0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBpdGVtIGJ5IGd1aWQgaW4gYSB0YWJsZQ0KCSAqDQoJICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgJGd1aWQNCgkgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAkdGFibGUNCgkgKiBAcGFyYW0gc3RyaW5nfGFycmF5ICAkd2hhdA0KCSAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAkY29tcG9uZW50DQoJICoNCgkgKiBAcmV0dXJuIG1peA0KCSAqDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXRlbSgkZ3VpZCwgJHRhYmxlLCAkd2hhdCA9ICdhLmlkJywgP3N0cmluZyAkY29tcG9uZW50ID0gbnVsbCkNCgl7DQoJCS8vIGNoZWNrIGlmIHdlIGhhdmUgYSBzdHJpbmcNCgkJLy8gY2hlY2sgaWYgdGFibGUgYWxyZWFkeSBoYXMgdGhpcyBpZGVudGlmaWVyDQoJCWlmIChzZWxmOjp2YWxpZGF0ZSgkZ3VpZCkgJiYgU3RyaW5nSGVscGVyOjpjaGVjaygkdGFibGUpKQ0KCQl7DQoJCQkvLyBjaGVjayB0aGF0IHdlIGhhdmUgdGhlIGNvbXBvbmVudCBjb2RlIG5hbWUNCgkJCWlmICghaXNfc3RyaW5nKCRjb21wb25lbnQpKQ0KCQkJew0KCQkJCSRjb21wb25lbnQgPSAoc3RyaW5nKSBIZWxwZXI6OmdldENvZGUoKTsNCgkJCX0NCgkJCS8vIEdldCB0aGUgZGF0YWJhc2Ugb2JqZWN0IGFuZCBhIG5ldLine truncated
(22, 1, 'File helper\r\n\r\n@since 3.0.9', '', '', 'a223b31e-ea1d-4cdf-92ae-5f9becffaff0', 'dXNlIEpvb21sYVxDTVNcVXJpXFVyaTsNCnVzZSBKb29tbGFcQ01TXEZhY3Rvcnk7DQp1c2UgSm9vbWxhXENNU1xMYW5ndWFnZVxUZXh0Ow0KdXNlIEpvb21sYVxDTVNcRmlsZXN5c3RlbVxQYXRoOw0KdXNlIEpvb21sYVxDTVNcRmlsZXN5c3RlbVxGaWxlOw0KdXNlIEpvb21sYVxDTVNcRmlsZXN5c3RlbVxGb2xkZXI7DQp1c2UgSm9vbWxhXEFyY2hpdmVcQXJjaGl2ZTs=', '', '', '{\"load_selection0\":{\"load\":\"0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a\"},\"load_selection1\":{\"load\":\"1f28cb53-60d9-4db1-b517-3c7dc6b429ef\"},\"load_selection2\":{\"load\":\"91004529-94a9-4590-b842-e7c6b624ecf5\"}}', 'CS8qKg0KCSAqIFRyaWdnZXIgZXJyb3Igbm90aWNlIG9ubHkgb25jZQ0KCSAqDQoJICogQHZhciAgICBib29sDQoJICoNCgkgKiBAc2luY2UgIDMuMC45DQoJICovDQoJcHJvdGVjdGVkIHN0YXRpYyAkY3VybEVycm9yID0gZmFsc2U7DQoNCgkvKioNCgkgKiBUaGUgemlwcGVyIG1ldGhvZA0KCSAqIA0KCSAqIEBwYXJhbSAgc3RyaW5nICAgJHdvcmtpbmdEaXJlY3RvcnkgICAgVGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgaXRlbXMgbXVzdCBiZSB6aXBwZWQNCgkgKiBAcGFyYW0gIHN0cmluZyAgICRmaWxlcGF0aCAgICAgICAgICBUaGUgcGF0aCB0byB3aGVyZSB0aGUgemlwIGZpbGUgbXVzdCBiZSBwbGFjZWQNCgkgKg0KCSAqIEByZXR1cm4gIGJvb2wgdHJ1ZSAgIE9uIHN1Y2Nlc3MNCgkgKg0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHppcCgkd29ya2luZ0RpcmVjdG9yeSwgJiRmaWxlcGF0aCkNCgl7DQoJCS8vIHN0b3JlIHRoZSBjdXJyZW50IGpvb21sYSB3b3JraW5nIGRpcmVjdG9yeQ0KCQkkam9vbWxhID0gZ2V0Y3dkKCk7DQoNCgkJLy8gd2UgYXJlIGNoYW5naW5nIHRoZSB3b3JraW5nIGRpcmVjdG9yeSB0byB0aGUgY29tcG9uZW50IHRlbXAgZm9sZGVyDQoJCWNoZGlyKCR3b3JraW5nRGlyZWN0b3J5KTsNCg0KCQkvLyB0aGUgZnVsbCBmaWxlIHBhdGggb2YgdGhlIHppcCBmaWxlDQoJCSRmaWxlcGF0aCA9IFBhdGg6OmNsZWFuKCRmaWxlcGF0aCk7DQoNCgkJLy8gZGVsZXRlIGFuIGV4aXN0aW5nIHppcCBmaWxlIChvciB1c2UgYW4gZXhjbHVzaW9uIHBhcmFtZXRlciBpbiBGb2xkZXI6OmZpbGVzKCkNCgkJRmlsZTo6ZGVsZXRlKCRmaWxlcGF0aCk7DQoNCgkJLy8gZ2V0IGEgbGlzdCBvZiBmaWxlcyBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkgdHJlZSAoYWxzbyB0aGUgaGlkZGVuIGZpbGVzKQ0KCQkkZmlsZXMgPSBGb2xkZXI6OmZpbGVzKCcuJywgJycsIHRydWUsIHRydWUsIGFycmF5KCcuc3ZuJywgJ0NWUycsICcuRFNfU3RvcmUnLCAnX19NQUNPU1gnKSwgYXJyYXkoJy4qficpKTsNCg0KCQkkemlwQXJyYXkgPSBhcnJheSgpOw0KCQkvLyBzZXR1cCB0aGUgemlwIGFycmF5DQoJCWZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkNCgkJew0KCQkJJHRtcCA9IGFycmF5KCk7DQoJCQkkdG1wWyduYW1lJ10gPSBzdHJfcmVwbGFjZSgnLi8nLCAnJywgJGZpbGUpOw0KCQkJJHRtcFsnZGF0YSddID0gc2VsZjo6Z2V0Q29udGVudCgkZmlsZSk7DQoJCQkkdG1wWyd0aW1lJ10gPSBmaWxlbXRpbWUoJGZpbGUpOw0KCQkJJHppcEFycmF5W10gPSAkdG1wOw0KCQl9DQoNCgkJLy8gY2hhbmdlIGJhY2sgdG8gam9vbWxhIHdvcmtpbmcgZGlyZWN0b3J5DQoJCWNoZGlyKCRqb29tbGEpOw0KDQoJCS8vIGdldCB0aGUgemlwIGFkYXB0ZXINCgkJJGFkYXB0ZXIgPSBuZXcgQXJjaGl2ZSgpOw0KCQkkemlwID0gJGFkYXB0ZXItPmdldEFkYXB0ZXIoJ3ppcCcpOw0KDQoJCS8vY3JlYXRlIHRoZSB6aXAgZmlsZQ0KCQlpZiAoJHppcC0+Y3JlYXRlKCRmaWxlcGF0aCwgJHppcEFycmF5KSkNCgkJew0KCQkJcmV0dXJuIHRydWU7DQoJCX0NCgkJcmV0dXJuIGZhbHNlOw0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgY29udGVudCBvZiBhIGZpbGUNCgkgKg0KCSAqIEBwYXJhbSAgc3RyaW5nICAgICAgICAkcGF0aCAgIFRoZSBwYXRoIHRvIHRoZSBmaWxlDQoJICogQHBhcmFtICBzdHJpbmcvYm9vbCAgICRub25lICAgVGhlIHJldHVybiB2YWx1ZSBpZiBubyBjb250ZW50IHdhcyBmb3VuZA0KCSAqDQoJICogQHJldHVybiAgc3RyaW5nICAgT24gc3VjY2Vzcw0KCSAqDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0Q29udGVudCgkcGF0aCwgJG5vbmUgPSAnJykNCgl7DQoJCWlmIChTdHJpbmdIZWxwZXI6OmNoZWNrKCRwYXRoKSkNCgkJew0KCQkJLy8gdXNlIGJhc2ljIGZpbGUgZ2V0IGNvbnRlbnQgZm9yIG5vdw0KCQkJaWYgKCgkY29udGVudCA9IEBmaWxlX2dldF9jb250ZW50cygkcGF0aCkpICE9PSBGQUxTRSkNCgkJCXsNCgkJCQlyZXR1cm4gJGNvbnRlbnQ7DQoJCQl9DQoJCQkvLyB1c2UgY3VybCBpZiBhdmFpbGFibGUNCgkJCWVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCdjdXJsX3ZlcnNpb24nKSkNCgkJCXsNCgkJCQkvLyBzdGFydCBjdXJsDQoJCQkJJGNoID0gY3VybF9pbml0KCk7DQoJCQkJLy8gc2V0IHRoZSBvcHRpb25zDQoJCQkJJG9wdGlvbnMgPSBhcnJheSgpOw0KCQkJCSRvcHRpb25zW0NVUkxPUFRfVVJMXSA9ICRwYXRoOw0KCQkJCSRvcHRpb25zW0NVUkxPUFRfVVNFUkFHRU5UXSA9ICdNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLVVTOyBydjoxLjkuMi4xMikgR2Vja28vMjAxMDEwMjYgRmlyZWZveC8zLjYuMTInOw0KCQkJCSRvcHRpb25zW0NVUkxPUFRfUkVUVVJOVFJBTlNGRVJdID0gVFJVRTsNCgkJCQkkb3B0aW9uc1tDVVJMT1BUX1NTTF9WRVJJRllQRUVSXSA9IEZBTFNFOw0KCQkJCS8vIGxvYWQgdGhlIG9wdGlvbnMNCgkJCQljdXJsX3NldG9wdF9hcnJheSgkY2gsICRvcHRpb25zKTsNCgkJCQkvLyBnZXQgdGhlIGNvbnRlbnQNCgkJCQkkY29udGVudCA9IGN1cmxfZXhlYygkY2gpOw0KCQkJCS8vIGNsb3NlIHRoZSBjb25uZWN0aW9uDQoJCQkJY3VybF9jbG9zZSgkY2gpOw0KDQoJCQkJLy8gcmV0dXJuIGlmIGZvdW5kDQoJCQkJaWYgKFN0cmluZ0hlbHBlcjo6Y2hlY2soJGNvbnRlbnQpKQ0KCQkJCXsNCgkJCQkJcmV0dXJuICRjb250ZW50Ow0KCQkJCX0NCgkJCX0NCgkJCWVsc2VpZiAoIXNlbGY6OiRjdXJsRXJyb3IpDQoJCQl7DQoJCQkJLy8gc2V0IHRoZSBub3RpY2UNCgkJCQlGYWN0b3J5OjpnZXRBcHBsaWNhdGlvbigpLT5lbnF1ZXVlTWVzc2FnZShUZXh0OjpfKCc8aDI+Q3VybCBOb3QgRm91bmQhPC9oMj48cD5QbGVhc2Ugc2V0dXAgY3VybCBvbiB5b3VyIHN5c3RlbSwgb3IgPGI+W1tbY29tcG9uZW50XV1dPC9iPiB3aWxsIG5vdCBmdW5jdGlvbiBjb3JyZWN0bHkhPC9wPicpLCAnRXJyb3InKTsNCgkJCQkvLyBsb2FkIHRoaXMgbm90aWNlIG9ubHkgb25jZQ0KCQkJCXNlbGY6OiRjdXJsRXJyb3IgPSB0cnVlOw0KCQkJfQ0KCQl9DQoJCXJldHVybiAkbm9uZTsNCgl9DQoNCgkvKioNCgkgKiBXcml0ZSBhIGZpbGUgdG8gdGhlIHNlcnZlcg0KCSAqDQoJICogQHBhcmFtICBzdHJpbmcgICAkcGF0aCAgICBUaGUgcGF0aCBhbmQgZmlsZSBuYW1lIHdoZXJlIHRvIHNhZmUgdGhlIGRhdGENCgkgKiBAcGFyYW0gIHN0cmluZyAgICRkYXRhICAgIFRoZSBkYXRhIHRvIHNhZmUNCLine truncated
(23, 1, 'Some component helper\r\n\r\n@since 3.0.11', '', '', '640b5352-fb09-425f-a26e-cd44eda03f15', 'dXNlIEpvb21sYVxJbnB1dFxJbnB1dDsNCnVzZSBKb29tbGFcQ01TXENvbXBvbmVudFxDb21wb25lbnRIZWxwZXI7DQp1c2UgSm9vbWxhXFJlZ2lzdHJ5XFJlZ2lzdHJ5Ow==', '', '', '{}', 'CS8qKg0KCSAqIFRoZSBjdXJyZW50IG9wdGlvbg0KCSAqDQoJICogQHZhciAgICBzdHJpbmcNCgkgKiBAc2luY2UgICAzLjAuMTENCgkgKi8NCglwdWJsaWMgc3RhdGljICRvcHRpb247DQoNCgkvKioNCgkgKiBUaGUgY29tcG9uZW50IHBhcmFtcyBsaXN0IGNhY2hlDQoJICoNCgkgKiBAdmFyICAgIFJlZ2lzdHJ5W10NCgkgKiBAc2luY2UgICAzLjAuMTENCgkgKi8NCglwcm90ZWN0ZWQgc3RhdGljICRwYXJhbXMgPSBhcnJheSgpOw0KDQoJLyoqDQoJICogR2V0cyB0aGUgcGFyYW1ldGVyIG9iamVjdCBmb3IgdGhlIGNvbXBvbmVudA0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAgICAgICRvcHRpb24gIFRoZSBvcHRpb24gZm9yIHRoZSBjb21wb25lbnQuDQoJICoNCgkgKiBAcmV0dXJuICBSZWdpc3RyeSAgICAgQSBSZWdpc3RyeSBvYmplY3QuDQoJICoNCgkgKiBAc2VlICAgICBSZWdpc3RyeQ0KCSAqIEBzaW5jZSAgIDMuMC4xMQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0UGFyYW1zKCRvcHRpb24gPSBudWxsKTogUmVnaXN0cnkNCgl7DQoJCS8vIGNoZWNrIHRoYXQgd2UgaGF2ZSBhbiBvcHRpb24NCgkJaWYgKGVtcHR5KCRvcHRpb24pKQ0KCQl7DQoJCQkkb3B0aW9uID0gc2VsZjo6Z2V0T3B0aW9uKCk7DQoJCX0NCg0KCQkvLyBnZXQgZ2xvYmFsIHZhbHVlDQoJCWlmICghaXNzZXQoc2VsZjo6JHBhcmFtc1skb3B0aW9uXSkgfHwgIXNlbGY6OiRwYXJhbXNbJG9wdGlvbl0gaW5zdGFuY2VvZiBSZWdpc3RyeSkNCgkJew0KCQkJc2VsZjo6JHBhcmFtc1skb3B0aW9uXSA9IENvbXBvbmVudEhlbHBlcjo6Z2V0UGFyYW1zKCRvcHRpb24pOw0KCQl9DQoNCgkJcmV0dXJuIHNlbGY6OiRwYXJhbXNbJG9wdGlvbl07DQoJfQ0KDQoJLyoqDQoJICogR2V0cyB0aGUgY29tcG9uZW50IG9wdGlvbg0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nfG51bGwgICAgICAkZGVmYXVsdCAgVGhlIGRlZmF1bHQgcmV0dXJuIHZhbHVlIGlmIG5vbmUgaXMgZm91bmQNCgkgKg0KCSAqIEByZXR1cm4gIHN0cmluZ3xudWxsICAgICAgQSBjb21wb25lbnQgb3B0aW9uDQoJICoNCgkgKiBAc2luY2UgICAzLjAuMTENCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldE9wdGlvbigkZGVmYXVsdCA9ICdlbXB0eScpOiA/c3RyaW5nDQoJew0KCQlpZiAoZW1wdHkoc2VsZjo6JG9wdGlvbikpDQoJCXsNCgkJCS8vIGdldCB0aGUgb3B0aW9uIGZyb20gdGhlIHVybCBpbnB1dA0KCQkJc2VsZjo6JG9wdGlvbiA9IChuZXcgSW5wdXQpLT5nZXRTdHJpbmcoJ29wdGlvbicsIGZhbHNlKTsNCgkJfQ0KDQoJCWlmIChzZWxmOjokb3B0aW9uKQ0KCQl7DQoJCQkgcmV0dXJuIHNlbGY6OiRvcHRpb247DQoJCX0NCg0KCQlyZXR1cm4gJGRlZmF1bHQ7DQoJfQ0KDQoJLyoqDQoJICogR2V0cyB0aGUgY29tcG9uZW50IGNvZGUgbmFtZQ0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAgICAgICAgJG9wdGlvbiAgIFRoZSBvcHRpb24gZm9yIHRoZSBjb21wb25lbnQuDQoJICogQHBhcmFtICAgc3RyaW5nfG51bGwgICAgJGRlZmF1bHQgIFRoZSBkZWZhdWx0IHJldHVybiB2YWx1ZSBpZiBub25lIGlzIGZvdW5kDQoJICoNCgkgKiBAcmV0dXJuICBzdHJpbmd8bnVsbCAgICBBIGNvbXBvbmVudCBjb2RlIG5hbWUNCgkgKg0KCSAqIEBzaW5jZSAgIDMuMC4xMQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0Q29kZSgkb3B0aW9uID0gbnVsbCwgJGRlZmF1bHQgPSBudWxsKTogP3N0cmluZw0KCXsNCgkJLy8gY2hlY2sgdGhhdCB3ZSBoYXZlIGFuIG9wdGlvbg0KCQlpZiAoZW1wdHkoJG9wdGlvbikpDQoJCXsNCgkJCSRvcHRpb24gPSBzZWxmOjpnZXRPcHRpb24oKTsNCgkJfQ0KCQkvLyBvcHRpb24gd2l0aCBjb21fDQoJCWlmIChpc19zdHJpbmcoJG9wdGlvbikgJiYgc3RycG9zKCRvcHRpb24sICdjb21fJykgPT09IDApDQoJCXsNCgkJCXJldHVybiBzdHJ0b2xvd2VyKHRyaW0oc3Vic3RyKCRvcHRpb24sIDQpKSk7DQoJCX0NCg0KCQlyZXR1cm4gJGRlZmF1bHQ7DQoJfQ0KDQoJLyoqDQoJICogR2V0cyB0aGUgY29tcG9uZW50IGFic3RyYWN0IGhlbHBlciBjbGFzcw0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nfG51bGwgICAgJG9wdGlvbiAgIFRoZSBvcHRpb24gZm9yIHRoZSBjb21wb25lbnQuDQoJICogQHBhcmFtICAgc3RyaW5nfG51bGwgICAgJGRlZmF1bHQgIFRoZSBkZWZhdWx0IHJldHVybiB2YWx1ZSBpZiBub25lIGlzIGZvdW5kDQoJICoNCgkgKiBAcmV0dXJuICBzdHJpbmd8bnVsbCAgICBBIGNvbXBvbmVudCBoZWxwZXIgbmFtZQ0KCSAqDQoJICogQHNpbmNlICAgMy4wLjExDQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXQoJG9wdGlvbiA9IG51bGwsICRkZWZhdWx0ID0gbnVsbCk6ID9zdHJpbmcNCgl7DQoJCS8vIGNoZWNrIHRoYXQgd2UgaGF2ZSBhbiBvcHRpb24NCgkJLy8gYW5kIGdldCB0aGUgY29kZSBuYW1lIGZyb20gaXQNCgkJaWYgKCgkY29kZV9uYW1lID0gc2VsZjo6Z2V0Q29kZSgkb3B0aW9uLCBmYWxzZSkpICE9PSBmYWxzZSkNCgkJew0KCQkJLy8gd2UgYnVpbGQgdGhlIGhlbHBlciBjbGFzcyBuYW1lDQoJCQkkaGVscGVyX25hbWUgPSAnXFwnIC4gXHVjZmlyc3QoJGNvZGVfbmFtZSkgLiAnSGVscGVyJzsNCgkJCS8vIGNoZWNrIGlmIGNsYXNzIGV4aXN0DQoJCQlpZiAoY2xhc3NfZXhpc3RzKCRoZWxwZXJfbmFtZSkpDQoJCQl7DQoJCQkJcmV0dXJuICRoZWxwZXJfbmFtZTsNCgkJCX0NCgkJfQ0KDQoJCXJldHVybiAkZGVmYXVsdDsNCgl9DQoNCgkvKioNCgkgKiBDaGVjayBpZiB0aGUgaGVscGVyIGNsYXNzIG9mIHRoaXMgY29tcG9uZW50IGhhcyBhIG1ldGhvZA0KCSAqDQoJICogQHBhcmFtICAgU3RyaW5nICAgICAkbWV0aG9kICBUaGUgbWV0aG9kIG5hbWUgdG8gc2VhcmNoIGZvcg0KCSAqIEBwYXJhbSAgIFN0cmluZyAgICAgJG9wdGlvbiAgVGhlIG9wdGlvbiBmb3IgdGhlIGNvbXBvbmVudC4NCgkgKg0KCSAqIEByZXR1cm4gIGJvb2wgICAgdHJ1ZSBpZiBtZXRob2QgZXhpc3QNCgkgKg0KCSAqIEBzaW5jZSAgIDMuMC4xMQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWV0aG9kRXhpc3RzKCRtZXRob2QsICRvcHRpb24gPSBudWxsKQ0KCXsNCgkJLy8gZ2V0IHRoZSBoZWxwZXIgY2xhc3MNCgkJaWYgKCgkaGVscGVyID0gc2VsZjo6Z2V0KCRvcHRpb24sIGZhbHNlKSkgIT09IGZhbHNlKQ0KCQl7DQoJCQlpZiAobWV0aG9kX2V4aXN0cygkaGVscGVyLCAkbWV0aG9kKSkNCgkJCXsNCgkJCQlyZXR1cm4gdHJ1ZTsNCgkJCX0NCgkJfQ0KDQoJCXJldHVybiBmYWxzZTsNCgl9DQo=', '{}', 'Helper', 'VDM\\Joomla\\Utilities.Component.Helper', '1.0.0', '{}', 'Utilities Component Helper', 'abstract class', '{}', '', 1, '2022-05-13 05:36:32', '2022-12-16 16:32:00', 22, 7),
(23, 1, 'Some component helper\r\n\r\n@since 3.0.11', '', '', '640b5352-fb09-425f-a26e-cd44eda03f15', 'dXNlIEpvb21sYVxJbnB1dFxJbnB1dDsNCnVzZSBKb29tbGFcQ01TXENvbXBvbmVudFxDb21wb25lbnRIZWxwZXI7DQp1c2UgSm9vbWxhXFJlZ2lzdHJ5XFJlZ2lzdHJ5Ow==', '', '', '{}', 'CS8qKg0KCSAqIFRoZSBjdXJyZW50IG9wdGlvbg0KCSAqDQoJICogQHZhciAgICBzdHJpbmcNCgkgKiBAc2luY2UgICAzLjAuMTENCgkgKi8NCglwdWJsaWMgc3RhdGljIHN0cmluZyAkb3B0aW9uOw0KDQoJLyoqDQoJICogVGhlIGNvbXBvbmVudCBwYXJhbXMgbGlzdCBjYWNoZQ0KCSAqDQoJICogQHZhciAgICBSZWdpc3RyeVtdDQoJICogQHNpbmNlICAgMy4wLjExDQoJICovDQoJcHJvdGVjdGVkIHN0YXRpYyBhcnJheSAkcGFyYW1zID0gW107DQoNCgkvKioNCgkgKiBHZXRzIHRoZSBwYXJhbWV0ZXIgb2JqZWN0IGZvciB0aGUgY29tcG9uZW50DQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmd8bnVsbCAgICAgJG9wdGlvbiAgVGhlIG9wdGlvbiBmb3IgdGhlIGNvbXBvbmVudC4NCgkgKg0KCSAqIEByZXR1cm4gIFJlZ2lzdHJ5ICAgICBBIFJlZ2lzdHJ5IG9iamVjdC4NCgkgKiBAc2VlICAgICBSZWdpc3RyeQ0KCSAqIEBzaW5jZSAgIDMuMC4xMQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0UGFyYW1zKD9zdHJpbmcgJG9wdGlvbiA9IG51bGwpOiBSZWdpc3RyeQ0KCXsNCgkJLy8gY2hlY2sgdGhhdCB3ZSBoYXZlIGFuIG9wdGlvbg0KCQlpZiAoZW1wdHkoJG9wdGlvbikpDQoJCXsNCgkJCSRvcHRpb24gPSBzZWxmOjpnZXRPcHRpb24oKTsNCgkJfQ0KDQoJCS8vIGdldCBnbG9iYWwgdmFsdWUNCgkJaWYgKCFpc3NldChzZWxmOjokcGFyYW1zWyRvcHRpb25dKSB8fCAhc2VsZjo6JHBhcmFtc1skb3B0aW9uXSBpbnN0YW5jZW9mIFJlZ2lzdHJ5KQ0KCQl7DQoJCQlzZWxmOjokcGFyYW1zWyRvcHRpb25dID0gQ29tcG9uZW50SGVscGVyOjpnZXRQYXJhbXMoJG9wdGlvbik7DQoJCX0NCg0KCQlyZXR1cm4gc2VsZjo6JHBhcmFtc1skb3B0aW9uXTsNCgl9DQoNCgkvKioNCgkgKiBHZXRzIHRoZSBjb21wb25lbnQgb3B0aW9uDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmd8bnVsbCAgICAgICRkZWZhdWx0ICBUaGUgZGVmYXVsdCByZXR1cm4gdmFsdWUgaWYgbm9uZSBpcyBmb3VuZA0KCSAqDQoJICogQHJldHVybiAgc3RyaW5nfG51bGwgICAgICBBIGNvbXBvbmVudCBvcHRpb24NCgkgKiBAc2luY2UgICAzLjAuMTENCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldE9wdGlvbihzdHJpbmcgJGRlZmF1bHQgPSAnZW1wdHknKTogP3N0cmluZw0KCXsNCgkJaWYgKGVtcHR5KHNlbGY6OiRvcHRpb24pKQ0KCQl7DQoJCQkvLyBnZXQgdGhlIG9wdGlvbiBmcm9tIHRoZSB1cmwgaW5wdXQNCgkJCXNlbGY6OiRvcHRpb24gPSAobmV3IElucHV0KS0+Z2V0U3RyaW5nKCdvcHRpb24nLCBmYWxzZSk7DQoJCX0NCg0KCQlpZiAoc2VsZjo6JG9wdGlvbikNCgkJew0KCQkJIHJldHVybiBzZWxmOjokb3B0aW9uOw0KCQl9DQoNCgkJcmV0dXJuICRkZWZhdWx0Ow0KCX0NCg0KCS8qKg0KCSAqIEdldHMgdGhlIGNvbXBvbmVudCBjb2RlIG5hbWUNCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZ3xudWxsICAgICRvcHRpb24gICBUaGUgb3B0aW9uIGZvciB0aGUgY29tcG9uZW50Lg0KCSAqIEBwYXJhbSAgIHN0cmluZ3xudWxsICAgICRkZWZhdWx0ICBUaGUgZGVmYXVsdCByZXR1cm4gdmFsdWUgaWYgbm9uZSBpcyBmb3VuZA0KCSAqDQoJICogQHJldHVybiAgc3RyaW5nfG51bGwgICAgQSBjb21wb25lbnQgY29kZSBuYW1lDQoJICogQHNpbmNlICAgMy4wLjExDQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRDb2RlKD9zdHJpbmcgJG9wdGlvbiA9IG51bGwsID9zdHJpbmcgJGRlZmF1bHQgPSBudWxsKTogP3N0cmluZw0KCXsNCgkJLy8gY2hlY2sgdGhhdCB3ZSBoYXZlIGFuIG9wdGlvbg0KCQlpZiAoZW1wdHkoJG9wdGlvbikpDQoJCXsNCgkJCSRvcHRpb24gPSBzZWxmOjpnZXRPcHRpb24oKTsNCgkJfQ0KCQkvLyBvcHRpb24gd2l0aCBjb21fDQoJCWlmIChpc19zdHJpbmcoJG9wdGlvbikgJiYgc3RycG9zKCRvcHRpb24sICdjb21fJykgPT09IDApDQoJCXsNCgkJCXJldHVybiBzdHJ0b2xvd2VyKHRyaW0oc3Vic3RyKCRvcHRpb24sIDQpKSk7DQoJCX0NCg0KCQlyZXR1cm4gJGRlZmF1bHQ7DQoJfQ0KDQoJLyoqDQoJICogR2V0cyB0aGUgY29tcG9uZW50IGFic3RyYWN0IGhlbHBlciBjbGFzcw0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nfG51bGwgICAgJG9wdGlvbiAgIFRoZSBvcHRpb24gZm9yIHRoZSBjb21wb25lbnQuDQoJICogQHBhcmFtICAgc3RyaW5nfG51bGwgICAgJGRlZmF1bHQgIFRoZSBkZWZhdWx0IHJldHVybiB2YWx1ZSBpZiBub25lIGlzIGZvdW5kDQoJICoNCgkgKiBAcmV0dXJuICBzdHJpbmd8bnVsbCAgICBBIGNvbXBvbmVudCBoZWxwZXIgbmFtZQ0KCSAqDQoJICogQHNpbmNlICAgMy4wLjExDQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXQoc3RyaW5nICRvcHRpb24gPSBudWxsLCBzdHJpbmcgJGRlZmF1bHQgPSBudWxsKTogP3N0cmluZw0KCXsNCgkJLy8gY2hlY2sgdGhhdCB3ZSBoYXZlIGFuIG9wdGlvbg0KCQkvLyBhbmQgZ2V0IHRoZSBjb2RlIG5hbWUgZnJvbSBpdA0KCQlpZiAoKCRjb2RlX25hbWUgPSBzZWxmOjpnZXRDb2RlKCRvcHRpb24sIGZhbHNlKSkgIT09IGZhbHNlKQ0KCQl7DQoJCQkvLyB3ZSBidWlsZCB0aGUgaGVscGVyIGNsYXNzIG5hbWUNCgkJCSRoZWxwZXJfbmFtZSA9ICdcXCcgLiBcdWNmaXJzdCgkY29kZV9uYW1lKSAuICdIZWxwZXInOw0KCQkJLy8gY2hlY2sgaWYgY2xhc3MgZXhpc3QNCgkJCWlmIChjbGFzc19leGlzdHMoJGhlbHBlcl9uYW1lKSkNCgkJCXsNCgkJCQlyZXR1cm4gJGhlbHBlcl9uYW1lOw0KCQkJfQ0KCQl9DQoNCgkJcmV0dXJuICRkZWZhdWx0Ow0KCX0NCg0KCS8qKg0KCSAqIENoZWNrIGlmIHRoZSBoZWxwZXIgY2xhc3Mgb2YgdGhpcyBjb21wb25lbnQgaGFzIGEgbWV0aG9kDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAgICAgJG1ldGhvZCAgVGhlIG1ldGhvZCBuYW1lIHRvIHNlYXJjaCBmb3INCgkgKiBAcGFyYW0gICBzdHJpbmd8bnVsbCAgJG9wdGlvbiAgVGhlIG9wdGlvbiBmb3IgdGhlIGNvbXBvbmVudC4NCgkgKg0KCSAqIEByZXR1cm4gIGJvb2wgICAgdHJ1ZSBpZiBtZXRob2QgZXhpc3QNCgkgKg0KCSAqIEBzaW5jZSAgIDMuMC4xMQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWV0aG9kRXhpc3RzKHN0cmluZyAkbWV0aG9kLCBzdHJpbmcgJG9wdGlvbiA9IG51bGwpOiBib29sDQoJew0KCQkvLyBnZXQgdGhlIGhlbHBlciBjbGFzcw0KCQlyZXR1cm4gKCRoZWxwZXIgPSBzZWxmOjpnZXQoJG9wdGlvbiwgZmFsc2UpKSAhPT0gZmFsc2UgJiYNCgkJCW1ldGhvZF9leGlzdHMoJGhlbHBlciwgJG1ldGhvZCk7DQoJfQ0KDQoJLyoqDQoJICogQ2hlY2sgaWYgdGhlIGhlbHBlciBjbGFzcyBvZiB0aGlzIGNvbXBvbmVudCBoYXMgYSBtZXRob2QsIGFuZCBjYWxsIGl0IHdpdGggdGhlIGFyZ3VtZW50cw0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAgICAgICAkbWV0aG9kICAgICBUaGUgbWV0aG9kIG5hbWUgdG8gc2VhcmNoIGZvcg0KCSAqIEBwYXJhbSAgIGFycmF5ICAgICAgICAgJGFyZ3VtZW50cyAgVGhlIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb24uDQoJICogQHBhcmFtILine truncated
(24, 1, 'Image helper\r\n\r\n@since 3.0.11', '', '', '962b15d8-915f-4cd7-aea6-7cf82afdc20b', 'dXNlIEpvb21sYVxDTVNcRmlsZXN5c3RlbVxGaWxlOw0KdXNlIEpvb21sYVxDTVNcRmlsZXN5c3RlbVxGb2xkZXI7DQp1c2UgSm9vbWxhXENNU1xVcmlcVXJpOw0KdXNlIEpvb21sYVxDTVNcSW1hZ2VcSW1hZ2U7', '', '', '{\"load_selection0\":{\"load\":\"91004529-94a9-4590-b842-e7c6b624ecf5\"},\"load_selection1\":{\"load\":\"f11dc790-713e-4706-9a85-a318ed3ad56e\"}}', 'CS8qKg0KCSAqIFJlc2l6ZSBhbiBpbWFnZQ0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAgICRmdWxsUGF0aCAgIFRoZSBmdWxsIHBhdGggdG8gdGhlIGltYWdlDQoJICogQHBhcmFtICAgc3RyaW5nICAgICR0eXBlICAgICAgICBUaGUgdHlwZSBvZiBpbWFnZQ0KCSAqDQoJICogQHJldHVybiBib29sDQoJICogQHNpbmNlIDMuMC4xMQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVzaXplKHN0cmluZyAkZnVsbFBhdGgsIHN0cmluZyAkdHlwZSkNCgl7DQoJCS8vIGZpcnN0IGNoZWNrIGlmIHdlIHNob3VsZCByZXNpemUgdGhpcyB0YXJnZXQNCgkJaWYgKDEgPT0gSGVscGVyOjpnZXRQYXJhbXMoKS0+Z2V0KCR0eXBlIC4gJ19yZXNpemUnLCAwKSkNCgkJew0KCQkJLy8gbG9hZCB0aGUgc2l6ZSB0byBiZSBzZXQNCgkJCSRoZWlnaHQgPSBIZWxwZXI6OmdldFBhcmFtcygpLT5nZXQoJHR5cGUgLiAnX2hlaWdodCcsICdub3Rfc2V0Jyk7DQoJCQkkd2lkdGggPSBIZWxwZXI6OmdldFBhcmFtcygpLT5nZXQoJHR5cGUgLiAnX3dpZHRoJywgJ25vdF9zZXQnKTsNCg0KCQkJLy8gR2V0IGZpbGUgZXh0ZW5zaW9uL2Zvcm1hdA0KCQkJJGZpbGVfZm9ybWF0ID0gTWltZUhlbHBlcjo6ZXh0ZW5zaW9uKCRmdWxsUGF0aCk7DQoNCgkJCS8vIGdldCBpbWFnZSBwcm9wZXJ0aWVzDQoJCQkkaW1hZ2UgPSBzZWxmOjpnZXRQcm9wZXJ0aWVzKCRmdWxsUGF0aCk7DQoNCgkJCS8vIG1ha2Ugc3VyZSB3ZSBoYXZlIGFuIG9iamVjdA0KCQkJaWYgKE9iamVjdEhlbHBlcjo6Y2hlY2soJGltYWdlKSAmJiBpc19zdHJpbmcoJGZpbGVfZm9ybWF0KSkNCgkJCXsNCgkJCQlpZiAoJHdpZHRoICE9PSAnbm90X3NldCcgJiYgJGhlaWdodCAhPT0gJ25vdF9zZXQnICYmICgkaW1hZ2UtPndpZHRoICE9ICR3aWR0aCB8fCAkaW1hZ2UtPmhlaWdodCAhPSAkaGVpZ2h0KSkNCgkJCQl7DQoJCQkJCS8vIGlmIGltYWdlIGlzIGh1Z2UgYW5kIHNob3VsZCBvbmx5IGJlIHNjYWxlZCwgcmVzaXplIGl0IG9uIHRoZSBmbHkNCgkJCQkJaWYoKCRpbWFnZS0+d2lkdGggPiA5MDAgfHwgJGltYWdlLT5oZWlnaHQgPiA3MDApICYmICgkaGVpZ2h0ID09IDAgfHwgJHdpZHRoID09IDApKQ0KCQkJCQl7DQoJCQkJCQkvLyBzZWxlY3QgdGhlIGltYWdlICJnZXR0ZXIiIGJhc2VkIG9uIGZvcm1hdA0KCQkJCQkJaWYoJGZpbGVfZm9ybWF0ID09ICJqcGciIHx8ICRmaWxlX2Zvcm1hdCA9PSAianBlZyIgKQ0KCQkJCQkJew0KCQkJCQkJCSRzcmMgPSBpbWFnZWNyZWF0ZWZyb21qcGVnKCRmdWxsUGF0aCk7DQoJCQkJCQl9DQoJCQkJCQllbHNlaWYoJGZpbGVfZm9ybWF0ID09ICJwbmciKQ0KCQkJCQkJew0KCQkJCQkJCSRzcmMgPSBpbWFnZWNyZWF0ZWZyb21wbmcoJGZ1bGxQYXRoKTsNCgkJCQkJCX0NCgkJCQkJCWVsc2VpZigkZmlsZV9mb3JtYXQgPT0gImdpZiIpDQoJCQkJCQl7DQoJCQkJCQkJJHNyYyA9IGltYWdlY3JlYXRlZnJvbWdpZigkZnVsbFBhdGgpOw0KCQkJCQkJfQ0KCQkJCQkJLy8gd2Ugb25seSBzdXBwb3J0IHRoZSBhYm92ZSB0aHJlZSBmb3JtYXRzIGZvciBub3cNCgkJCQkJCWVsc2UNCgkJCQkJCXsNCgkJCQkJCQlyZXR1cm4gZmFsc2U7DQoJCQkJCQl9DQoNCgkJCQkJCS8vIHdvcmtvdXQgdGhlIHJhdGlvIGlmIHdlIGhhdmUgaGVpZ2h0DQoJCQkJCQlpZiAoJGhlaWdodCAhPSAwKQ0KCQkJCQkJew0KCQkJCQkJCSRoZWlnaHRfcmF0aW8gPSAkaW1hZ2UtPmhlaWdodCAvICRoZWlnaHQ7DQoJCQkJCQl9DQoNCgkJCQkJCS8vIHdvcmtvdXQgdGhlIHJhdGlvIGlmIHdlIGhhdmUgd2lkdGgNCgkJCQkJCWlmICgkd2lkdGggIT0gMCkNCgkJCQkJCXsNCgkJCQkJCQkkd2lkdGhfcmF0aW8gPSAkaW1hZ2UtPndpZHRoIC8gJHdpZHRoOw0KCQkJCQkJfQ0KDQoJCQkJCQkvLyBzZXQgbWF4IHJhdGlvIGJhc2VkIG9uIGJvdGgNCgkJCQkJCWlmIChpc3NldCgkaGVpZ2h0X3JhdGlvKSAmJiBpc3NldCgkd2lkdGhfcmF0aW8pKQ0KCQkJCQkJew0KCQkJCQkJCSRtYXhfcmF0aW8JPSBtYXgoJHdpZHRoX3JhdGlvLCAkaGVpZ2h0X3JhdGlvKTsNCgkJCQkJCX0NCgkJCQkJCS8vIHNldCBtYXggcmF0aW8gYmFzZWQgb24gd2lkdGgNCgkJCQkJCWVsc2VpZiAoaXNzZXQoJHdpZHRoX3JhdGlvKSkNCgkJCQkJCXsNCgkJCQkJCQkkbWF4X3JhdGlvCT0gJHdpZHRoX3JhdGlvOw0KCQkJCQkJfQ0KCQkJCQkJLy8gc2V0IG1heCByYXRpbyBiYXNlZCBvbiBoZWlnaHQNCgkJCQkJCWVsc2VpZiAoaXNzZXQoJGhlaWdodF9yYXRpbykpDQoJCQkJCQl7DQoJCQkJCQkJJG1heF9yYXRpbwk9ICRoZWlnaHRfcmF0aW87DQoJCQkJCQl9DQoNCgkJCQkJCS8vIGlmIHdlIGhhdmUgcmF0aW8gZG8gdGhlIGNvbnZlcnNpb24NCgkJCQkJCWlmICgkbWF4X3JhdGlvID4gMSkNCgkJCQkJCXsNCgkJCQkJCQkkbmV3X3dpZHRoCT0gJGltYWdlLT53aWR0aCAvICRtYXhfcmF0aW87DQoJCQkJCQkJJG5ld19oZWlnaHQJPSAkaW1hZ2UtPmhlaWdodCAvICRtYXhfcmF0aW87DQoJCQkJCQl9DQoJCQkJCQllbHNlDQoJCQkJCQl7DQoJCQkJCQkJJG5ld193aWR0aAk9ICRpbWFnZS0+d2lkdGg7DQoJCQkJCQkJJG5ld19oZWlnaHQJPSAkaW1hZ2UtPmhlaWdodDsNCgkJCQkJCX0NCg0KCQkJCQkJJHRtcAkJCT0gaW1hZ2VjcmVhdGV0cnVlY29sb3IoJG5ld193aWR0aCwgJG5ld19oZWlnaHQpOw0KCQkJCQkJJGJhY2tncm91bmRfY29sb3IJPSBpbWFnZWNvbG9yYWxsb2NhdGUoJHRtcCwgMjU1LCAyNTUsIDI1NSk7DQoNCgkJCQkJCWltYWdlZmlsbCgkdG1wLCAwLCAwLCAkYmFja2dyb3VuZF9jb2xvcik7DQoJCQkJCQlpbWFnZWNvcHlyZXNhbXBsZWQoJHRtcCwgJHNyYywgMCwgMCwgMCwgMCwkbmV3X3dpZHRoLCAkbmV3X2hlaWdodCwgJGltYWdlLT53aWR0aCwgJGltYWdlLT5oZWlnaHQpOw0KCQkJCQkJaW1hZ2VqcGVnKCR0bXAsICRmdWxsUGF0aCwgMTAwKTsNCgkJCQkJCWltYWdlZGVzdHJveSgkc3JjKTsNCgkJCQkJCWltYWdlZGVzdHJveSgkdG1wKTsNCgkJCQkJfQ0KCQkJCQkvLyB3ZSBvbmx5IGNyb3AgaWYgYm90aCBoZWlnaHQgYW5kIHdpZHRoIGlzIHNldCB0byBjcm9wDQoJCQkJCWlmICgkaGVpZ2h0ICE9IDAgJiYgJHdpZHRoICE9IDApDQoJCQkJCXsNCgkJCQkJCS8vIGdldCB0aGUgY3VycmVudCBjb21wb25lbnQgY29kZSBuYW1lDQoJCQkJCQlpZiAoKCRjb21wb25lbnRfY29kZV9uYW1lID0gSGVscGVyOjpnZXRDb2RlKG51bGwsIGZhbHNlKSkgPT09IGZhbHNlKQ0KCQkJCQkJew0KCQkJCQkJCS8vIGlmIHdlIGNhbid0IGdldCB0aGUgY29tcG9uZW50IGNvZGUgbmFtZSB3ZSBzaG91bGQgYnJlYWsgcHV0IG5vdw0KCQkJCQkJCXJldHVybiBmYWxzZTsNCgkJCQkJCX0NCgkJCQkJCS8vIEluY2x1ZGUgd2lkZWltYWdlIC0gaHR0cDovL3dpZGVpbWFnZS5zb3VyY2Vmb3JnZS5uZXQgVE9ETzogaHR0cHM6Ly9naXRodWIuY29tL3Ntb3R0dC9XaWRLine truncated
(25, 1, 'Upload Helper\r\n\r\n@since 3.0.11', '', '', 'd7600b43-771a-4747-9f5d-952765721799', 'dXNlIEpvb21sYVxDTVNcRmFjdG9yeTsNCnVzZSBKb29tbGFcQ01TXExhbmd1YWdlXFRleHQ7DQp1c2UgSm9vbWxhXENNU1xGaWxlc3lzdGVtXEZpbGU7DQp1c2UgSm9vbWxhXENNU1xGaWxlc3lzdGVtXEZvbGRlcjsNCnVzZSBKb29tbGFcQ01TXEZpbGVzeXN0ZW1cUGF0aDs=', '', '', '{\"load_selection0\":{\"load\":\"f11dc790-713e-4706-9a85-a318ed3ad56e\"},\"load_selection1\":{\"load\":\"1f28cb53-60d9-4db1-b517-3c7dc6b429ef\"}}', 'CS8qKg0KCSAqIFRydWUgdG8gdXNlIHN0cmVhbXMNCgkgKg0KCSAqIEB2YXIgICAgYm9vbA0KCSAqDQoJICogQHNpbmNlICAzLjAuMTENCgkgKi8NCglwdWJsaWMgc3RhdGljICR1c2VTdHJlYW1zID0gZmFsc2U7DQoNCgkvKioNCgkgKiBBbGxvdyB0aGUgdXBsb2FkIG9mIHVuc2FmZSBmaWxlcw0KCSAqDQoJICogQHZhciAgICBib29sDQoJICoNCgkgKiBAc2luY2UgIDMuMC4xMQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgJGFsbG93VW5zYWZlID0gZmFsc2U7DQoNCgkvKioNCgkgKiBPcHRpb25zIHRvIElucHV0RmlsdGVyOjppc1NhZmVGaWxlDQoJICoNCgkgKiBAdmFyICAgIGFycmF5DQoJICoNCgkgKiBAc2luY2UgIDMuMC4xMQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgJHNhZmVGaWxlT3B0aW9ucyA9IGFycmF5KCk7DQoNCgkvKioNCgkgKiBTZXQgdGhlIGVycm9yIGJlaGF2aW9yDQoJICoNCgkgKiBAdmFyICAgIGJvb2wNCgkgKg0KCSAqIEBzaW5jZSAgMy4wLjExDQoJICovDQoJcHVibGljIHN0YXRpYyAkZW5xdWV1ZUVycm9yID0gdHJ1ZTsNCg0KCS8qKg0KCSAqIEVycm9ycw0KCSAqDQoJICogQHZhciAgICBhcnJheQ0KCSAqDQoJICogQHNpbmNlICAzLjAuMTENCgkgKi8NCglwcm90ZWN0ZWQgc3RhdGljICRlcnJvcnMgPSBhcnJheSgpOw0KDQoJLyoqDQoJICogR2V0IGZpbGUvZmlsZXMgZnJvbSBhIEhUVFAgdXBsb2FkLg0KCSAqDQoJICogQHBhcmFtICBzdHJpbmcgICAgICAgICAgJGZpZWxkICAgICAgICBUaGUgaW5wdXQgZmllbGQgbmFtZQ0KCSAqIEBwYXJhbSAgc3RyaW5nICAgICAgICAgICR0eXBlICAgICAgICBUaGUgZmlsZSB0eXBlDQoJICogQHBhcmFtICBzdHJpbmd8bnVsbCAgICRmaWx0ZXIgICAgICAgIFRoZSBmaWx0ZXIgdG8gdXNlIHdoZW4gdXBsb2FkaW5nIHRoZSBmaWxlDQoJICogQHBhcmFtICBzdHJpbmd8bnVsbCAgICRwYXRoICAgICAgICBUaGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBpbWFnZSBtdXN0IGJlIHBsYWNlZA0KCSAqDQoJICogQHJldHVybiAgbWl4ZWQgICBGaWxlIGRldGFpbHMgb3IgZmFsc2Ugb24gZmFpbHVyZS4NCgkgKiBAc2luY2UgIDMuMC4xMQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0KHN0cmluZyAkZmllbGQsIHN0cmluZyAkdHlwZSwgc3RyaW5nICRmaWx0ZXIgPSBudWxsLCBzdHJpbmcgJHBhdGggPSBudWxsKQ0KCXsNCgkJLy8gR2V0IHRoZSB1cGxvYWRlZCBmaWxlIGluZm9ybWF0aW9uLg0KCQkkaW5wdXQgICAgPSBGYWN0b3J5OjpnZXRBcHBsaWNhdGlvbigpLT5pbnB1dDsNCg0KCQkvLyBzZXQgdGhlIGRlZmF1bHQgZmlsdGVyDQoJCWlmIChlbXB0eSgkZmlsdGVyKSkNCgkJew0KCQkJJGZpbHRlciA9ICdhcnJheSc7DQoJCX0NCgkJLy8gaWYgcmF3IHRoZW4gYWxzbyB1bnNhZmUNCgkJLy8gc2VlOiBodHRwczovL2dpdGh1Yi5jb20vam9vbWxhL2pvb21sYS1jbXMvYmxvYi80LjEtZGV2L2FkbWluaXN0cmF0b3IvY29tcG9uZW50cy9jb21faW5zdGFsbGVyL3NyYy9Nb2RlbC9JbnN0YWxsTW9kZWwucGhwI0wyNTkNCgkJZWxzZWlmICgkZmlsdGVyID09PSAncmF3JykNCgkJew0KCQkJc2VsZjo6JGFsbG93VW5zYWZlID0gdHJ1ZTsNCgkJfQ0KDQoJCS8vIGNoZWNrIGlmIHdlIGhhdmUgYSBmaWxlIGRlc3RpbmF0aW9uIG5hbWUgaW4gdGhlIGZpZWxkIG5hbWUNCgkJJG5hbWUgPSBudWxsOw0KCQlpZiAoc3RycG9zKCRmaWVsZCwgJzonKSAhPT0gZmFsc2UpDQoJCXsNCgkJCWxpc3QoJGZpZWxkLCAkbmFtZSkgPSBleHBsb2RlKCc6JywgJGZpZWxkKTsNCgkJfQ0KDQoJCS8vIFNlZSBKSW5wdXRGaWxlczo6Z2V0Lg0KCQkkdXNlcmZpbGUgPSAkaW5wdXQtPmZpbGVzLT5nZXQoJGZpZWxkLCBudWxsLCAkZmlsdGVyKTsNCg0KCQkvLyBNYWtlIHN1cmUgdGhhdCBmaWxlIHVwbG9hZHMgYXJlIGVuYWJsZWQgaW4gcGhwLg0KCQlpZiAoIShib29sKSBpbmlfZ2V0KCdmaWxlX3VwbG9hZHMnKSkNCgkJew0KCQkJc2VsZjo6c2V0RXJyb3IoVGV4dDo6XygnV2FybmluZywgdXBsb2FkIGVycm9yLicpKTsNCg0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoNCgkJLy8gSWYgdGhlcmUgaXMgbm8gdXBsb2FkZWQgZmlsZSwgd2UgaGF2ZSBhIHByb2JsZW0uLi4NCgkJaWYgKCFpc19hcnJheSgkdXNlcmZpbGUpKQ0KCQl7DQoJCQlzZWxmOjpzZXRFcnJvcihUZXh0OjpfKCdObyB1cGxvYWQgc2VsZWN0ZWQnKSk7DQoNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KDQoJCS8vIElzIHRoZSBQSFAgdG1wIGRpcmVjdG9yeSBtaXNzaW5nPw0KCQlpZiAoJHVzZXJmaWxlWydlcnJvciddICYmICgkdXNlcmZpbGVbJ2Vycm9yJ10gPT0gVVBMT0FEX0VSUl9OT19UTVBfRElSKSkNCgkJew0KCQkJc2VsZjo6c2V0RXJyb3IoVGV4dDo6XygnVGhlcmUgd2FzIGFuIGVycm9yIHVwbG9hZGluZyB0byB0aGUgc2VydmVyLicpIC4gJzxicj4nIC4gVGV4dDo6XygnVGhlIFBIUCB0ZW1wb3JhcnkgZm9sZGVyIGlzIG5vdCBzZXQuJykpOw0KDQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCg0KCQkvLyBJcyB0aGUgbWF4IHVwbG9hZCBzaXplIHRvbyBzbWFsbCBpbiBwaHAuaW5pPw0KCQlpZiAoJHVzZXJmaWxlWydlcnJvciddICYmICgkdXNlcmZpbGVbJ2Vycm9yJ10gPT0gVVBMT0FEX0VSUl9JTklfU0laRSkpDQoJCXsNCgkJCXNlbGY6OnNldEVycm9yKFRleHQ6Ol8oJ1RoZXJlIHdhcyBhbiBlcnJvciB1cGxvYWRpbmcgdG8gdGhlIHNlcnZlci4nKSAuICc8YnI+JyAuIFRleHQ6Ol8oJ1lvdXIgZmlsZSB3YXMgaXMgbGFyZ2VyIHRoYW4gdGhlIGFsbG93ZWQgc2l6ZS4nKSk7DQoNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KDQoJCS8vIENoZWNrIGlmIHRoZXJlIHdhcyBhIGRpZmZlcmVudCBwcm9ibGVtIHVwbG9hZGluZyB0aGUgZmlsZS4NCgkJaWYgKCR1c2VyZmlsZVsnZXJyb3InXSB8fCAkdXNlcmZpbGVbJ3NpemUnXSA8IDEpDQoJCXsNCgkJCXNlbGY6OnNldEVycm9yKFRleHQ6Ol8oJ1RoZXJlIHdhcyBhbiBlcnJvciB1cGxvYWRpbmcgdG8gdGhlIHNlcnZlci4nKSk7DQoNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KDQoJCS8vIGNoZWNrIGlmIGEgcGF0aCB3YXMgcGFzc2VkIGFuZCBleGlzdA0KCQlpZiAoaXNfc3RyaW5nKCRwYXRoKSAmJiBGb2xkZXI6OmNyZWF0ZSgkcGF0aCkpDQoJCXsNCgkJCS8vIHNldCB0aGUgcGF0aA0KCQkJJHVzZXJmaWxlWydwYXRoJ10gPSAkcGF0aDsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCS8vIGdldCB0aGUgSm9vbWxhIGNvbmZpZyBjbGFzcw0KCQkJJGNvbmZpZyA9IEZhY3Rvcnk6OmdldENvbmZpZygpOw0KCQkJLy8gc2V0IHRoZSBwYXRoDQoJCQkkdXNlcmZpbGVbJ3BhdGgnXSA9ICRjb25maWctPmdldCgndG1wX3BhdGgnKTsNCgkJfQ0KDQoJCS8vIHNldCB0aGUgcmFuZG9tIHBhcnQgb2YgdGhlIG5hbWUNCgkJJHVzZXJmaWxlWyLine truncated
(26, '', 'Mime Helper\r\n\r\n@since 3.0.11', '', '', 'f11dc790-713e-4706-9a85-a318ed3ad56e', '', '', '', '{}', 'W0VYVEVSTkFMQ09ERT1odHRwczovL2dpc3QuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0xsZXdlbGx5bnZkbS83NGJlMzczMzU3ZTEzMWI4Nzc1YTc1ODJjM2RlNTA4Yi9yYXcvbWltZV90eXBlcy5waHBdDQoNCltFWFRFUk5BTENPREU9aHR0cHM6Ly9naXN0LmdpdGh1YnVzZXJjb250ZW50LmNvbS9MbGV3ZWxseW52ZG0vNzRiZTM3MzM1N2UxMzFiODc3NWE3NTgyYzNkZTUwOGIvcmF3L2dldC5waHBdDQoNCltFWFRFUk5BTENPREU9aHR0cHM6Ly9naXN0LmdpdGh1YnVzZXJjb250ZW50LmNvbS9MbGV3ZWxseW52ZG0vNzRiZTM3MzM1N2UxMzFiODc3NWE3NTgyYzNkZTUwOGIvcmF3L2V4dGVuc2lvbnMucGhwXQ==', '{}', 'MimeHelper', 'VDM\\Joomla\\Utilities.MimeHelper', '1.0.0', '{}', 'Utilities MimeHelper', 'abstract class', '{}', '', 1, '2022-05-16 14:27:38', '2022-09-20 09:51:01', 6, 9),