diff --git a/app/Config--newest/App.php b/app/Config--newest/App.php deleted file mode 100644 index b046ede9..00000000 --- a/app/Config--newest/App.php +++ /dev/null @@ -1,202 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\BaseConfig; - -class App extends BaseConfig -{ - /** - * -------------------------------------------------------------------------- - * Base Site URL - * -------------------------------------------------------------------------- - * - * URL to your CodeIgniter root. Typically, this will be your base URL, - * WITH a trailing slash: - * - * E.g., http://example.com/ - */ - public string $baseURL = BASEURL . '/engineN'; - - /** - * Allowed Hostnames in the Site URL other than the hostname in the baseURL. - * If you want to accept multiple Hostnames, set this. - * - * E.g., - * When your site URL ($baseURL) is 'http://example.com/', and your site - * also accepts 'http://media.example.com/' and 'http://accounts.example.com/': - * ['media.example.com', 'accounts.example.com'] - * - * @var list<string> - */ - public array $allowedHostnames = []; - - /** - * -------------------------------------------------------------------------- - * Index File - * -------------------------------------------------------------------------- - * - * Typically, this will be your `index.php` file, unless you've renamed it to - * something else. If you have configured your web server to remove this file - * from your site URIs, set this variable to an empty string. - */ - public string $indexPage = ''; - - /** - * -------------------------------------------------------------------------- - * URI PROTOCOL - * -------------------------------------------------------------------------- - * - * This item determines which server global should be used to retrieve the - * URI string. The default setting of 'REQUEST_URI' works for most servers. - * If your links do not seem to work, try one of the other delicious flavors: - * - * 'REQUEST_URI': Uses $_SERVER['REQUEST_URI'] - * 'QUERY_STRING': Uses $_SERVER['QUERY_STRING'] - * 'PATH_INFO': Uses $_SERVER['PATH_INFO'] - * - * WARNING: If you set this to 'PATH_INFO', URIs will always be URL-decoded! - */ - public string $uriProtocol = 'REQUEST_URI'; - - /* - |-------------------------------------------------------------------------- - | Allowed URL Characters - |-------------------------------------------------------------------------- - | - | This lets you specify which characters are permitted within your URLs. - | When someone tries to submit a URL with disallowed characters they will - | get a warning message. - | - | As a security measure you are STRONGLY encouraged to restrict URLs to - | as few characters as possible. - | - | By default, only these are allowed: `a-z 0-9~%.:_-` - | - | Set an empty string to allow all characters -- but only if you are insane. - | - | The configured value is actually a regular expression character group - | and it will be used as: '/\A[<permittedURIChars>]+\z/iu' - | - | DO NOT CHANGE THIS UNLESS YOU FULLY UNDERSTAND THE REPERCUSSIONS!! - | - */ - public string $permittedURIChars = 'a-z 0-9~%.:_\-'; - - /** - * -------------------------------------------------------------------------- - * Default Locale - * -------------------------------------------------------------------------- - * - * The Locale roughly represents the language and location that your visitor - * is viewing the site from. It affects the language strings and other - * strings (like currency markers, numbers, etc), that your program - * should run under for this request. - */ - public string $defaultLocale = 'en'; - - /** - * -------------------------------------------------------------------------- - * Negotiate Locale - * -------------------------------------------------------------------------- - * - * If true, the current Request object will automatically determine the - * language to use based on the value of the Accept-Language header. - * - * If false, no automatic detection will be performed. - */ - public bool $negotiateLocale = false; - - /** - * -------------------------------------------------------------------------- - * Supported Locales - * -------------------------------------------------------------------------- - * - * If $negotiateLocale is true, this array lists the locales supported - * by the application in descending order of priority. If no match is - * found, the first locale will be used. - * - * IncomingRequest::setLocale() also uses this list. - * - * @var list<string> - */ - public array $supportedLocales = ['en']; - - /** - * -------------------------------------------------------------------------- - * Application Timezone - * -------------------------------------------------------------------------- - * - * The default timezone that will be used in your application to display - * dates with the date helper, and can be retrieved through app_timezone() - * - * @see https://www.php.net/manual/en/timezones.php for list of timezones - * supported by PHP. - */ - public string $appTimezone = 'Asia/Jakarta'; - - /** - * -------------------------------------------------------------------------- - * Default Character Set - * -------------------------------------------------------------------------- - * - * This determines which character set is used by default in various methods - * that require a character set to be provided. - * - * @see http://php.net/htmlspecialchars for a list of supported charsets. - */ - public string $charset = 'UTF-8'; - - /** - * -------------------------------------------------------------------------- - * Force Global Secure Requests - * -------------------------------------------------------------------------- - * - * If true, this will force every request made to this application to be - * made via a secure connection (HTTPS). If the incoming request is not - * secure, the user will be redirected to a secure version of the page - * and the HTTP Strict Transport Security (HSTS) header will be set. - */ - public bool $forceGlobalSecureRequests = false; - - /** - * -------------------------------------------------------------------------- - * Reverse Proxy IPs - * -------------------------------------------------------------------------- - * - * If your server is behind a reverse proxy, you must whitelist the proxy - * IP addresses from which CodeIgniter should trust headers such as - * X-Forwarded-For or Client-IP in order to properly identify - * the visitor's IP address. - * - * You need to set a proxy IP address or IP address with subnets and - * the HTTP header for the client IP address. - * - * Here are some examples: - * [ - * '10.0.1.200' => 'X-Forwarded-For', - * '192.168.5.0/24' => 'X-Real-IP', - * ] - * - * @var array<string, string> - */ - public array $proxyIPs = []; - - /** - * -------------------------------------------------------------------------- - * Content Security Policy - * -------------------------------------------------------------------------- - * - * Enables the Response's Content Secure Policy to restrict the sources that - * can be used for images, scripts, CSS files, audio, video, etc. If enabled, - * the Response object will populate default values for the policy from the - * `ContentSecurityPolicy.php` file. Controllers can always add to those - * restrictions at run time. - * - * For a better understanding of CSP, see these documents: - * - * @see http://www.html5rocks.com/en/tutorials/security/content-security-policy/ - * @see http://www.w3.org/TR/CSP/ - */ - public bool $CSPEnabled = false; -} diff --git a/app/Config--newest/Autoload.php b/app/Config--newest/Autoload.php deleted file mode 100644 index 76cd9263..00000000 --- a/app/Config--newest/Autoload.php +++ /dev/null @@ -1,94 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\AutoloadConfig; - -/** - * ------------------------------------------------------------------- - * AUTOLOADER CONFIGURATION - * ------------------------------------------------------------------- - * - * This file defines the namespaces and class maps so the Autoloader - * can find the files as needed. - * - * NOTE: If you use an identical key in $psr4 or $classmap, then - * the values in this file will overwrite the framework's values. - * - * NOTE: This class is required prior to Autoloader instantiation, - * and does not extend BaseConfig. - * - * @immutable - */ -class Autoload extends AutoloadConfig -{ - /** - * ------------------------------------------------------------------- - * Namespaces - * ------------------------------------------------------------------- - * This maps the locations of any namespaces in your application to - * their location on the file system. These are used by the autoloader - * to locate files the first time they have been instantiated. - * - * The 'Config' (APPPATH . 'Config') and 'CodeIgniter' (SYSTEMPATH) are - * already mapped for you. - * - * You may change the name of the 'App' namespace if you wish, - * but this should be done prior to creating any namespaced classes, - * else you will need to modify all of those classes for this to work. - * - * @var array<string, list<string>|string> - */ - public $psr4 = [ - APP_NAMESPACE => APPPATH, - ]; - - /** - * ------------------------------------------------------------------- - * Class Map - * ------------------------------------------------------------------- - * The class map provides a map of class names and their exact - * location on the drive. Classes loaded in this manner will have - * slightly faster performance because they will not have to be - * searched for within one or more directories as they would if they - * were being autoloaded through a namespace. - * - * Prototype: - * $classmap = [ - * 'MyClass' => '/path/to/class/file.php' - * ]; - * - * @var array<string, string> - */ - public $classmap = []; - - /** - * ------------------------------------------------------------------- - * Files - * ------------------------------------------------------------------- - * The files array provides a list of paths to __non-class__ files - * that will be autoloaded. This can be useful for bootstrap operations - * or for loading functions. - * - * Prototype: - * $files = [ - * '/path/to/my/file.php', - * ]; - * - * @var list<string> - */ - public $files = []; - - /** - * ------------------------------------------------------------------- - * Helpers - * ------------------------------------------------------------------- - * Prototype: - * $helpers = [ - * 'form', - * ]; - * - * @var list<string> - */ - public $helpers = []; -} diff --git a/app/Config--newest/Boot/development.php b/app/Config--newest/Boot/development.php deleted file mode 100644 index a868447a..00000000 --- a/app/Config--newest/Boot/development.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php - -/* - |-------------------------------------------------------------------------- - | ERROR DISPLAY - |-------------------------------------------------------------------------- - | In development, we want to show as many errors as possible to help - | make sure they don't make it to production. And save us hours of - | painful debugging. - | - | If you set 'display_errors' to '1', CI4's detailed error report will show. - */ -error_reporting(E_ALL); -ini_set('display_errors', '1'); - -/* - |-------------------------------------------------------------------------- - | DEBUG BACKTRACES - |-------------------------------------------------------------------------- - | If true, this constant will tell the error screens to display debug - | backtraces along with the other error information. If you would - | prefer to not see this, set this value to false. - */ -defined('SHOW_DEBUG_BACKTRACE') || define('SHOW_DEBUG_BACKTRACE', true); - -/* - |-------------------------------------------------------------------------- - | DEBUG MODE - |-------------------------------------------------------------------------- - | Debug mode is an experimental flag that can allow changes throughout - | the system. This will control whether Kint is loaded, and a few other - | items. It can always be used within your own application too. - */ -defined('CI_DEBUG') || define('CI_DEBUG', true); diff --git a/app/Config--newest/Boot/production.php b/app/Config--newest/Boot/production.php deleted file mode 100644 index 1822cf58..00000000 --- a/app/Config--newest/Boot/production.php +++ /dev/null @@ -1,25 +0,0 @@ -<?php - -/* - |-------------------------------------------------------------------------- - | ERROR DISPLAY - |-------------------------------------------------------------------------- - | Don't show ANY in production environments. Instead, let the system catch - | it and display a generic error message. - | - | If you set 'display_errors' to '1', CI4's detailed error report will show. - */ -error_reporting(E_ALL & ~E_DEPRECATED); -// If you want to suppress more types of errors. -// error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT & ~E_USER_NOTICE & ~E_USER_DEPRECATED); -ini_set('display_errors', '0'); - -/* - |-------------------------------------------------------------------------- - | DEBUG MODE - |-------------------------------------------------------------------------- - | Debug mode is an experimental flag that can allow changes throughout - | the system. It's not widely used currently, and may not survive - | release of the framework. - */ -defined('CI_DEBUG') || define('CI_DEBUG', false); diff --git a/app/Config--newest/Boot/testing.php b/app/Config--newest/Boot/testing.php deleted file mode 100644 index 40b6ca83..00000000 --- a/app/Config--newest/Boot/testing.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -/* - * The environment testing is reserved for PHPUnit testing. It has special - * conditions built into the framework at various places to assist with that. - * You can’t use it for your development. - */ - -/* - |-------------------------------------------------------------------------- - | ERROR DISPLAY - |-------------------------------------------------------------------------- - | In development, we want to show as many errors as possible to help - | make sure they don't make it to production. And save us hours of - | painful debugging. - */ -error_reporting(E_ALL); -ini_set('display_errors', '1'); - -/* - |-------------------------------------------------------------------------- - | DEBUG BACKTRACES - |-------------------------------------------------------------------------- - | If true, this constant will tell the error screens to display debug - | backtraces along with the other error information. If you would - | prefer to not see this, set this value to false. - */ -defined('SHOW_DEBUG_BACKTRACE') || define('SHOW_DEBUG_BACKTRACE', true); - -/* - |-------------------------------------------------------------------------- - | DEBUG MODE - |-------------------------------------------------------------------------- - | Debug mode is an experimental flag that can allow changes throughout - | the system. It's not widely used currently, and may not survive - | release of the framework. - */ -defined('CI_DEBUG') || define('CI_DEBUG', true); diff --git a/app/Config--newest/CURLRequest.php b/app/Config--newest/CURLRequest.php deleted file mode 100644 index 5a3d4e93..00000000 --- a/app/Config--newest/CURLRequest.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\BaseConfig; - -class CURLRequest extends BaseConfig -{ - /** - * -------------------------------------------------------------------------- - * CURLRequest Share Options - * -------------------------------------------------------------------------- - * - * Whether share options between requests or not. - * - * If true, all the options won't be reset between requests. - * It may cause an error request with unnecessary headers. - */ - public bool $shareOptions = false; -} diff --git a/app/Config--newest/Cache.php b/app/Config--newest/Cache.php deleted file mode 100644 index 3fbade68..00000000 --- a/app/Config--newest/Cache.php +++ /dev/null @@ -1,171 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Cache\CacheInterface; -use CodeIgniter\Cache\Handlers\DummyHandler; -use CodeIgniter\Cache\Handlers\FileHandler; -use CodeIgniter\Cache\Handlers\MemcachedHandler; -use CodeIgniter\Cache\Handlers\PredisHandler; -use CodeIgniter\Cache\Handlers\RedisHandler; -use CodeIgniter\Cache\Handlers\WincacheHandler; -use CodeIgniter\Config\BaseConfig; - -class Cache extends BaseConfig -{ - /** - * -------------------------------------------------------------------------- - * Primary Handler - * -------------------------------------------------------------------------- - * - * The name of the preferred handler that should be used. If for some reason - * it is not available, the $backupHandler will be used in its place. - */ - public string $handler = 'file'; - - /** - * -------------------------------------------------------------------------- - * Backup Handler - * -------------------------------------------------------------------------- - * - * The name of the handler that will be used in case the first one is - * unreachable. Often, 'file' is used here since the filesystem is - * always available, though that's not always practical for the app. - */ - public string $backupHandler = 'dummy'; - - /** - * -------------------------------------------------------------------------- - * Cache Directory Path - * -------------------------------------------------------------------------- - * - * The path to where cache files should be stored, if using a file-based - * system. - * - * @deprecated Use the driver-specific variant under $file - */ - public string $storePath = WRITEPATH . 'cache/'; - - /** - * -------------------------------------------------------------------------- - * Key Prefix - * -------------------------------------------------------------------------- - * - * This string is added to all cache item names to help avoid collisions - * if you run multiple applications with the same cache engine. - */ - public string $prefix = ''; - - /** - * -------------------------------------------------------------------------- - * Default TTL - * -------------------------------------------------------------------------- - * - * The default number of seconds to save items when none is specified. - * - * WARNING: This is not used by framework handlers where 60 seconds is - * hard-coded, but may be useful to projects and modules. This will replace - * the hard-coded value in a future release. - */ - public int $ttl = 60; - - /** - * -------------------------------------------------------------------------- - * Reserved Characters - * -------------------------------------------------------------------------- - * - * A string of reserved characters that will not be allowed in keys or tags. - * Strings that violate this restriction will cause handlers to throw. - * Default: {}()/\@: - * - * NOTE: The default set is required for PSR-6 compliance. - */ - public string $reservedCharacters = '{}()/\@:'; - - /** - * -------------------------------------------------------------------------- - * File settings - * -------------------------------------------------------------------------- - * Your file storage preferences can be specified below, if you are using - * the File driver. - * - * @var array<string, int|string|null> - */ - public array $file = [ - 'storePath' => WRITEPATH . 'cache/', - 'mode' => 0640, - ]; - - /** - * ------------------------------------------------------------------------- - * Memcached settings - * ------------------------------------------------------------------------- - * Your Memcached servers can be specified below, if you are using - * the Memcached drivers. - * - * @see https://codeigniter.com/user_guide/libraries/caching.html#memcached - * - * @var array<string, bool|int|string> - */ - public array $memcached = [ - 'host' => '127.0.0.1', - 'port' => 11211, - 'weight' => 1, - 'raw' => false, - ]; - - /** - * ------------------------------------------------------------------------- - * Redis settings - * ------------------------------------------------------------------------- - * Your Redis server can be specified below, if you are using - * the Redis or Predis drivers. - * - * @var array<string, int|string|null> - */ - public array $redis = [ - 'host' => '127.0.0.1', - 'password' => null, - 'port' => 6379, - 'timeout' => 0, - 'database' => 0, - ]; - - /** - * -------------------------------------------------------------------------- - * Available Cache Handlers - * -------------------------------------------------------------------------- - * - * This is an array of cache engine alias' and class names. Only engines - * that are listed here are allowed to be used. - * - * @var array<string, class-string<CacheInterface>> - */ - public array $validHandlers = [ - 'dummy' => DummyHandler::class, - 'file' => FileHandler::class, - 'memcached' => MemcachedHandler::class, - 'predis' => PredisHandler::class, - 'redis' => RedisHandler::class, - 'wincache' => WincacheHandler::class, - ]; - - /** - * -------------------------------------------------------------------------- - * Web Page Caching: Cache Include Query String - * -------------------------------------------------------------------------- - * - * Whether to take the URL query string into consideration when generating - * output cache files. Valid options are: - * - * false = Disabled - * true = Enabled, take all query parameters into account. - * Please be aware that this may result in numerous cache - * files generated for the same page over and over again. - * ['q'] = Enabled, but only take into account the specified list - * of query parameters. - * - * @var bool|list<string> - */ - public $cacheQueryString = false; -} diff --git a/app/Config--newest/Constants.php b/app/Config--newest/Constants.php deleted file mode 100644 index 63e944de..00000000 --- a/app/Config--newest/Constants.php +++ /dev/null @@ -1,96 +0,0 @@ -<?php - -/* - | -------------------------------------------------------------------- - | App Namespace - | -------------------------------------------------------------------- - | - | This defines the default Namespace that is used throughout - | CodeIgniter to refer to the Application directory. Change - | this constant to change the namespace that all application - | classes should use. - | - | NOTE: changing this will require manually modifying the - | existing namespaces of App\* namespaced-classes. - */ -defined('APP_NAMESPACE') || define('APP_NAMESPACE', 'App'); - -/* - | -------------------------------------------------------------------------- - | Composer Path - | -------------------------------------------------------------------------- - | - | The path that Composer's autoload file is expected to live. By default, - | the vendor folder is in the Root directory, but you can customize that here. - */ -defined('COMPOSER_PATH') || define('COMPOSER_PATH', ROOTPATH . 'vendor/autoload.php'); - -/* - |-------------------------------------------------------------------------- - | Timing Constants - |-------------------------------------------------------------------------- - | - | Provide simple ways to work with the myriad of PHP functions that - | require information to be in seconds. - */ -defined('SECOND') || define('SECOND', 1); -defined('MINUTE') || define('MINUTE', 60); -defined('HOUR') || define('HOUR', 3600); -defined('DAY') || define('DAY', 86400); -defined('WEEK') || define('WEEK', 604800); -defined('MONTH') || define('MONTH', 2_592_000); -defined('YEAR') || define('YEAR', 31_536_000); -defined('DECADE') || define('DECADE', 315_360_000); - -/* - | -------------------------------------------------------------------------- - | Exit Status Codes - | -------------------------------------------------------------------------- - | - | Used to indicate the conditions under which the script is exit()ing. - | While there is no universal standard for error codes, there are some - | broad conventions. Three such conventions are mentioned below, for - | those who wish to make use of them. The CodeIgniter defaults were - | chosen for the least overlap with these conventions, while still - | leaving room for others to be defined in future versions and user - | applications. - | - | The three main conventions used for determining exit status codes - | are as follows: - | - | Standard C/C++ Library (stdlibc): - | http://www.gnu.org/software/libc/manual/html_node/Exit-Status.html - | (This link also contains other GNU-specific conventions) - | BSD sysexits.h: - | http://www.gsp.com/cgi-bin/man.cgi?section=3&topic=sysexits - | Bash scripting: - | http://tldp.org/LDP/abs/html/exitcodes.html - | - */ -defined('EXIT_SUCCESS') || define('EXIT_SUCCESS', 0); // no errors -defined('EXIT_ERROR') || define('EXIT_ERROR', 1); // generic error -defined('EXIT_CONFIG') || define('EXIT_CONFIG', 3); // configuration error -defined('EXIT_UNKNOWN_FILE') || define('EXIT_UNKNOWN_FILE', 4); // file not found -defined('EXIT_UNKNOWN_CLASS') || define('EXIT_UNKNOWN_CLASS', 5); // unknown class -defined('EXIT_UNKNOWN_METHOD') || define('EXIT_UNKNOWN_METHOD', 6); // unknown class member -defined('EXIT_USER_INPUT') || define('EXIT_USER_INPUT', 7); // invalid user input -defined('EXIT_DATABASE') || define('EXIT_DATABASE', 8); // database error -defined('EXIT__AUTO_MIN') || define('EXIT__AUTO_MIN', 9); // lowest automatically-assigned error code -defined('EXIT__AUTO_MAX') || define('EXIT__AUTO_MAX', 125); // highest automatically-assigned error code -$protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https://' . $_SERVER['HTTP_HOST'] : 'http://' . $_SERVER['HTTP_HOST']; -defined('BASEURL') || define('BASEURL', $protocol); - -/** - * @deprecated Use \CodeIgniter\Events\Events::PRIORITY_LOW instead. - */ -define('EVENT_PRIORITY_LOW', 200); - -/** - * @deprecated Use \CodeIgniter\Events\Events::PRIORITY_NORMAL instead. - */ -define('EVENT_PRIORITY_NORMAL', 100); - -/** - * @deprecated Use \CodeIgniter\Events\Events::PRIORITY_HIGH instead. - */ -define('EVENT_PRIORITY_HIGH', 10); diff --git a/app/Config--newest/ContentSecurityPolicy.php b/app/Config--newest/ContentSecurityPolicy.php deleted file mode 100644 index 2ac41a70..00000000 --- a/app/Config--newest/ContentSecurityPolicy.php +++ /dev/null @@ -1,176 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\BaseConfig; - -/** - * Stores the default settings for the ContentSecurityPolicy, if you - * choose to use it. The values here will be read in and set as defaults - * for the site. If needed, they can be overridden on a page-by-page basis. - * - * Suggested reference for explanations: - * - * @see https://www.html5rocks.com/en/tutorials/security/content-security-policy/ - */ -class ContentSecurityPolicy extends BaseConfig -{ - // ------------------------------------------------------------------------- - // Broadbrush CSP management - // ------------------------------------------------------------------------- - - /** - * Default CSP report context - */ - public bool $reportOnly = false; - - /** - * Specifies a URL where a browser will send reports - * when a content security policy is violated. - */ - public ?string $reportURI = null; - - /** - * Instructs user agents to rewrite URL schemes, changing - * HTTP to HTTPS. This directive is for websites with - * large numbers of old URLs that need to be rewritten. - */ - public bool $upgradeInsecureRequests = false; - - // ------------------------------------------------------------------------- - // Sources allowed - // NOTE: once you set a policy to 'none', it cannot be further restricted - // ------------------------------------------------------------------------- - - /** - * Will default to self if not overridden - * - * @var list<string>|string|null - */ - public $defaultSrc; - - /** - * Lists allowed scripts' URLs. - * - * @var list<string>|string - */ - public $scriptSrc = 'self'; - - /** - * Lists allowed stylesheets' URLs. - * - * @var list<string>|string - */ - public $styleSrc = 'self'; - - /** - * Defines the origins from which images can be loaded. - * - * @var list<string>|string - */ - public $imageSrc = 'self'; - - /** - * Restricts the URLs that can appear in a page's `<base>` element. - * - * Will default to self if not overridden - * - * @var list<string>|string|null - */ - public $baseURI; - - /** - * Lists the URLs for workers and embedded frame contents - * - * @var list<string>|string - */ - public $childSrc = 'self'; - - /** - * Limits the origins that you can connect to (via XHR, - * WebSockets, and EventSource). - * - * @var list<string>|string - */ - public $connectSrc = 'self'; - - /** - * Specifies the origins that can serve web fonts. - * - * @var list<string>|string - */ - public $fontSrc; - - /** - * Lists valid endpoints for submission from `<form>` tags. - * - * @var list<string>|string - */ - public $formAction = 'self'; - - /** - * Specifies the sources that can embed the current page. - * This directive applies to `<frame>`, `<iframe>`, `<embed>`, - * and `<applet>` tags. This directive can't be used in - * `<meta>` tags and applies only to non-HTML resources. - * - * @var list<string>|string|null - */ - public $frameAncestors; - - /** - * The frame-src directive restricts the URLs which may - * be loaded into nested browsing contexts. - * - * @var list<string>|string|null - */ - public $frameSrc; - - /** - * Restricts the origins allowed to deliver video and audio. - * - * @var list<string>|string|null - */ - public $mediaSrc; - - /** - * Allows control over Flash and other plugins. - * - * @var list<string>|string - */ - public $objectSrc = 'self'; - - /** - * @var list<string>|string|null - */ - public $manifestSrc; - - /** - * Limits the kinds of plugins a page may invoke. - * - * @var list<string>|string|null - */ - public $pluginTypes; - - /** - * List of actions allowed. - * - * @var list<string>|string|null - */ - public $sandbox; - - /** - * Nonce tag for style - */ - public string $styleNonceTag = '{csp-style-nonce}'; - - /** - * Nonce tag for script - */ - public string $scriptNonceTag = '{csp-script-nonce}'; - - /** - * Replace nonce tag automatically - */ - public bool $autoNonce = true; -} diff --git a/app/Config--newest/Cookie.php b/app/Config--newest/Cookie.php deleted file mode 100644 index 84ccc0e9..00000000 --- a/app/Config--newest/Cookie.php +++ /dev/null @@ -1,107 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\BaseConfig; -use DateTimeInterface; - -class Cookie extends BaseConfig -{ - /** - * -------------------------------------------------------------------------- - * Cookie Prefix - * -------------------------------------------------------------------------- - * - * Set a cookie name prefix if you need to avoid collisions. - */ - public string $prefix = ''; - - /** - * -------------------------------------------------------------------------- - * Cookie Expires Timestamp - * -------------------------------------------------------------------------- - * - * Default expires timestamp for cookies. Setting this to `0` will mean the - * cookie will not have the `Expires` attribute and will behave as a session - * cookie. - * - * @var DateTimeInterface|int|string - */ - public $expires = 0; - - /** - * -------------------------------------------------------------------------- - * Cookie Path - * -------------------------------------------------------------------------- - * - * Typically will be a forward slash. - */ - public string $path = '/'; - - /** - * -------------------------------------------------------------------------- - * Cookie Domain - * -------------------------------------------------------------------------- - * - * Set to `.your-domain.com` for site-wide cookies. - */ - public string $domain = ''; - - /** - * -------------------------------------------------------------------------- - * Cookie Secure - * -------------------------------------------------------------------------- - * - * Cookie will only be set if a secure HTTPS connection exists. - */ - public bool $secure = false; - - /** - * -------------------------------------------------------------------------- - * Cookie HTTPOnly - * -------------------------------------------------------------------------- - * - * Cookie will only be accessible via HTTP(S) (no JavaScript). - */ - public bool $httponly = true; - - /** - * -------------------------------------------------------------------------- - * Cookie SameSite - * -------------------------------------------------------------------------- - * - * Configure cookie SameSite setting. Allowed values are: - * - None - * - Lax - * - Strict - * - '' - * - * Alternatively, you can use the constant names: - * - `Cookie::SAMESITE_NONE` - * - `Cookie::SAMESITE_LAX` - * - `Cookie::SAMESITE_STRICT` - * - * Defaults to `Lax` for compatibility with modern browsers. Setting `''` - * (empty string) means default SameSite attribute set by browsers (`Lax`) - * will be set on cookies. If set to `None`, `$secure` must also be set. - * - * @phpstan-var 'None'|'Lax'|'Strict'|'' - */ - public string $samesite = 'Lax'; - - /** - * -------------------------------------------------------------------------- - * Cookie Raw - * -------------------------------------------------------------------------- - * - * This flag allows setting a "raw" cookie, i.e., its name and value are - * not URL encoded using `rawurlencode()`. - * - * If this is set to `true`, cookie names should be compliant of RFC 2616's - * list of allowed characters. - * - * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#attributes - * @see https://tools.ietf.org/html/rfc2616#section-2.2 - */ - public bool $raw = false; -} diff --git a/app/Config--newest/Cors.php b/app/Config--newest/Cors.php deleted file mode 100644 index 2b4edf6b..00000000 --- a/app/Config--newest/Cors.php +++ /dev/null @@ -1,105 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\BaseConfig; - -/** - * Cross-Origin Resource Sharing (CORS) Configuration - * - * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS - */ -class Cors extends BaseConfig -{ - /** - * The default CORS configuration. - * - * @var array{ - * allowedOrigins: list<string>, - * allowedOriginsPatterns: list<string>, - * supportsCredentials: bool, - * allowedHeaders: list<string>, - * exposedHeaders: list<string>, - * allowedMethods: list<string>, - * maxAge: int, - * } - */ - public array $default = [ - /** - * Origins for the `Access-Control-Allow-Origin` header. - * - * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin - * - * E.g.: - * - ['http://localhost:8080'] - * - ['https://www.example.com'] - */ - 'allowedOrigins' => [], - - /** - * Origin regex patterns for the `Access-Control-Allow-Origin` header. - * - * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin - * - * NOTE: A pattern specified here is part of a regular expression. It will - * be actually `#\A<pattern>\z#`. - * - * E.g.: - * - ['https://\w+\.example\.com'] - */ - 'allowedOriginsPatterns' => [], - - /** - * Weather to send the `Access-Control-Allow-Credentials` header. - * - * The Access-Control-Allow-Credentials response header tells browsers whether - * the server allows cross-origin HTTP requests to include credentials. - * - * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials - */ - 'supportsCredentials' => false, - - /** - * Set headers to allow. - * - * The Access-Control-Allow-Headers response header is used in response to - * a preflight request which includes the Access-Control-Request-Headers to - * indicate which HTTP headers can be used during the actual request. - * - * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers - */ - 'allowedHeaders' => [], - - /** - * Set headers to expose. - * - * The Access-Control-Expose-Headers response header allows a server to - * indicate which response headers should be made available to scripts running - * in the browser, in response to a cross-origin request. - * - * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headers - */ - 'exposedHeaders' => [], - - /** - * Set methods to allow. - * - * The Access-Control-Allow-Methods response header specifies one or more - * methods allowed when accessing a resource in response to a preflight - * request. - * - * E.g.: - * - ['GET', 'POST', 'PUT', 'DELETE'] - * - * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Methods - */ - 'allowedMethods' => [], - - /** - * Set how many seconds the results of a preflight request can be cached. - * - * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Max-Age - */ - 'maxAge' => 7200, - ]; -} diff --git a/app/Config--newest/Database.php b/app/Config--newest/Database.php deleted file mode 100644 index 1c833999..00000000 --- a/app/Config--newest/Database.php +++ /dev/null @@ -1,194 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Database\Config; - -/** - * Database Configuration - */ -class Database extends Config -{ - /** - * The directory that holds the Migrations and Seeds directories. - */ - public string $filesPath = APPPATH . 'Database' . DIRECTORY_SEPARATOR; - - /** - * Lets you choose which connection group to use if no other is specified. - */ - public string $defaultGroup = 'default'; - - /** - * The default database connection. - * - * @var array<string, mixed> - */ - public array $default = [ - 'hostname' => 'SIMN', - 'username' => 'genapp', - 'password' => 'GENAPPSIM', - 'database' => '', - 'DBDriver' => 'oci8', - 'DBPrefix' => '', - 'pconnect' => true, - 'DBDebug' => true, - 'charset' => 'utf8', - 'DBCollat' => 'utf8_general_ci', - 'swapPre' => '', - 'encrypt' => false, - 'autoinit' => true, - 'strictOn' => false, - 'failover' => [], - 'numberNative' => false, - ]; - - // /** - // * Sample database connection for SQLite3. - // * - // * @var array<string, mixed> - // */ - // public array $default = [ - // 'database' => 'database.db', - // 'DBDriver' => 'SQLite3', - // 'DBPrefix' => '', - // 'DBDebug' => true, - // 'swapPre' => '', - // 'failover' => [], - // 'foreignKeys' => true, - // 'busyTimeout' => 1000, - // 'dateFormat' => [ - // 'date' => 'Y-m-d', - // 'datetime' => 'Y-m-d H:i:s', - // 'time' => 'H:i:s', - // ], - // ]; - - // /** - // * Sample database connection for Postgre. - // * - // * @var array<string, mixed> - // */ - // public array $default = [ - // 'DSN' => '', - // 'hostname' => 'localhost', - // 'username' => 'root', - // 'password' => 'root', - // 'database' => 'ci4', - // 'schema' => 'public', - // 'DBDriver' => 'Postgre', - // 'DBPrefix' => '', - // 'pConnect' => false, - // 'DBDebug' => true, - // 'charset' => 'utf8', - // 'swapPre' => '', - // 'failover' => [], - // 'port' => 5432, - // 'dateFormat' => [ - // 'date' => 'Y-m-d', - // 'datetime' => 'Y-m-d H:i:s', - // 'time' => 'H:i:s', - // ], - // ]; - - // /** - // * Sample database connection for SQLSRV. - // * - // * @var array<string, mixed> - // */ - // public array $default = [ - // 'DSN' => '', - // 'hostname' => 'localhost', - // 'username' => 'root', - // 'password' => 'root', - // 'database' => 'ci4', - // 'schema' => 'dbo', - // 'DBDriver' => 'SQLSRV', - // 'DBPrefix' => '', - // 'pConnect' => false, - // 'DBDebug' => true, - // 'charset' => 'utf8', - // 'swapPre' => '', - // 'encrypt' => false, - // 'failover' => [], - // 'port' => 1433, - // 'dateFormat' => [ - // 'date' => 'Y-m-d', - // 'datetime' => 'Y-m-d H:i:s', - // 'time' => 'H:i:s', - // ], - // ]; - - // /** - // * Sample database connection for OCI8. - // * - // * You may need the following environment variables: - // * NLS_LANG = 'AMERICAN_AMERICA.UTF8' - // * NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS' - // * NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SS' - // * NLS_TIMESTAMP_TZ_FORMAT = 'YYYY-MM-DD HH24:MI:SS' - // * - // * @var array<string, mixed> - // */ - // public array $default = [ - // 'DSN' => 'localhost:1521/XEPDB1', - // 'username' => 'root', - // 'password' => 'root', - // 'DBDriver' => 'OCI8', - // 'DBPrefix' => '', - // 'pConnect' => false, - // 'DBDebug' => true, - // 'charset' => 'AL32UTF8', - // 'swapPre' => '', - // 'failover' => [], - // 'dateFormat' => [ - // 'date' => 'Y-m-d', - // 'datetime' => 'Y-m-d H:i:s', - // 'time' => 'H:i:s', - // ], - // ]; - - /** - * This database connection is used when running PHPUnit database tests. - * - * @var array<string, mixed> - */ - public array $tests = [ - 'DSN' => '', - 'hostname' => '127.0.0.1', - 'username' => '', - 'password' => '', - 'database' => ':memory:', - 'DBDriver' => 'SQLite3', - 'DBPrefix' => 'db_', // Needed to ensure we're working correctly with prefixes live. DO NOT REMOVE FOR CI DEVS - 'pConnect' => false, - 'DBDebug' => true, - 'charset' => 'utf8', - 'DBCollat' => '', - 'swapPre' => '', - 'encrypt' => false, - 'compress' => false, - 'strictOn' => false, - 'failover' => [], - 'port' => 3306, - 'foreignKeys' => true, - 'busyTimeout' => 1000, - 'dateFormat' => [ - 'date' => 'Y-m-d', - 'datetime' => 'Y-m-d H:i:s', - 'time' => 'H:i:s', - ], - ]; - - public function __construct() - { - parent::__construct(); - - // Ensure that we always set the database group to 'tests' if - // we are currently running an automated test suite, so that - // we don't overwrite live data on accident. - if (ENVIRONMENT === 'testing') { - $this->defaultGroup = 'tests'; - } - } -} diff --git a/app/Config--newest/DocTypes.php b/app/Config--newest/DocTypes.php deleted file mode 100644 index 7e8aaacf..00000000 --- a/app/Config--newest/DocTypes.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php - -namespace Config; - -/** - * @immutable - */ -class DocTypes -{ - /** - * List of valid document types. - * - * @var array<string, string> - */ - public array $list = [ - 'xhtml11' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">', - 'xhtml1-strict' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">', - 'xhtml1-trans' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">', - 'xhtml1-frame' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">', - 'xhtml-basic11' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">', - 'html5' => '<!DOCTYPE html>', - 'html4-strict' => '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">', - 'html4-trans' => '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">', - 'html4-frame' => '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">', - 'mathml1' => '<!DOCTYPE math SYSTEM "http://www.w3.org/Math/DTD/mathml1/mathml.dtd">', - 'mathml2' => '<!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/mathml2.dtd">', - 'svg10' => '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">', - 'svg11' => '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">', - 'svg11-basic' => '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Basic//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-basic.dtd">', - 'svg11-tiny' => '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">', - 'xhtml-math-svg-xh' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">', - 'xhtml-math-svg-sh' => '<!DOCTYPE svg:svg PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">', - 'xhtml-rdfa-1' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">', - 'xhtml-rdfa-2' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.1//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-2.dtd">', - ]; - - /** - * Whether to remove the solidus (`/`) character for void HTML elements (e.g. `<input>`) - * for HTML5 compatibility. - * - * Set to: - * `true` - to be HTML5 compatible - * `false` - to be XHTML compatible - */ - public bool $html5 = true; -} diff --git a/app/Config--newest/Email.php b/app/Config--newest/Email.php deleted file mode 100644 index 4dce650b..00000000 --- a/app/Config--newest/Email.php +++ /dev/null @@ -1,121 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\BaseConfig; - -class Email extends BaseConfig -{ - public string $fromEmail = ''; - public string $fromName = ''; - public string $recipients = ''; - - /** - * The "user agent" - */ - public string $userAgent = 'CodeIgniter'; - - /** - * The mail sending protocol: mail, sendmail, smtp - */ - public string $protocol = 'mail'; - - /** - * The server path to Sendmail. - */ - public string $mailPath = '/usr/sbin/sendmail'; - - /** - * SMTP Server Hostname - */ - public string $SMTPHost = ''; - - /** - * SMTP Username - */ - public string $SMTPUser = ''; - - /** - * SMTP Password - */ - public string $SMTPPass = ''; - - /** - * SMTP Port - */ - public int $SMTPPort = 25; - - /** - * SMTP Timeout (in seconds) - */ - public int $SMTPTimeout = 5; - - /** - * Enable persistent SMTP connections - */ - public bool $SMTPKeepAlive = false; - - /** - * SMTP Encryption. - * - * @var string '', 'tls' or 'ssl'. 'tls' will issue a STARTTLS command - * to the server. 'ssl' means implicit SSL. Connection on port - * 465 should set this to ''. - */ - public string $SMTPCrypto = 'tls'; - - /** - * Enable word-wrap - */ - public bool $wordWrap = true; - - /** - * Character count to wrap at - */ - public int $wrapChars = 76; - - /** - * Type of mail, either 'text' or 'html' - */ - public string $mailType = 'text'; - - /** - * Character set (utf-8, iso-8859-1, etc.) - */ - public string $charset = 'UTF-8'; - - /** - * Whether to validate the email address - */ - public bool $validate = false; - - /** - * Email Priority. 1 = highest. 5 = lowest. 3 = normal - */ - public int $priority = 3; - - /** - * Newline character. (Use “\r\n” to comply with RFC 822) - */ - public string $CRLF = "\r\n"; - - /** - * Newline character. (Use “\r\n” to comply with RFC 822) - */ - public string $newline = "\r\n"; - - /** - * Enable BCC Batch Mode. - */ - public bool $BCCBatchMode = false; - - /** - * Number of emails in each BCC batch - */ - public int $BCCBatchSize = 200; - - /** - * Enable notify message from server - */ - public bool $DSN = false; -} diff --git a/app/Config--newest/Encryption.php b/app/Config--newest/Encryption.php deleted file mode 100644 index 28344134..00000000 --- a/app/Config--newest/Encryption.php +++ /dev/null @@ -1,92 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\BaseConfig; - -/** - * Encryption configuration. - * - * These are the settings used for encryption, if you don't pass a parameter - * array to the encrypter for creation/initialization. - */ -class Encryption extends BaseConfig -{ - /** - * -------------------------------------------------------------------------- - * Encryption Key Starter - * -------------------------------------------------------------------------- - * - * If you use the Encryption class you must set an encryption key (seed). - * You need to ensure it is long enough for the cipher and mode you plan to use. - * See the user guide for more info. - */ - public string $key = ''; - - /** - * -------------------------------------------------------------------------- - * Encryption Driver to Use - * -------------------------------------------------------------------------- - * - * One of the supported encryption drivers. - * - * Available drivers: - * - OpenSSL - * - Sodium - */ - public string $driver = 'OpenSSL'; - - /** - * -------------------------------------------------------------------------- - * SodiumHandler's Padding Length in Bytes - * -------------------------------------------------------------------------- - * - * This is the number of bytes that will be padded to the plaintext message - * before it is encrypted. This value should be greater than zero. - * - * See the user guide for more information on padding. - */ - public int $blockSize = 16; - - /** - * -------------------------------------------------------------------------- - * Encryption digest - * -------------------------------------------------------------------------- - * - * HMAC digest to use, e.g. 'SHA512' or 'SHA256'. Default value is 'SHA512'. - */ - public string $digest = 'SHA512'; - - /** - * Whether the cipher-text should be raw. If set to false, then it will be base64 encoded. - * This setting is only used by OpenSSLHandler. - * - * Set to false for CI3 Encryption compatibility. - */ - public bool $rawData = true; - - /** - * Encryption key info. - * This setting is only used by OpenSSLHandler. - * - * Set to 'encryption' for CI3 Encryption compatibility. - */ - public string $encryptKeyInfo = ''; - - /** - * Authentication key info. - * This setting is only used by OpenSSLHandler. - * - * Set to 'authentication' for CI3 Encryption compatibility. - */ - public string $authKeyInfo = ''; - - /** - * Cipher to use. - * This setting is only used by OpenSSLHandler. - * - * Set to 'AES-128-CBC' to decrypt encrypted data that encrypted - * by CI3 Encryption default configuration. - */ - public string $cipher = 'AES-256-CTR'; -} diff --git a/app/Config--newest/Events.php b/app/Config--newest/Events.php deleted file mode 100644 index 993abd24..00000000 --- a/app/Config--newest/Events.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Events\Events; -use CodeIgniter\Exceptions\FrameworkException; -use CodeIgniter\HotReloader\HotReloader; - -/* - * -------------------------------------------------------------------- - * Application Events - * -------------------------------------------------------------------- - * Events allow you to tap into the execution of the program without - * modifying or extending core files. This file provides a central - * location to define your events, though they can always be added - * at run-time, also, if needed. - * - * You create code that can execute by subscribing to events with - * the 'on()' method. This accepts any form of callable, including - * Closures, that will be executed when the event is triggered. - * - * Example: - * Events::on('create', [$myInstance, 'myMethod']); - */ - -Events::on('pre_system', static function () { - if (ENVIRONMENT !== 'testing') { - if (ini_get('zlib.output_compression')) { - throw FrameworkException::forEnabledZlibOutputCompression(); - } - - while (ob_get_level() > 0) { - ob_end_flush(); - } - - ob_start(static fn ($buffer) => $buffer); - } - - /* - * -------------------------------------------------------------------- - * Debug Toolbar Listeners. - * -------------------------------------------------------------------- - * If you delete, they will no longer be collected. - */ - if (CI_DEBUG && ! is_cli()) { - Events::on('DBQuery', 'CodeIgniter\Debug\Toolbar\Collectors\Database::collect'); - Services::toolbar()->respond(); - // Hot Reload route - for framework use on the hot reloader. - if (ENVIRONMENT === 'development') { - Services::routes()->get('__hot-reload', static function () { - (new HotReloader())->run(); - }); - } - } -}); diff --git a/app/Config--newest/Exceptions.php b/app/Config--newest/Exceptions.php deleted file mode 100644 index c240675e..00000000 --- a/app/Config--newest/Exceptions.php +++ /dev/null @@ -1,108 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\BaseConfig; -use CodeIgniter\Debug\ExceptionHandler; -use CodeIgniter\Debug\ExceptionHandlerInterface; -use Psr\Log\LogLevel; -use Throwable; - -/** - * Setup how the exception handler works. - */ -class Exceptions extends BaseConfig -{ - /** - * -------------------------------------------------------------------------- - * LOG EXCEPTIONS? - * -------------------------------------------------------------------------- - * If true, then exceptions will be logged - * through Services::Log. - * - * Default: true - */ - public bool $log = true; - - /** - * -------------------------------------------------------------------------- - * DO NOT LOG STATUS CODES - * -------------------------------------------------------------------------- - * Any status codes here will NOT be logged if logging is turned on. - * By default, only 404 (Page Not Found) exceptions are ignored. - * - * @var list<int> - */ - public array $ignoreCodes = [404]; - - /** - * -------------------------------------------------------------------------- - * Error Views Path - * -------------------------------------------------------------------------- - * This is the path to the directory that contains the 'cli' and 'html' - * directories that hold the views used to generate errors. - * - * Default: APPPATH.'Views/errors' - */ - public string $errorViewPath = APPPATH . 'Views/errors'; - - /** - * -------------------------------------------------------------------------- - * HIDE FROM DEBUG TRACE - * -------------------------------------------------------------------------- - * Any data that you would like to hide from the debug trace. - * In order to specify 2 levels, use "/" to separate. - * ex. ['server', 'setup/password', 'secret_token'] - * - * @var list<string> - */ - public array $sensitiveDataInTrace = []; - - /** - * -------------------------------------------------------------------------- - * LOG DEPRECATIONS INSTEAD OF THROWING? - * -------------------------------------------------------------------------- - * By default, CodeIgniter converts deprecations into exceptions. Also, - * starting in PHP 8.1 will cause a lot of deprecated usage warnings. - * Use this option to temporarily cease the warnings and instead log those. - * This option also works for user deprecations. - */ - public bool $logDeprecations = true; - - /** - * -------------------------------------------------------------------------- - * LOG LEVEL THRESHOLD FOR DEPRECATIONS - * -------------------------------------------------------------------------- - * If `$logDeprecations` is set to `true`, this sets the log level - * to which the deprecation will be logged. This should be one of the log - * levels recognized by PSR-3. - * - * The related `Config\Logger::$threshold` should be adjusted, if needed, - * to capture logging the deprecations. - */ - public string $deprecationLogLevel = LogLevel::WARNING; - - /* - * DEFINE THE HANDLERS USED - * -------------------------------------------------------------------------- - * Given the HTTP status code, returns exception handler that - * should be used to deal with this error. By default, it will run CodeIgniter's - * default handler and display the error information in the expected format - * for CLI, HTTP, or AJAX requests, as determined by is_cli() and the expected - * response format. - * - * Custom handlers can be returned if you want to handle one or more specific - * error codes yourself like: - * - * if (in_array($statusCode, [400, 404, 500])) { - * return new \App\Libraries\MyExceptionHandler(); - * } - * if ($exception instanceOf PageNotFoundException) { - * return new \App\Libraries\MyExceptionHandler(); - * } - */ - public function handler(int $statusCode, Throwable $exception): ExceptionHandlerInterface - { - return new ExceptionHandler($this); - } -} diff --git a/app/Config--newest/Feature.php b/app/Config--newest/Feature.php deleted file mode 100644 index efd4a0b2..00000000 --- a/app/Config--newest/Feature.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\BaseConfig; - -/** - * Enable/disable backward compatibility breaking features. - */ -class Feature extends BaseConfig -{ - /** - * Use improved new auto routing instead of the default legacy version. - */ - public bool $autoRoutesImproved = false; - - /** - * Use filter execution order in 4.4 or before. - */ - public bool $oldFilterOrder = false; - - /** - * The behavior of `limit(0)` in Query Builder. - * - * If true, `limit(0)` returns all records. (the behavior of 4.4.x or before in version 4.x.) - * If false, `limit(0)` returns no records. (the behavior of 3.1.9 or later in version 3.x.) - */ - public bool $limitZeroAsAll = true; -} diff --git a/app/Config--newest/Filters.php b/app/Config--newest/Filters.php deleted file mode 100644 index eb46a1d7..00000000 --- a/app/Config--newest/Filters.php +++ /dev/null @@ -1,107 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\Filters as BaseFilters; -use CodeIgniter\Filters\Cors; -use CodeIgniter\Filters\CSRF; -use CodeIgniter\Filters\DebugToolbar; -use CodeIgniter\Filters\ForceHTTPS; -use CodeIgniter\Filters\Honeypot; -use CodeIgniter\Filters\InvalidChars; -use CodeIgniter\Filters\PageCache; -use CodeIgniter\Filters\PerformanceMetrics; -use CodeIgniter\Filters\SecureHeaders; - -class Filters extends BaseFilters -{ - /** - * Configures aliases for Filter classes to - * make reading things nicer and simpler. - * - * @var array<string, class-string|list<class-string>> - * - * [filter_name => classname] - * or [filter_name => [classname1, classname2, ...]] - */ - public array $aliases = [ - 'csrf' => CSRF::class, - 'toolbar' => DebugToolbar::class, - 'honeypot' => Honeypot::class, - 'invalidchars' => InvalidChars::class, - 'secureheaders' => SecureHeaders::class, - 'cors' => Cors::class, - 'forcehttps' => ForceHTTPS::class, - 'pagecache' => PageCache::class, - 'performance' => PerformanceMetrics::class, - ]; - - /** - * List of special required filters. - * - * The filters listed here are special. They are applied before and after - * other kinds of filters, and always applied even if a route does not exist. - * - * Filters set by default provide framework functionality. If removed, - * those functions will no longer work. - * - * @see https://codeigniter.com/user_guide/incoming/filters.html#provided-filters - * - * @var array{before: list<string>, after: list<string>} - */ - public array $required = [ - 'before' => [ - 'forcehttps', // Force Global Secure Requests - 'pagecache', // Web Page Caching - ], - 'after' => [ - 'pagecache', // Web Page Caching - 'performance', // Performance Metrics - 'toolbar', // Debug Toolbar - ], - ]; - - /** - * List of filter aliases that are always - * applied before and after every request. - * - * @var array<string, array<string, array<string, string>>>|array<string, list<string>> - */ - public array $globals = [ - 'before' => [ - // 'honeypot', - // 'csrf', - // 'invalidchars', - ], - 'after' => [ - // 'honeypot', - // 'secureheaders', - ], - ]; - - /** - * List of filter aliases that works on a - * particular HTTP method (GET, POST, etc.). - * - * Example: - * 'POST' => ['foo', 'bar'] - * - * If you use this, you should disable auto-routing because auto-routing - * permits any HTTP method to access a controller. Accessing the controller - * with a method you don't expect could bypass the filter. - * - * @var array<string, list<string>> - */ - public array $methods = []; - - /** - * List of filter aliases that should run on any - * before or after URI patterns. - * - * Example: - * 'isLoggedIn' => ['before' => ['account/*', 'profiles/*']] - * - * @var array<string, array<string, list<string>>> - */ - public array $filters = []; -} diff --git a/app/Config--newest/ForeignCharacters.php b/app/Config--newest/ForeignCharacters.php deleted file mode 100644 index f1a95725..00000000 --- a/app/Config--newest/ForeignCharacters.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\ForeignCharacters as BaseForeignCharacters; - -/** - * @immutable - */ -class ForeignCharacters extends BaseForeignCharacters -{ -} diff --git a/app/Config--newest/Format.php b/app/Config--newest/Format.php deleted file mode 100644 index 3de98d7a..00000000 --- a/app/Config--newest/Format.php +++ /dev/null @@ -1,77 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\BaseConfig; -use CodeIgniter\Format\FormatterInterface; -use CodeIgniter\Format\JSONFormatter; -use CodeIgniter\Format\XMLFormatter; - -class Format extends BaseConfig -{ - /** - * -------------------------------------------------------------------------- - * Available Response Formats - * -------------------------------------------------------------------------- - * - * When you perform content negotiation with the request, these are the - * available formats that your application supports. This is currently - * only used with the API\ResponseTrait. A valid Formatter must exist - * for the specified format. - * - * These formats are only checked when the data passed to the respond() - * method is an array. - * - * @var list<string> - */ - public array $supportedResponseFormats = [ - 'application/json', - 'application/xml', // machine-readable XML - 'text/xml', // human-readable XML - ]; - - /** - * -------------------------------------------------------------------------- - * Formatters - * -------------------------------------------------------------------------- - * - * Lists the class to use to format responses with of a particular type. - * For each mime type, list the class that should be used. Formatters - * can be retrieved through the getFormatter() method. - * - * @var array<string, string> - */ - public array $formatters = [ - 'application/json' => JSONFormatter::class, - 'application/xml' => XMLFormatter::class, - 'text/xml' => XMLFormatter::class, - ]; - - /** - * -------------------------------------------------------------------------- - * Formatters Options - * -------------------------------------------------------------------------- - * - * Additional Options to adjust default formatters behaviour. - * For each mime type, list the additional options that should be used. - * - * @var array<string, int> - */ - public array $formatterOptions = [ - 'application/json' => JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES, - 'application/xml' => 0, - 'text/xml' => 0, - ]; - - /** - * A Factory method to return the appropriate formatter for the given mime type. - * - * @return FormatterInterface - * - * @deprecated This is an alias of `\CodeIgniter\Format\Format::getFormatter`. Use that instead. - */ - public function getFormatter(string $mime) - { - return Services::format()->getFormatter($mime); - } -} diff --git a/app/Config--newest/Generators.php b/app/Config--newest/Generators.php deleted file mode 100644 index cc92c7aa..00000000 --- a/app/Config--newest/Generators.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\BaseConfig; - -class Generators extends BaseConfig -{ - /** - * -------------------------------------------------------------------------- - * Generator Commands' Views - * -------------------------------------------------------------------------- - * - * This array defines the mapping of generator commands to the view files - * they are using. If you need to customize them for your own, copy these - * view files in your own folder and indicate the location here. - * - * You will notice that the views have special placeholders enclosed in - * curly braces `{...}`. These placeholders are used internally by the - * generator commands in processing replacements, thus you are warned - * not to delete them or modify the names. If you will do so, you may - * end up disrupting the scaffolding process and throw errors. - * - * YOU HAVE BEEN WARNED! - * - * @var array<string, array<string, string>|string> - */ - public array $views = [ - 'make:cell' => [ - 'class' => 'CodeIgniter\Commands\Generators\Views\cell.tpl.php', - 'view' => 'CodeIgniter\Commands\Generators\Views\cell_view.tpl.php', - ], - 'make:command' => 'CodeIgniter\Commands\Generators\Views\command.tpl.php', - 'make:config' => 'CodeIgniter\Commands\Generators\Views\config.tpl.php', - 'make:controller' => 'CodeIgniter\Commands\Generators\Views\controller.tpl.php', - 'make:entity' => 'CodeIgniter\Commands\Generators\Views\entity.tpl.php', - 'make:filter' => 'CodeIgniter\Commands\Generators\Views\filter.tpl.php', - 'make:migration' => 'CodeIgniter\Commands\Generators\Views\migration.tpl.php', - 'make:model' => 'CodeIgniter\Commands\Generators\Views\model.tpl.php', - 'make:seeder' => 'CodeIgniter\Commands\Generators\Views\seeder.tpl.php', - 'make:validation' => 'CodeIgniter\Commands\Generators\Views\validation.tpl.php', - 'session:migration' => 'CodeIgniter\Commands\Generators\Views\migration.tpl.php', - ]; -} diff --git a/app/Config--newest/Honeypot.php b/app/Config--newest/Honeypot.php deleted file mode 100644 index 67ebcb0e..00000000 --- a/app/Config--newest/Honeypot.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\BaseConfig; - -class Honeypot extends BaseConfig -{ - /** - * Makes Honeypot visible or not to human - */ - public bool $hidden = true; - - /** - * Honeypot Label Content - */ - public string $label = 'Fill This Field'; - - /** - * Honeypot Field Name - */ - public string $name = 'honeypot'; - - /** - * Honeypot HTML Template - */ - public string $template = '<label>{label}</label><input type="text" name="{name}" value="">'; - - /** - * Honeypot container - * - * If you enabled CSP, you can remove `style="display:none"`. - */ - public string $container = '<div style="display:none">{template}</div>'; - - /** - * The id attribute for Honeypot container tag - * - * Used when CSP is enabled. - */ - public string $containerId = 'hpc'; -} diff --git a/app/Config--newest/Images.php b/app/Config--newest/Images.php deleted file mode 100644 index a33ddadb..00000000 --- a/app/Config--newest/Images.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\BaseConfig; -use CodeIgniter\Images\Handlers\GDHandler; -use CodeIgniter\Images\Handlers\ImageMagickHandler; - -class Images extends BaseConfig -{ - /** - * Default handler used if no other handler is specified. - */ - public string $defaultHandler = 'gd'; - - /** - * The path to the image library. - * Required for ImageMagick, GraphicsMagick, or NetPBM. - */ - public string $libraryPath = '/usr/local/bin/convert'; - - /** - * The available handler classes. - * - * @var array<string, string> - */ - public array $handlers = [ - 'gd' => GDHandler::class, - 'imagick' => ImageMagickHandler::class, - ]; -} diff --git a/app/Config--newest/Kint.php b/app/Config--newest/Kint.php deleted file mode 100644 index d0707827..00000000 --- a/app/Config--newest/Kint.php +++ /dev/null @@ -1,65 +0,0 @@ -<?php - -namespace Config; - -use Kint\Parser\ConstructablePluginInterface; -use Kint\Renderer\AbstractRenderer; -use Kint\Renderer\Rich\TabPluginInterface; -use Kint\Renderer\Rich\ValuePluginInterface; - -/** - * -------------------------------------------------------------------------- - * Kint - * -------------------------------------------------------------------------- - * - * We use Kint's `RichRenderer` and `CLIRenderer`. This area contains options - * that you can set to customize how Kint works for you. - * - * @see https://kint-php.github.io/kint/ for details on these settings. - */ -class Kint -{ - /* - |-------------------------------------------------------------------------- - | Global Settings - |-------------------------------------------------------------------------- - */ - - /** - * @var list<class-string<ConstructablePluginInterface>|ConstructablePluginInterface>|null - */ - public $plugins; - - public int $maxDepth = 6; - public bool $displayCalledFrom = true; - public bool $expanded = false; - - /* - |-------------------------------------------------------------------------- - | RichRenderer Settings - |-------------------------------------------------------------------------- - */ - public string $richTheme = 'aante-light.css'; - public bool $richFolder = false; - public int $richSort = AbstractRenderer::SORT_FULL; - - /** - * @var array<string, class-string<ValuePluginInterface>>|null - */ - public $richObjectPlugins; - - /** - * @var array<string, class-string<TabPluginInterface>>|null - */ - public $richTabPlugins; - - /* - |-------------------------------------------------------------------------- - | CLI Settings - |-------------------------------------------------------------------------- - */ - public bool $cliColors = true; - public bool $cliForceUTF8 = false; - public bool $cliDetectWidth = true; - public int $cliMinWidth = 40; -} diff --git a/app/Config--newest/Logger.php b/app/Config--newest/Logger.php deleted file mode 100644 index ab6997e5..00000000 --- a/app/Config--newest/Logger.php +++ /dev/null @@ -1,150 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\BaseConfig; -use CodeIgniter\Log\Handlers\FileHandler; - -class Logger extends BaseConfig -{ - /** - * -------------------------------------------------------------------------- - * Error Logging Threshold - * -------------------------------------------------------------------------- - * - * You can enable error logging by setting a threshold over zero. The - * threshold determines what gets logged. Any values below or equal to the - * threshold will be logged. - * - * Threshold options are: - * - * - 0 = Disables logging, Error logging TURNED OFF - * - 1 = Emergency Messages - System is unusable - * - 2 = Alert Messages - Action Must Be Taken Immediately - * - 3 = Critical Messages - Application component unavailable, unexpected exception. - * - 4 = Runtime Errors - Don't need immediate action, but should be monitored. - * - 5 = Warnings - Exceptional occurrences that are not errors. - * - 6 = Notices - Normal but significant events. - * - 7 = Info - Interesting events, like user logging in, etc. - * - 8 = Debug - Detailed debug information. - * - 9 = All Messages - * - * You can also pass an array with threshold levels to show individual error types - * - * array(1, 2, 3, 8) = Emergency, Alert, Critical, and Debug messages - * - * For a live site you'll usually enable Critical or higher (3) to be logged otherwise - * your log files will fill up very fast. - * - * @var int|list<int> - */ - public $threshold = (ENVIRONMENT === 'production') ? 4 : 9; - - /** - * -------------------------------------------------------------------------- - * Date Format for Logs - * -------------------------------------------------------------------------- - * - * Each item that is logged has an associated date. You can use PHP date - * codes to set your own date formatting - */ - public string $dateFormat = 'Y-m-d H:i:s'; - - /** - * -------------------------------------------------------------------------- - * Log Handlers - * -------------------------------------------------------------------------- - * - * The logging system supports multiple actions to be taken when something - * is logged. This is done by allowing for multiple Handlers, special classes - * designed to write the log to their chosen destinations, whether that is - * a file on the getServer, a cloud-based service, or even taking actions such - * as emailing the dev team. - * - * Each handler is defined by the class name used for that handler, and it - * MUST implement the `CodeIgniter\Log\Handlers\HandlerInterface` interface. - * - * The value of each key is an array of configuration items that are sent - * to the constructor of each handler. The only required configuration item - * is the 'handles' element, which must be an array of integer log levels. - * This is most easily handled by using the constants defined in the - * `Psr\Log\LogLevel` class. - * - * Handlers are executed in the order defined in this array, starting with - * the handler on top and continuing down. - * - * @var array<class-string, array<string, int|list<string>|string>> - */ - public array $handlers = [ - /* - * -------------------------------------------------------------------- - * File Handler - * -------------------------------------------------------------------- - */ - FileHandler::class => [ - // The log levels that this handler will handle. - 'handles' => [ - 'critical', - 'alert', - 'emergency', - 'debug', - 'error', - 'info', - 'notice', - 'warning', - ], - - /* - * The default filename extension for log files. - * An extension of 'php' allows for protecting the log files via basic - * scripting, when they are to be stored under a publicly accessible directory. - * - * NOTE: Leaving it blank will default to 'log'. - */ - 'fileExtension' => '', - - /* - * The file system permissions to be applied on newly created log files. - * - * IMPORTANT: This MUST be an integer (no quotes) and you MUST use octal - * integer notation (i.e. 0700, 0644, etc.) - */ - 'filePermissions' => 0644, - - /* - * Logging Directory Path - * - * By default, logs are written to WRITEPATH . 'logs/' - * Specify a different destination here, if desired. - */ - 'path' => '', - ], - - /* - * The ChromeLoggerHandler requires the use of the Chrome web browser - * and the ChromeLogger extension. Uncomment this block to use it. - */ - // 'CodeIgniter\Log\Handlers\ChromeLoggerHandler' => [ - // /* - // * The log levels that this handler will handle. - // */ - // 'handles' => ['critical', 'alert', 'emergency', 'debug', - // 'error', 'info', 'notice', 'warning'], - // ], - - /* - * The ErrorlogHandler writes the logs to PHP's native `error_log()` function. - * Uncomment this block to use it. - */ - // 'CodeIgniter\Log\Handlers\ErrorlogHandler' => [ - // /* The log levels this handler can handle. */ - // 'handles' => ['critical', 'alert', 'emergency', 'debug', 'error', 'info', 'notice', 'warning'], - // - // /* - // * The message type where the error should go. Can be 0 or 4, or use the - // * class constants: `ErrorlogHandler::TYPE_OS` (0) or `ErrorlogHandler::TYPE_SAPI` (4) - // */ - // 'messageType' => 0, - // ], - ]; -} diff --git a/app/Config--newest/Migrations.php b/app/Config--newest/Migrations.php deleted file mode 100644 index 1dec8b9b..00000000 --- a/app/Config--newest/Migrations.php +++ /dev/null @@ -1,50 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\BaseConfig; - -class Migrations extends BaseConfig -{ - /** - * -------------------------------------------------------------------------- - * Enable/Disable Migrations - * -------------------------------------------------------------------------- - * - * Migrations are enabled by default. - * - * You should enable migrations whenever you intend to do a schema migration - * and disable it back when you're done. - */ - public bool $enabled = true; - - /** - * -------------------------------------------------------------------------- - * Migrations Table - * -------------------------------------------------------------------------- - * - * This is the name of the table that will store the current migrations state. - * When migrations runs it will store in a database table which migration - * files have already been run. - */ - public string $table = 'migrations'; - - /** - * -------------------------------------------------------------------------- - * Timestamp Format - * -------------------------------------------------------------------------- - * - * This is the format that will be used when creating new migrations - * using the CLI command: - * > php spark make:migration - * - * NOTE: if you set an unsupported format, migration runner will not find - * your migration files. - * - * Supported formats: - * - YmdHis_ - * - Y-m-d-His_ - * - Y_m_d_His_ - */ - public string $timestampFormat = 'Y-m-d-His_'; -} diff --git a/app/Config--newest/Mimes.php b/app/Config--newest/Mimes.php deleted file mode 100644 index 7722444a..00000000 --- a/app/Config--newest/Mimes.php +++ /dev/null @@ -1,536 +0,0 @@ -<?php - -namespace Config; - -/** - * Mimes - * - * This file contains an array of mime types. It is used by the - * Upload class to help identify allowed file types. - * - * When more than one variation for an extension exist (like jpg, jpeg, etc) - * the most common one should be first in the array to aid the guess* - * methods. The same applies when more than one mime-type exists for a - * single extension. - * - * When working with mime types, please make sure you have the ´fileinfo´ - * extension enabled to reliably detect the media types. - * - * @immutable - */ -class Mimes -{ - /** - * Map of extensions to mime types. - * - * @var array<string, list<string>|string> - */ - public static array $mimes = [ - 'hqx' => [ - 'application/mac-binhex40', - 'application/mac-binhex', - 'application/x-binhex40', - 'application/x-mac-binhex40', - ], - 'cpt' => 'application/mac-compactpro', - 'csv' => [ - 'text/csv', - 'text/x-comma-separated-values', - 'text/comma-separated-values', - 'application/vnd.ms-excel', - 'application/x-csv', - 'text/x-csv', - 'application/csv', - 'application/excel', - 'application/vnd.msexcel', - 'text/plain', - ], - 'bin' => [ - 'application/macbinary', - 'application/mac-binary', - 'application/octet-stream', - 'application/x-binary', - 'application/x-macbinary', - ], - 'dms' => 'application/octet-stream', - 'lha' => 'application/octet-stream', - 'lzh' => 'application/octet-stream', - 'exe' => [ - 'application/octet-stream', - 'application/vnd.microsoft.portable-executable', - 'application/x-dosexec', - 'application/x-msdownload', - ], - 'class' => 'application/octet-stream', - 'psd' => [ - 'application/x-photoshop', - 'image/vnd.adobe.photoshop', - ], - 'so' => 'application/octet-stream', - 'sea' => 'application/octet-stream', - 'dll' => 'application/octet-stream', - 'oda' => 'application/oda', - 'pdf' => [ - 'application/pdf', - 'application/force-download', - 'application/x-download', - ], - 'ai' => [ - 'application/pdf', - 'application/postscript', - ], - 'eps' => 'application/postscript', - 'ps' => 'application/postscript', - 'smi' => 'application/smil', - 'smil' => 'application/smil', - 'mif' => 'application/vnd.mif', - 'xls' => [ - 'application/vnd.ms-excel', - 'application/msexcel', - 'application/x-msexcel', - 'application/x-ms-excel', - 'application/x-excel', - 'application/x-dos_ms_excel', - 'application/xls', - 'application/x-xls', - 'application/excel', - 'application/download', - 'application/vnd.ms-office', - 'application/msword', - ], - 'ppt' => [ - 'application/vnd.ms-powerpoint', - 'application/powerpoint', - 'application/vnd.ms-office', - 'application/msword', - ], - 'pptx' => [ - 'application/vnd.openxmlformats-officedocument.presentationml.presentation', - ], - 'wbxml' => 'application/wbxml', - 'wmlc' => 'application/wmlc', - 'dcr' => 'application/x-director', - 'dir' => 'application/x-director', - 'dxr' => 'application/x-director', - 'dvi' => 'application/x-dvi', - 'gtar' => 'application/x-gtar', - 'gz' => 'application/x-gzip', - 'gzip' => 'application/x-gzip', - 'php' => [ - 'application/x-php', - 'application/x-httpd-php', - 'application/php', - 'text/php', - 'text/x-php', - 'application/x-httpd-php-source', - ], - 'php4' => 'application/x-httpd-php', - 'php3' => 'application/x-httpd-php', - 'phtml' => 'application/x-httpd-php', - 'phps' => 'application/x-httpd-php-source', - 'js' => [ - 'application/x-javascript', - 'text/plain', - ], - 'swf' => 'application/x-shockwave-flash', - 'sit' => 'application/x-stuffit', - 'tar' => 'application/x-tar', - 'tgz' => [ - 'application/x-tar', - 'application/x-gzip-compressed', - ], - 'z' => 'application/x-compress', - 'xhtml' => 'application/xhtml+xml', - 'xht' => 'application/xhtml+xml', - 'zip' => [ - 'application/x-zip', - 'application/zip', - 'application/x-zip-compressed', - 'application/s-compressed', - 'multipart/x-zip', - ], - 'rar' => [ - 'application/vnd.rar', - 'application/x-rar', - 'application/rar', - 'application/x-rar-compressed', - ], - 'mid' => 'audio/midi', - 'midi' => 'audio/midi', - 'mpga' => 'audio/mpeg', - 'mp2' => 'audio/mpeg', - 'mp3' => [ - 'audio/mpeg', - 'audio/mpg', - 'audio/mpeg3', - 'audio/mp3', - ], - 'aif' => [ - 'audio/x-aiff', - 'audio/aiff', - ], - 'aiff' => [ - 'audio/x-aiff', - 'audio/aiff', - ], - 'aifc' => 'audio/x-aiff', - 'ram' => 'audio/x-pn-realaudio', - 'rm' => 'audio/x-pn-realaudio', - 'rpm' => 'audio/x-pn-realaudio-plugin', - 'ra' => 'audio/x-realaudio', - 'rv' => 'video/vnd.rn-realvideo', - 'wav' => [ - 'audio/x-wav', - 'audio/wave', - 'audio/wav', - ], - 'bmp' => [ - 'image/bmp', - 'image/x-bmp', - 'image/x-bitmap', - 'image/x-xbitmap', - 'image/x-win-bitmap', - 'image/x-windows-bmp', - 'image/ms-bmp', - 'image/x-ms-bmp', - 'application/bmp', - 'application/x-bmp', - 'application/x-win-bitmap', - ], - 'gif' => 'image/gif', - 'jpg' => [ - 'image/jpeg', - 'image/pjpeg', - ], - 'jpeg' => [ - 'image/jpeg', - 'image/pjpeg', - ], - 'jpe' => [ - 'image/jpeg', - 'image/pjpeg', - ], - 'jp2' => [ - 'image/jp2', - 'video/mj2', - 'image/jpx', - 'image/jpm', - ], - 'j2k' => [ - 'image/jp2', - 'video/mj2', - 'image/jpx', - 'image/jpm', - ], - 'jpf' => [ - 'image/jp2', - 'video/mj2', - 'image/jpx', - 'image/jpm', - ], - 'jpg2' => [ - 'image/jp2', - 'video/mj2', - 'image/jpx', - 'image/jpm', - ], - 'jpx' => [ - 'image/jp2', - 'video/mj2', - 'image/jpx', - 'image/jpm', - ], - 'jpm' => [ - 'image/jp2', - 'video/mj2', - 'image/jpx', - 'image/jpm', - ], - 'mj2' => [ - 'image/jp2', - 'video/mj2', - 'image/jpx', - 'image/jpm', - ], - 'mjp2' => [ - 'image/jp2', - 'video/mj2', - 'image/jpx', - 'image/jpm', - ], - 'png' => [ - 'image/png', - 'image/x-png', - ], - 'webp' => 'image/webp', - 'tif' => 'image/tiff', - 'tiff' => 'image/tiff', - 'css' => [ - 'text/css', - 'text/plain', - ], - 'html' => [ - 'text/html', - 'text/plain', - ], - 'htm' => [ - 'text/html', - 'text/plain', - ], - 'shtml' => [ - 'text/html', - 'text/plain', - ], - 'txt' => 'text/plain', - 'text' => 'text/plain', - 'log' => [ - 'text/plain', - 'text/x-log', - ], - 'rtx' => 'text/richtext', - 'rtf' => 'text/rtf', - 'xml' => [ - 'application/xml', - 'text/xml', - 'text/plain', - ], - 'xsl' => [ - 'application/xml', - 'text/xsl', - 'text/xml', - ], - 'mpeg' => 'video/mpeg', - 'mpg' => 'video/mpeg', - 'mpe' => 'video/mpeg', - 'qt' => 'video/quicktime', - 'mov' => 'video/quicktime', - 'avi' => [ - 'video/x-msvideo', - 'video/msvideo', - 'video/avi', - 'application/x-troff-msvideo', - ], - 'movie' => 'video/x-sgi-movie', - 'doc' => [ - 'application/msword', - 'application/vnd.ms-office', - ], - 'docx' => [ - 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', - 'application/zip', - 'application/msword', - 'application/x-zip', - ], - 'dot' => [ - 'application/msword', - 'application/vnd.ms-office', - ], - 'dotx' => [ - 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', - 'application/zip', - 'application/msword', - ], - 'xlsx' => [ - 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', - 'application/zip', - 'application/vnd.ms-excel', - 'application/msword', - 'application/x-zip', - ], - 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12', - 'xlsm' => 'application/vnd.ms-excel.sheet.macroEnabled.12', - 'word' => [ - 'application/msword', - 'application/octet-stream', - ], - 'xl' => 'application/excel', - 'eml' => 'message/rfc822', - 'json' => [ - 'application/json', - 'text/json', - ], - 'pem' => [ - 'application/x-x509-user-cert', - 'application/x-pem-file', - 'application/octet-stream', - ], - 'p10' => [ - 'application/x-pkcs10', - 'application/pkcs10', - ], - 'p12' => 'application/x-pkcs12', - 'p7a' => 'application/x-pkcs7-signature', - 'p7c' => [ - 'application/pkcs7-mime', - 'application/x-pkcs7-mime', - ], - 'p7m' => [ - 'application/pkcs7-mime', - 'application/x-pkcs7-mime', - ], - 'p7r' => 'application/x-pkcs7-certreqresp', - 'p7s' => 'application/pkcs7-signature', - 'crt' => [ - 'application/x-x509-ca-cert', - 'application/x-x509-user-cert', - 'application/pkix-cert', - ], - 'crl' => [ - 'application/pkix-crl', - 'application/pkcs-crl', - ], - 'der' => 'application/x-x509-ca-cert', - 'kdb' => 'application/octet-stream', - 'pgp' => 'application/pgp', - 'gpg' => 'application/gpg-keys', - 'sst' => 'application/octet-stream', - 'csr' => 'application/octet-stream', - 'rsa' => 'application/x-pkcs7', - 'cer' => [ - 'application/pkix-cert', - 'application/x-x509-ca-cert', - ], - '3g2' => 'video/3gpp2', - '3gp' => [ - 'video/3gp', - 'video/3gpp', - ], - 'mp4' => 'video/mp4', - 'm4a' => 'audio/x-m4a', - 'f4v' => [ - 'video/mp4', - 'video/x-f4v', - ], - 'flv' => 'video/x-flv', - 'webm' => 'video/webm', - 'aac' => 'audio/x-acc', - 'm4u' => 'application/vnd.mpegurl', - 'm3u' => 'text/plain', - 'xspf' => 'application/xspf+xml', - 'vlc' => 'application/videolan', - 'wmv' => [ - 'video/x-ms-wmv', - 'video/x-ms-asf', - ], - 'au' => 'audio/x-au', - 'ac3' => 'audio/ac3', - 'flac' => 'audio/x-flac', - 'ogg' => [ - 'audio/ogg', - 'video/ogg', - 'application/ogg', - ], - 'kmz' => [ - 'application/vnd.google-earth.kmz', - 'application/zip', - 'application/x-zip', - ], - 'kml' => [ - 'application/vnd.google-earth.kml+xml', - 'application/xml', - 'text/xml', - ], - 'ics' => 'text/calendar', - 'ical' => 'text/calendar', - 'zsh' => 'text/x-scriptzsh', - '7zip' => [ - 'application/x-compressed', - 'application/x-zip-compressed', - 'application/zip', - 'multipart/x-zip', - ], - 'cdr' => [ - 'application/cdr', - 'application/coreldraw', - 'application/x-cdr', - 'application/x-coreldraw', - 'image/cdr', - 'image/x-cdr', - 'zz-application/zz-winassoc-cdr', - ], - 'wma' => [ - 'audio/x-ms-wma', - 'video/x-ms-asf', - ], - 'jar' => [ - 'application/java-archive', - 'application/x-java-application', - 'application/x-jar', - 'application/x-compressed', - ], - 'svg' => [ - 'image/svg+xml', - 'image/svg', - 'application/xml', - 'text/xml', - ], - 'vcf' => 'text/x-vcard', - 'srt' => [ - 'text/srt', - 'text/plain', - ], - 'vtt' => [ - 'text/vtt', - 'text/plain', - ], - 'ico' => [ - 'image/x-icon', - 'image/x-ico', - 'image/vnd.microsoft.icon', - ], - 'stl' => [ - 'application/sla', - 'application/vnd.ms-pki.stl', - 'application/x-navistyle', - ], - ]; - - /** - * Attempts to determine the best mime type for the given file extension. - * - * @return string|null The mime type found, or none if unable to determine. - */ - public static function guessTypeFromExtension(string $extension) - { - $extension = trim(strtolower($extension), '. '); - - if (! array_key_exists($extension, static::$mimes)) { - return null; - } - - return is_array(static::$mimes[$extension]) ? static::$mimes[$extension][0] : static::$mimes[$extension]; - } - - /** - * Attempts to determine the best file extension for a given mime type. - * - * @param string|null $proposedExtension - default extension (in case there is more than one with the same mime type) - * - * @return string|null The extension determined, or null if unable to match. - */ - public static function guessExtensionFromType(string $type, ?string $proposedExtension = null) - { - $type = trim(strtolower($type), '. '); - - $proposedExtension = trim(strtolower($proposedExtension ?? '')); - - if ( - $proposedExtension !== '' - && array_key_exists($proposedExtension, static::$mimes) - && in_array($type, (array) static::$mimes[$proposedExtension], true) - ) { - // The detected mime type matches with the proposed extension. - return $proposedExtension; - } - - // Reverse check the mime type list if no extension was proposed. - // This search is order sensitive! - foreach (static::$mimes as $ext => $types) { - if (in_array($type, (array) $types, true)) { - return $ext; - } - } - - return null; - } -} diff --git a/app/Config--newest/Modules.php b/app/Config--newest/Modules.php deleted file mode 100644 index 8d4bf565..00000000 --- a/app/Config--newest/Modules.php +++ /dev/null @@ -1,84 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Modules\Modules as BaseModules; - -/** - * Modules Configuration. - * - * NOTE: This class is required prior to Autoloader instantiation, - * and does not extend BaseConfig. - * - * @immutable - */ -class Modules extends BaseModules -{ - /** - * -------------------------------------------------------------------------- - * Enable Auto-Discovery? - * -------------------------------------------------------------------------- - * - * If true, then auto-discovery will happen across all elements listed in - * $aliases below. If false, no auto-discovery will happen at all, - * giving a slight performance boost. - * - * @var bool - */ - public $enabled = true; - - /** - * -------------------------------------------------------------------------- - * Enable Auto-Discovery Within Composer Packages? - * -------------------------------------------------------------------------- - * - * If true, then auto-discovery will happen across all namespaces loaded - * by Composer, as well as the namespaces configured locally. - * - * @var bool - */ - public $discoverInComposer = true; - - /** - * The Composer package list for Auto-Discovery - * This setting is optional. - * - * E.g.: - * [ - * 'only' => [ - * // List up all packages to auto-discover - * 'codeigniter4/shield', - * ], - * ] - * or - * [ - * 'exclude' => [ - * // List up packages to exclude. - * 'pestphp/pest', - * ], - * ] - * - * @var array{only?: list<string>, exclude?: list<string>} - */ - public $composerPackages = []; - - /** - * -------------------------------------------------------------------------- - * Auto-Discovery Rules - * -------------------------------------------------------------------------- - * - * Aliases list of all discovery classes that will be active and used during - * the current application request. - * - * If it is not listed, only the base application elements will be used. - * - * @var list<string> - */ - public $aliases = [ - 'events', - 'filters', - 'registrars', - 'routes', - 'services', - ]; -} diff --git a/app/Config--newest/Optimize.php b/app/Config--newest/Optimize.php deleted file mode 100644 index 6fb441fd..00000000 --- a/app/Config--newest/Optimize.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php - -namespace Config; - -/** - * Optimization Configuration. - * - * NOTE: This class does not extend BaseConfig for performance reasons. - * So you cannot replace the property values with Environment Variables. - * - * @immutable - */ -class Optimize -{ - /** - * -------------------------------------------------------------------------- - * Config Caching - * -------------------------------------------------------------------------- - * - * @see https://codeigniter.com/user_guide/concepts/factories.html#config-caching - */ - public bool $configCacheEnabled = false; - - /** - * -------------------------------------------------------------------------- - * Config Caching - * -------------------------------------------------------------------------- - * - * @see https://codeigniter.com/user_guide/concepts/autoloader.html#file-locator-caching - */ - public bool $locatorCacheEnabled = false; -} diff --git a/app/Config--newest/Pager.php b/app/Config--newest/Pager.php deleted file mode 100644 index e341f4d3..00000000 --- a/app/Config--newest/Pager.php +++ /dev/null @@ -1,37 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\BaseConfig; - -class Pager extends BaseConfig -{ - /** - * -------------------------------------------------------------------------- - * Templates - * -------------------------------------------------------------------------- - * - * Pagination links are rendered out using views to configure their - * appearance. This array contains aliases and the view names to - * use when rendering the links. - * - * Within each view, the Pager object will be available as $pager, - * and the desired group as $pagerGroup; - * - * @var array<string, string> - */ - public array $templates = [ - 'default_full' => 'CodeIgniter\Pager\Views\default_full', - 'default_simple' => 'CodeIgniter\Pager\Views\default_simple', - 'default_head' => 'CodeIgniter\Pager\Views\default_head', - ]; - - /** - * -------------------------------------------------------------------------- - * Items Per Page - * -------------------------------------------------------------------------- - * - * The default number of results shown in a single page. - */ - public int $perPage = 20; -} diff --git a/app/Config--newest/Paths.php b/app/Config--newest/Paths.php deleted file mode 100644 index 262c745f..00000000 --- a/app/Config--newest/Paths.php +++ /dev/null @@ -1,80 +0,0 @@ -<?php - -namespace Config; - -/** - * Paths - * - * Holds the paths that are used by the system to - * locate the main directories, app, system, etc. - * - * Modifying these allows you to restructure your application, - * share a system folder between multiple applications, and more. - * - * All paths are relative to the project's root folder. - * - * NOTE: This class is required prior to Autoloader instantiation, - * and does not extend BaseConfig. - * - * @immutable - */ -class Paths -{ - /** - * --------------------------------------------------------------- - * SYSTEM FOLDER NAME - * --------------------------------------------------------------- - * - * This must contain the name of your "system" folder. Include - * the path if the folder is not in the same directory as this file. - */ - public string $systemDirectory = __DIR__ . '/../../system'; - - /** - * --------------------------------------------------------------- - * APPLICATION FOLDER NAME - * --------------------------------------------------------------- - * - * If you want this front controller to use a different "app" - * folder than the default one you can set its name here. The folder - * can also be renamed or relocated anywhere on your server. If - * you do, use a full server path. - * - * @see http://codeigniter.com/user_guide/general/managing_apps.html - */ - public string $appDirectory = __DIR__ . '/..'; - - /** - * --------------------------------------------------------------- - * WRITABLE DIRECTORY NAME - * --------------------------------------------------------------- - * - * This variable must contain the name of your "writable" directory. - * The writable directory allows you to group all directories that - * need write permission to a single place that can be tucked away - * for maximum security, keeping it out of the app and/or - * system directories. - */ - public string $writableDirectory = __DIR__ . '/../../writable'; - - /** - * --------------------------------------------------------------- - * TESTS DIRECTORY NAME - * --------------------------------------------------------------- - * - * This variable must contain the name of your "tests" directory. - */ - public string $testsDirectory = __DIR__ . '/../../tests'; - - /** - * --------------------------------------------------------------- - * VIEW DIRECTORY NAME - * --------------------------------------------------------------- - * - * This variable must contain the name of the directory that - * contains the view files used by your application. By - * default this is in `app/Views`. This value - * is used when no value is provided to `Services::renderer()`. - */ - public string $viewDirectory = __DIR__ . '/../Views'; -} diff --git a/app/Config--newest/Publisher.php b/app/Config--newest/Publisher.php deleted file mode 100644 index bf03be1d..00000000 --- a/app/Config--newest/Publisher.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\Publisher as BasePublisher; - -/** - * Publisher Configuration - * - * Defines basic security restrictions for the Publisher class - * to prevent abuse by injecting malicious files into a project. - */ -class Publisher extends BasePublisher -{ - /** - * A list of allowed destinations with a (pseudo-)regex - * of allowed files for each destination. - * Attempts to publish to directories not in this list will - * result in a PublisherException. Files that do no fit the - * pattern will cause copy/merge to fail. - * - * @var array<string, string> - */ - public $restrictions = [ - ROOTPATH => '*', - FCPATH => '#\.(s?css|js|map|html?|xml|json|webmanifest|ttf|eot|woff2?|gif|jpe?g|tiff?|png|webp|bmp|ico|svg)$#i', - ]; -} diff --git a/app/Config--newest/Routes.php b/app/Config--newest/Routes.php deleted file mode 100644 index 809be80f..00000000 --- a/app/Config--newest/Routes.php +++ /dev/null @@ -1,9 +0,0 @@ -<?php - -use CodeIgniter\Router\RouteCollection; - -/** - * @var RouteCollection $routes - */ -$routes->get('/', 'Auth::index'); -$routes->post('auth/login', 'Auth::login'); diff --git a/app/Config--newest/Routing.php b/app/Config--newest/Routing.php deleted file mode 100644 index 7abadc7b..00000000 --- a/app/Config--newest/Routing.php +++ /dev/null @@ -1,140 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace Config; - -use CodeIgniter\Config\Routing as BaseRouting; - -/** - * Routing configuration - */ -class Routing extends BaseRouting -{ - /** - * For Defined Routes. - * An array of files that contain route definitions. - * Route files are read in order, with the first match - * found taking precedence. - * - * Default: APPPATH . 'Config/Routes.php' - * - * @var list<string> - */ - public array $routeFiles = [ - APPPATH . 'Config/Routes.php', - ]; - - /** - * For Defined Routes and Auto Routing. - * The default namespace to use for Controllers when no other - * namespace has been specified. - * - * Default: 'App\Controllers' - */ - public string $defaultNamespace = 'App\Controllers'; - - /** - * For Auto Routing. - * The default controller to use when no other controller has been - * specified. - * - * Default: 'Home' - */ - public string $defaultController = 'Home'; - - /** - * For Defined Routes and Auto Routing. - * The default method to call on the controller when no other - * method has been set in the route. - * - * Default: 'index' - */ - public string $defaultMethod = 'index'; - - /** - * For Auto Routing. - * Whether to translate dashes in URIs for controller/method to underscores. - * Primarily useful when using the auto-routing. - * - * Default: false - */ - public bool $translateURIDashes = false; - - /** - * Sets the class/method that should be called if routing doesn't - * find a match. It can be the controller/method name like: Users::index - * - * This setting is passed to the Router class and handled there. - * - * If you want to use a closure, you will have to set it in the - * routes file by calling: - * - * $routes->set404Override(function() { - * // Do something here - * }); - * - * Example: - * public $override404 = 'App\Errors::show404'; - */ - public ?string $override404 = null; - - /** - * If TRUE, the system will attempt to match the URI against - * Controllers by matching each segment against folders/files - * in APPPATH/Controllers, when a match wasn't found against - * defined routes. - * - * If FALSE, will stop searching and do NO automatic routing. - */ - public bool $autoRoute = false; - - /** - * For Defined Routes. - * If TRUE, will enable the use of the 'prioritize' option - * when defining routes. - * - * Default: false - */ - public bool $prioritize = false; - - /** - * For Defined Routes. - * If TRUE, matched multiple URI segments will be passed as one parameter. - * - * Default: false - */ - public bool $multipleSegmentsOneParam = false; - - /** - * For Auto Routing (Improved). - * Map of URI segments and namespaces. - * - * The key is the first URI segment. The value is the controller namespace. - * E.g., - * [ - * 'blog' => 'Acme\Blog\Controllers', - * ] - * - * @var array<string, string> - */ - public array $moduleRoutes = []; - - /** - * For Auto Routing (Improved). - * Whether to translate dashes in URIs for controller/method to CamelCase. - * E.g., blog-controller -> BlogController - * - * If you enable this, $translateURIDashes is ignored. - * - * Default: false - */ - public bool $translateUriToCamelCase = false; -} diff --git a/app/Config--newest/Security.php b/app/Config--newest/Security.php deleted file mode 100644 index 0858b9bb..00000000 --- a/app/Config--newest/Security.php +++ /dev/null @@ -1,103 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\BaseConfig; - -class Security extends BaseConfig -{ - /** - * -------------------------------------------------------------------------- - * CSRF Protection Method - * -------------------------------------------------------------------------- - * - * Protection Method for Cross Site Request Forgery protection. - * - * @var string 'cookie' or 'session' - */ - public string $csrfProtection = 'cookie'; - - /** - * -------------------------------------------------------------------------- - * CSRF Token Randomization - * -------------------------------------------------------------------------- - * - * Randomize the CSRF Token for added security. - */ - public bool $tokenRandomize = false; - - /** - * -------------------------------------------------------------------------- - * CSRF Token Name - * -------------------------------------------------------------------------- - * - * Token name for Cross Site Request Forgery protection. - */ - public string $tokenName = 'csrf_test_name'; - - /** - * -------------------------------------------------------------------------- - * CSRF Header Name - * -------------------------------------------------------------------------- - * - * Header name for Cross Site Request Forgery protection. - */ - public string $headerName = 'X-CSRF-TOKEN'; - - /** - * -------------------------------------------------------------------------- - * CSRF Cookie Name - * -------------------------------------------------------------------------- - * - * Cookie name for Cross Site Request Forgery protection. - */ - public string $cookieName = 'csrf_cookie_name'; - - /** - * -------------------------------------------------------------------------- - * CSRF Expires - * -------------------------------------------------------------------------- - * - * Expiration time for Cross Site Request Forgery protection cookie. - * - * Defaults to two hours (in seconds). - */ - public int $expires = 7200; - - /** - * -------------------------------------------------------------------------- - * CSRF Regenerate - * -------------------------------------------------------------------------- - * - * Regenerate CSRF Token on every submission. - */ - public bool $regenerate = true; - - /** - * -------------------------------------------------------------------------- - * CSRF Redirect - * -------------------------------------------------------------------------- - * - * Redirect to previous page with error on failure. - * - * @see https://codeigniter4.github.io/userguide/libraries/security.html#redirection-on-failure - */ - public bool $redirect = (ENVIRONMENT === 'production'); - - /** - * -------------------------------------------------------------------------- - * CSRF SameSite - * -------------------------------------------------------------------------- - * - * Setting for CSRF SameSite cookie token. - * - * Allowed values are: None - Lax - Strict - ''. - * - * Defaults to `Lax` as recommended in this link: - * - * @see https://portswigger.net/web-security/csrf/samesite-cookies - * - * @deprecated `Config\Cookie` $samesite property is used. - */ - public string $samesite = 'Lax'; -} diff --git a/app/Config--newest/Services.php b/app/Config--newest/Services.php deleted file mode 100644 index df7c8ad0..00000000 --- a/app/Config--newest/Services.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\BaseService; - -/** - * Services Configuration file. - * - * Services are simply other classes/libraries that the system uses - * to do its job. This is used by CodeIgniter to allow the core of the - * framework to be swapped out easily without affecting the usage within - * the rest of your application. - * - * This file holds any application-specific services, or service overrides - * that you might need. An example has been included with the general - * method format you should use for your service methods. For more examples, - * see the core Services file at system/Config/Services.php. - */ -class Services extends BaseService -{ - /* - * public static function example($getShared = true) - * { - * if ($getShared) { - * return static::getSharedInstance('example'); - * } - * - * return new \CodeIgniter\Example(); - * } - */ -} diff --git a/app/Config--newest/Session.php b/app/Config--newest/Session.php deleted file mode 100644 index 6944710f..00000000 --- a/app/Config--newest/Session.php +++ /dev/null @@ -1,127 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\BaseConfig; -use CodeIgniter\Session\Handlers\BaseHandler; -use CodeIgniter\Session\Handlers\FileHandler; - -class Session extends BaseConfig -{ - /** - * -------------------------------------------------------------------------- - * Session Driver - * -------------------------------------------------------------------------- - * - * The session storage driver to use: - * - `CodeIgniter\Session\Handlers\FileHandler` - * - `CodeIgniter\Session\Handlers\DatabaseHandler` - * - `CodeIgniter\Session\Handlers\MemcachedHandler` - * - `CodeIgniter\Session\Handlers\RedisHandler` - * - * @var class-string<BaseHandler> - */ - public string $driver = FileHandler::class; - - /** - * -------------------------------------------------------------------------- - * Session Cookie Name - * -------------------------------------------------------------------------- - * - * The session cookie name, must contain only [0-9a-z_-] characters - */ - public string $cookieName = 'ci_session'; - - /** - * -------------------------------------------------------------------------- - * Session Expiration - * -------------------------------------------------------------------------- - * - * The number of SECONDS you want the session to last. - * Setting to 0 (zero) means expire when the browser is closed. - */ - public int $expiration = 7200; - - /** - * -------------------------------------------------------------------------- - * Session Save Path - * -------------------------------------------------------------------------- - * - * The location to save sessions to and is driver dependent. - * - * For the 'files' driver, it's a path to a writable directory. - * WARNING: Only absolute paths are supported! - * - * For the 'database' driver, it's a table name. - * Please read up the manual for the format with other session drivers. - * - * IMPORTANT: You are REQUIRED to set a valid save path! - */ - public string $savePath = WRITEPATH . 'session'; - - /** - * -------------------------------------------------------------------------- - * Session Match IP - * -------------------------------------------------------------------------- - * - * Whether to match the user's IP address when reading the session data. - * - * WARNING: If you're using the database driver, don't forget to update - * your session table's PRIMARY KEY when changing this setting. - */ - public bool $matchIP = false; - - /** - * -------------------------------------------------------------------------- - * Session Time to Update - * -------------------------------------------------------------------------- - * - * How many seconds between CI regenerating the session ID. - */ - public int $timeToUpdate = 300; - - /** - * -------------------------------------------------------------------------- - * Session Regenerate Destroy - * -------------------------------------------------------------------------- - * - * Whether to destroy session data associated with the old session ID - * when auto-regenerating the session ID. When set to FALSE, the data - * will be later deleted by the garbage collector. - */ - public bool $regenerateDestroy = false; - - /** - * -------------------------------------------------------------------------- - * Session Database Group - * -------------------------------------------------------------------------- - * - * DB Group for the database session. - */ - public ?string $DBGroup = null; - - /** - * -------------------------------------------------------------------------- - * Lock Retry Interval (microseconds) - * -------------------------------------------------------------------------- - * - * This is used for RedisHandler. - * - * Time (microseconds) to wait if lock cannot be acquired. - * The default is 100,000 microseconds (= 0.1 seconds). - */ - public int $lockRetryInterval = 100_000; - - /** - * -------------------------------------------------------------------------- - * Lock Max Retries - * -------------------------------------------------------------------------- - * - * This is used for RedisHandler. - * - * Maximum number of lock acquisition attempts. - * The default is 300 times. That is lock timeout is about 30 (0.1 * 300) - * seconds. - */ - public int $lockMaxRetries = 300; -} diff --git a/app/Config--newest/Toolbar.php b/app/Config--newest/Toolbar.php deleted file mode 100644 index 5a3e5045..00000000 --- a/app/Config--newest/Toolbar.php +++ /dev/null @@ -1,122 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\BaseConfig; -use CodeIgniter\Debug\Toolbar\Collectors\Database; -use CodeIgniter\Debug\Toolbar\Collectors\Events; -use CodeIgniter\Debug\Toolbar\Collectors\Files; -use CodeIgniter\Debug\Toolbar\Collectors\Logs; -use CodeIgniter\Debug\Toolbar\Collectors\Routes; -use CodeIgniter\Debug\Toolbar\Collectors\Timers; -use CodeIgniter\Debug\Toolbar\Collectors\Views; - -/** - * -------------------------------------------------------------------------- - * Debug Toolbar - * -------------------------------------------------------------------------- - * - * The Debug Toolbar provides a way to see information about the performance - * and state of your application during that page display. By default it will - * NOT be displayed under production environments, and will only display if - * `CI_DEBUG` is true, since if it's not, there's not much to display anyway. - */ -class Toolbar extends BaseConfig -{ - /** - * -------------------------------------------------------------------------- - * Toolbar Collectors - * -------------------------------------------------------------------------- - * - * List of toolbar collectors that will be called when Debug Toolbar - * fires up and collects data from. - * - * @var list<class-string> - */ - public array $collectors = [ - Timers::class, - Database::class, - Logs::class, - Views::class, - // \CodeIgniter\Debug\Toolbar\Collectors\Cache::class, - Files::class, - Routes::class, - Events::class, - ]; - - /** - * -------------------------------------------------------------------------- - * Collect Var Data - * -------------------------------------------------------------------------- - * - * If set to false var data from the views will not be collected. Useful to - * avoid high memory usage when there are lots of data passed to the view. - */ - public bool $collectVarData = true; - - /** - * -------------------------------------------------------------------------- - * Max History - * -------------------------------------------------------------------------- - * - * `$maxHistory` sets a limit on the number of past requests that are stored, - * helping to conserve file space used to store them. You can set it to - * 0 (zero) to not have any history stored, or -1 for unlimited history. - */ - public int $maxHistory = 20; - - /** - * -------------------------------------------------------------------------- - * Toolbar Views Path - * -------------------------------------------------------------------------- - * - * The full path to the the views that are used by the toolbar. - * This MUST have a trailing slash. - */ - public string $viewsPath = SYSTEMPATH . 'Debug/Toolbar/Views/'; - - /** - * -------------------------------------------------------------------------- - * Max Queries - * -------------------------------------------------------------------------- - * - * If the Database Collector is enabled, it will log every query that the - * the system generates so they can be displayed on the toolbar's timeline - * and in the query log. This can lead to memory issues in some instances - * with hundreds of queries. - * - * `$maxQueries` defines the maximum amount of queries that will be stored. - */ - public int $maxQueries = 100; - - /** - * -------------------------------------------------------------------------- - * Watched Directories - * -------------------------------------------------------------------------- - * - * Contains an array of directories that will be watched for changes and - * used to determine if the hot-reload feature should reload the page or not. - * We restrict the values to keep performance as high as possible. - * - * NOTE: The ROOTPATH will be prepended to all values. - * - * @var list<string> - */ - public array $watchedDirectories = [ - 'app', - ]; - - /** - * -------------------------------------------------------------------------- - * Watched File Extensions - * -------------------------------------------------------------------------- - * - * Contains an array of file extensions that will be watched for changes and - * used to determine if the hot-reload feature should reload the page or not. - * - * @var list<string> - */ - public array $watchedExtensions = [ - 'php', 'css', 'js', 'html', 'svg', 'json', 'env', - ]; -} diff --git a/app/Config--newest/UserAgents.php b/app/Config--newest/UserAgents.php deleted file mode 100644 index fda73748..00000000 --- a/app/Config--newest/UserAgents.php +++ /dev/null @@ -1,252 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\BaseConfig; - -/** - * ------------------------------------------------------------------- - * User Agents - * ------------------------------------------------------------------- - * - * This file contains four arrays of user agent data. It is used by the - * User Agent Class to help identify browser, platform, robot, and - * mobile device data. The array keys are used to identify the device - * and the array values are used to set the actual name of the item. - */ -class UserAgents extends BaseConfig -{ - /** - * ------------------------------------------------------------------- - * OS Platforms - * ------------------------------------------------------------------- - * - * @var array<string, string> - */ - public array $platforms = [ - 'windows nt 10.0' => 'Windows 10', - 'windows nt 6.3' => 'Windows 8.1', - 'windows nt 6.2' => 'Windows 8', - 'windows nt 6.1' => 'Windows 7', - 'windows nt 6.0' => 'Windows Vista', - 'windows nt 5.2' => 'Windows 2003', - 'windows nt 5.1' => 'Windows XP', - 'windows nt 5.0' => 'Windows 2000', - 'windows nt 4.0' => 'Windows NT 4.0', - 'winnt4.0' => 'Windows NT 4.0', - 'winnt 4.0' => 'Windows NT', - 'winnt' => 'Windows NT', - 'windows 98' => 'Windows 98', - 'win98' => 'Windows 98', - 'windows 95' => 'Windows 95', - 'win95' => 'Windows 95', - 'windows phone' => 'Windows Phone', - 'windows' => 'Unknown Windows OS', - 'android' => 'Android', - 'blackberry' => 'BlackBerry', - 'iphone' => 'iOS', - 'ipad' => 'iOS', - 'ipod' => 'iOS', - 'os x' => 'Mac OS X', - 'ppc mac' => 'Power PC Mac', - 'freebsd' => 'FreeBSD', - 'ppc' => 'Macintosh', - 'linux' => 'Linux', - 'debian' => 'Debian', - 'sunos' => 'Sun Solaris', - 'beos' => 'BeOS', - 'apachebench' => 'ApacheBench', - 'aix' => 'AIX', - 'irix' => 'Irix', - 'osf' => 'DEC OSF', - 'hp-ux' => 'HP-UX', - 'netbsd' => 'NetBSD', - 'bsdi' => 'BSDi', - 'openbsd' => 'OpenBSD', - 'gnu' => 'GNU/Linux', - 'unix' => 'Unknown Unix OS', - 'symbian' => 'Symbian OS', - ]; - - /** - * ------------------------------------------------------------------- - * Browsers - * ------------------------------------------------------------------- - * - * The order of this array should NOT be changed. Many browsers return - * multiple browser types so we want to identify the subtype first. - * - * @var array<string, string> - */ - public array $browsers = [ - 'OPR' => 'Opera', - 'Flock' => 'Flock', - 'Edge' => 'Spartan', - 'Edg' => 'Edge', - 'Chrome' => 'Chrome', - // Opera 10+ always reports Opera/9.80 and appends Version/<real version> to the user agent string - 'Opera.*?Version' => 'Opera', - 'Opera' => 'Opera', - 'MSIE' => 'Internet Explorer', - 'Internet Explorer' => 'Internet Explorer', - 'Trident.* rv' => 'Internet Explorer', - 'Shiira' => 'Shiira', - 'Firefox' => 'Firefox', - 'Chimera' => 'Chimera', - 'Phoenix' => 'Phoenix', - 'Firebird' => 'Firebird', - 'Camino' => 'Camino', - 'Netscape' => 'Netscape', - 'OmniWeb' => 'OmniWeb', - 'Safari' => 'Safari', - 'Mozilla' => 'Mozilla', - 'Konqueror' => 'Konqueror', - 'icab' => 'iCab', - 'Lynx' => 'Lynx', - 'Links' => 'Links', - 'hotjava' => 'HotJava', - 'amaya' => 'Amaya', - 'IBrowse' => 'IBrowse', - 'Maxthon' => 'Maxthon', - 'Ubuntu' => 'Ubuntu Web Browser', - 'Vivaldi' => 'Vivaldi', - ]; - - /** - * ------------------------------------------------------------------- - * Mobiles - * ------------------------------------------------------------------- - * - * @var array<string, string> - */ - public array $mobiles = [ - // legacy array, old values commented out - 'mobileexplorer' => 'Mobile Explorer', - // 'openwave' => 'Open Wave', - // 'opera mini' => 'Opera Mini', - // 'operamini' => 'Opera Mini', - // 'elaine' => 'Palm', - 'palmsource' => 'Palm', - // 'digital paths' => 'Palm', - // 'avantgo' => 'Avantgo', - // 'xiino' => 'Xiino', - 'palmscape' => 'Palmscape', - // 'nokia' => 'Nokia', - // 'ericsson' => 'Ericsson', - // 'blackberry' => 'BlackBerry', - // 'motorola' => 'Motorola' - - // Phones and Manufacturers - 'motorola' => 'Motorola', - 'nokia' => 'Nokia', - 'palm' => 'Palm', - 'iphone' => 'Apple iPhone', - 'ipad' => 'iPad', - 'ipod' => 'Apple iPod Touch', - 'sony' => 'Sony Ericsson', - 'ericsson' => 'Sony Ericsson', - 'blackberry' => 'BlackBerry', - 'cocoon' => 'O2 Cocoon', - 'blazer' => 'Treo', - 'lg' => 'LG', - 'amoi' => 'Amoi', - 'xda' => 'XDA', - 'mda' => 'MDA', - 'vario' => 'Vario', - 'htc' => 'HTC', - 'samsung' => 'Samsung', - 'sharp' => 'Sharp', - 'sie-' => 'Siemens', - 'alcatel' => 'Alcatel', - 'benq' => 'BenQ', - 'ipaq' => 'HP iPaq', - 'mot-' => 'Motorola', - 'playstation portable' => 'PlayStation Portable', - 'playstation 3' => 'PlayStation 3', - 'playstation vita' => 'PlayStation Vita', - 'hiptop' => 'Danger Hiptop', - 'nec-' => 'NEC', - 'panasonic' => 'Panasonic', - 'philips' => 'Philips', - 'sagem' => 'Sagem', - 'sanyo' => 'Sanyo', - 'spv' => 'SPV', - 'zte' => 'ZTE', - 'sendo' => 'Sendo', - 'nintendo dsi' => 'Nintendo DSi', - 'nintendo ds' => 'Nintendo DS', - 'nintendo 3ds' => 'Nintendo 3DS', - 'wii' => 'Nintendo Wii', - 'open web' => 'Open Web', - 'openweb' => 'OpenWeb', - - // Operating Systems - 'android' => 'Android', - 'symbian' => 'Symbian', - 'SymbianOS' => 'SymbianOS', - 'elaine' => 'Palm', - 'series60' => 'Symbian S60', - 'windows ce' => 'Windows CE', - - // Browsers - 'obigo' => 'Obigo', - 'netfront' => 'Netfront Browser', - 'openwave' => 'Openwave Browser', - 'mobilexplorer' => 'Mobile Explorer', - 'operamini' => 'Opera Mini', - 'opera mini' => 'Opera Mini', - 'opera mobi' => 'Opera Mobile', - 'fennec' => 'Firefox Mobile', - - // Other - 'digital paths' => 'Digital Paths', - 'avantgo' => 'AvantGo', - 'xiino' => 'Xiino', - 'novarra' => 'Novarra Transcoder', - 'vodafone' => 'Vodafone', - 'docomo' => 'NTT DoCoMo', - 'o2' => 'O2', - - // Fallback - 'mobile' => 'Generic Mobile', - 'wireless' => 'Generic Mobile', - 'j2me' => 'Generic Mobile', - 'midp' => 'Generic Mobile', - 'cldc' => 'Generic Mobile', - 'up.link' => 'Generic Mobile', - 'up.browser' => 'Generic Mobile', - 'smartphone' => 'Generic Mobile', - 'cellphone' => 'Generic Mobile', - ]; - - /** - * ------------------------------------------------------------------- - * Robots - * ------------------------------------------------------------------- - * - * There are hundred of bots but these are the most common. - * - * @var array<string, string> - */ - public array $robots = [ - 'googlebot' => 'Googlebot', - 'msnbot' => 'MSNBot', - 'baiduspider' => 'Baiduspider', - 'bingbot' => 'Bing', - 'slurp' => 'Inktomi Slurp', - 'yahoo' => 'Yahoo', - 'ask jeeves' => 'Ask Jeeves', - 'fastcrawler' => 'FastCrawler', - 'infoseek' => 'InfoSeek Robot 1.0', - 'lycos' => 'Lycos', - 'yandex' => 'YandexBot', - 'mediapartners-google' => 'MediaPartners Google', - 'CRAZYWEBCRAWLER' => 'Crazy Webcrawler', - 'adsbot-google' => 'AdsBot Google', - 'feedfetcher-google' => 'Feedfetcher Google', - 'curious george' => 'Curious George', - 'ia_archiver' => 'Alexa Crawler', - 'MJ12bot' => 'Majestic-12', - 'Uptimebot' => 'Uptimebot', - ]; -} diff --git a/app/Config--newest/Validation.php b/app/Config--newest/Validation.php deleted file mode 100644 index 6342dbbe..00000000 --- a/app/Config--newest/Validation.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\BaseConfig; -use CodeIgniter\Validation\StrictRules\CreditCardRules; -use CodeIgniter\Validation\StrictRules\FileRules; -use CodeIgniter\Validation\StrictRules\FormatRules; -use CodeIgniter\Validation\StrictRules\Rules; - -class Validation extends BaseConfig -{ - // -------------------------------------------------------------------- - // Setup - // -------------------------------------------------------------------- - - /** - * Stores the classes that contain the - * rules that are available. - * - * @var list<string> - */ - public array $ruleSets = [ - Rules::class, - FormatRules::class, - FileRules::class, - CreditCardRules::class, - ]; - - /** - * Specifies the views that are used to display the - * errors. - * - * @var array<string, string> - */ - public array $templates = [ - 'list' => 'CodeIgniter\Validation\Views\list', - 'single' => 'CodeIgniter\Validation\Views\single', - ]; - - // -------------------------------------------------------------------- - // Rules - // -------------------------------------------------------------------- -} diff --git a/app/Config--newest/View.php b/app/Config--newest/View.php deleted file mode 100644 index cf8dd06f..00000000 --- a/app/Config--newest/View.php +++ /dev/null @@ -1,62 +0,0 @@ -<?php - -namespace Config; - -use CodeIgniter\Config\View as BaseView; -use CodeIgniter\View\ViewDecoratorInterface; - -/** - * @phpstan-type parser_callable (callable(mixed): mixed) - * @phpstan-type parser_callable_string (callable(mixed): mixed)&string - */ -class View extends BaseView -{ - /** - * When false, the view method will clear the data between each - * call. This keeps your data safe and ensures there is no accidental - * leaking between calls, so you would need to explicitly pass the data - * to each view. You might prefer to have the data stick around between - * calls so that it is available to all views. If that is the case, - * set $saveData to true. - * - * @var bool - */ - public $saveData = true; - - /** - * Parser Filters map a filter name with any PHP callable. When the - * Parser prepares a variable for display, it will chain it - * through the filters in the order defined, inserting any parameters. - * To prevent potential abuse, all filters MUST be defined here - * in order for them to be available for use within the Parser. - * - * Examples: - * { title|esc(js) } - * { created_on|date(Y-m-d)|esc(attr) } - * - * @var array<string, string> - * @phpstan-var array<string, parser_callable_string> - */ - public $filters = []; - - /** - * Parser Plugins provide a way to extend the functionality provided - * by the core Parser by creating aliases that will be replaced with - * any callable. Can be single or tag pair. - * - * @var array<string, callable|list<string>|string> - * @phpstan-var array<string, list<parser_callable_string>|parser_callable_string|parser_callable> - */ - public $plugins = []; - - /** - * View Decorators are class methods that will be run in sequence to - * have a chance to alter the generated output just prior to caching - * the results. - * - * All classes must implement CodeIgniter\View\ViewDecoratorInterface - * - * @var list<class-string<ViewDecoratorInterface>> - */ - public array $decorators = []; -} diff --git a/app/Views/inc/js.php b/app/Views/inc/js.php index fc3288ee..3ed8a818 100644 --- a/app/Views/inc/js.php +++ b/app/Views/inc/js.php @@ -12,7 +12,9 @@ <script src="<?= base_url('public/theme/plugins/moment/moment.js') ?>"></script> <script src="<?= base_url('public/theme/plugins/tempusdominus-bootstrap-4/build/js/tempusdominus-bootstrap-4.min.js') ?>"></script> <script src="https://code.highcharts.com/highcharts.js"></script> +<script src="https://code.highcharts.com/highcharts-more.js"></script> <script src="https://code.highcharts.com/modules/accessibility.js"></script> +<script src="https://code.highcharts.com/modules/drilldown.js"></script> <script src="<?= base_url('public/theme/js/tables.js') ?>"></script> <script src="<?= base_url('public/theme/dist/js/theme.js') ?>"></script> <script type="module" src="https://unpkg.com/ionicons@7.1.0/dist/ionicons/ionicons.esm.js"></script> diff --git a/app/Views/inc/sidebar.php b/app/Views/inc/sidebar.php index 91f311cf..049e6f52 100644 --- a/app/Views/inc/sidebar.php +++ b/app/Views/inc/sidebar.php @@ -49,9 +49,9 @@ </div> </div> --> <div class="nav-item has-sub"> - <a href="#"><i class="ik ik-crosshair"></i><span>Titik Kontrol</span> <span class="badge badge-danger">New</span></a> + <a href="#"><i class="ik ik-crosshair"></i><span>Raport</span> <span class="badge badge-danger">New</span></a> <div class="submenu-content"> - <a href="<?= base_url() ?>auth/underconst" class="menu-item">Aktivitas</a> + <a href="<?= base_url() ?>rapor/wpbayar" class="menu-item">WP Bayar</a> </div> </div> diff --git a/app/Views/ppm/dashboard.php b/app/Views/ppm/dashboard.php index bcc70817..0a7d4e7d 100644 --- a/app/Views/ppm/dashboard.php +++ b/app/Views/ppm/dashboard.php @@ -64,7 +64,8 @@ $jml_penerimaan = 0; $jml_penlalu = 0; - + $jml_penerimaantot =0; + $pentotlalu =0; foreach ($pie_penerimaan as $_junk => $data) { $jml_penerimaan = $jml_penerimaan + $data->PENERIMAAN; $jml_penerimaantot = $data->PENERIMAAN_TOT; diff --git a/system4.4.6/.htaccess b/system4.4.6/.htaccess deleted file mode 100644 index 3462048a..00000000 --- a/system4.4.6/.htaccess +++ /dev/null @@ -1,6 +0,0 @@ -<IfModule authz_core_module> - Require all denied -</IfModule> -<IfModule !authz_core_module> - Deny from all -</IfModule> diff --git a/system4.4.6/API/ResponseTrait.php b/system4.4.6/API/ResponseTrait.php deleted file mode 100644 index 3cf05359..00000000 --- a/system4.4.6/API/ResponseTrait.php +++ /dev/null @@ -1,359 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\API; - -use CodeIgniter\Format\FormatterInterface; -use CodeIgniter\HTTP\IncomingRequest; -use CodeIgniter\HTTP\ResponseInterface; -use Config\Services; - -/** - * Provides common, more readable, methods to provide - * consistent HTTP responses under a variety of common - * situations when working as an API. - */ -trait ResponseTrait -{ - /** - * Allows child classes to override the - * status code that is used in their API. - * - * @var array<string, int> - */ - protected $codes = [ - 'created' => 201, - 'deleted' => 200, - 'updated' => 200, - 'no_content' => 204, - 'invalid_request' => 400, - 'unsupported_response_type' => 400, - 'invalid_scope' => 400, - 'temporarily_unavailable' => 400, - 'invalid_grant' => 400, - 'invalid_credentials' => 400, - 'invalid_refresh' => 400, - 'no_data' => 400, - 'invalid_data' => 400, - 'access_denied' => 401, - 'unauthorized' => 401, - 'invalid_client' => 401, - 'forbidden' => 403, - 'resource_not_found' => 404, - 'not_acceptable' => 406, - 'resource_exists' => 409, - 'conflict' => 409, - 'resource_gone' => 410, - 'payload_too_large' => 413, - 'unsupported_media_type' => 415, - 'too_many_requests' => 429, - 'server_error' => 500, - 'unsupported_grant_type' => 501, - 'not_implemented' => 501, - ]; - - /** - * How to format the response data. - * Either 'json' or 'xml'. If blank will be - * determined through content negotiation. - * - * @var string - */ - protected $format = 'json'; - - /** - * Current Formatter instance. This is usually set by ResponseTrait::format - * - * @var FormatterInterface|null - */ - protected $formatter; - - /** - * Provides a single, simple method to return an API response, formatted - * to match the requested format, with proper content-type and status code. - * - * @param array|string|null $data - * - * @return ResponseInterface - */ - protected function respond($data = null, ?int $status = null, string $message = '') - { - if ($data === null && $status === null) { - $status = 404; - $output = null; - $this->format($data); - } elseif ($data === null && is_numeric($status)) { - $output = null; - $this->format($data); - } else { - $status ??= 200; - $output = $this->format($data); - } - - if ($output !== null) { - if ($this->format === 'json') { - return $this->response->setJSON($output)->setStatusCode($status, $message); - } - - if ($this->format === 'xml') { - return $this->response->setXML($output)->setStatusCode($status, $message); - } - } - - return $this->response->setBody($output)->setStatusCode($status, $message); - } - - /** - * Used for generic failures that no custom methods exist for. - * - * @param array|string $messages - * @param int $status HTTP status code - * @param string|null $code Custom, API-specific, error code - * - * @return ResponseInterface - */ - protected function fail($messages, int $status = 400, ?string $code = null, string $customMessage = '') - { - if (! is_array($messages)) { - $messages = ['error' => $messages]; - } - - $response = [ - 'status' => $status, - 'error' => $code ?? $status, - 'messages' => $messages, - ]; - - return $this->respond($response, $status, $customMessage); - } - - // -------------------------------------------------------------------- - // Response Helpers - // -------------------------------------------------------------------- - - /** - * Used after successfully creating a new resource. - * - * @param array|string|null $data - * - * @return ResponseInterface - */ - protected function respondCreated($data = null, string $message = '') - { - return $this->respond($data, $this->codes['created'], $message); - } - - /** - * Used after a resource has been successfully deleted. - * - * @param array|string|null $data - * - * @return ResponseInterface - */ - protected function respondDeleted($data = null, string $message = '') - { - return $this->respond($data, $this->codes['deleted'], $message); - } - - /** - * Used after a resource has been successfully updated. - * - * @param array|string|null $data - * - * @return ResponseInterface - */ - protected function respondUpdated($data = null, string $message = '') - { - return $this->respond($data, $this->codes['updated'], $message); - } - - /** - * Used after a command has been successfully executed but there is no - * meaningful reply to send back to the client. - * - * @return ResponseInterface - */ - protected function respondNoContent(string $message = 'No Content') - { - return $this->respond(null, $this->codes['no_content'], $message); - } - - /** - * Used when the client is either didn't send authorization information, - * or had bad authorization credentials. User is encouraged to try again - * with the proper information. - * - * @return ResponseInterface - */ - protected function failUnauthorized(string $description = 'Unauthorized', ?string $code = null, string $message = '') - { - return $this->fail($description, $this->codes['unauthorized'], $code, $message); - } - - /** - * Used when access is always denied to this resource and no amount - * of trying again will help. - * - * @return ResponseInterface - */ - protected function failForbidden(string $description = 'Forbidden', ?string $code = null, string $message = '') - { - return $this->fail($description, $this->codes['forbidden'], $code, $message); - } - - /** - * Used when a specified resource cannot be found. - * - * @return ResponseInterface - */ - protected function failNotFound(string $description = 'Not Found', ?string $code = null, string $message = '') - { - return $this->fail($description, $this->codes['resource_not_found'], $code, $message); - } - - /** - * Used when the data provided by the client cannot be validated. - * - * @return ResponseInterface - * - * @deprecated Use failValidationErrors instead - */ - protected function failValidationError(string $description = 'Bad Request', ?string $code = null, string $message = '') - { - return $this->fail($description, $this->codes['invalid_data'], $code, $message); - } - - /** - * Used when the data provided by the client cannot be validated on one or more fields. - * - * @param string|string[] $errors - * - * @return ResponseInterface - */ - protected function failValidationErrors($errors, ?string $code = null, string $message = '') - { - return $this->fail($errors, $this->codes['invalid_data'], $code, $message); - } - - /** - * Use when trying to create a new resource and it already exists. - * - * @return ResponseInterface - */ - protected function failResourceExists(string $description = 'Conflict', ?string $code = null, string $message = '') - { - return $this->fail($description, $this->codes['resource_exists'], $code, $message); - } - - /** - * Use when a resource was previously deleted. This is different than - * Not Found, because here we know the data previously existed, but is now gone, - * where Not Found means we simply cannot find any information about it. - * - * @return ResponseInterface - */ - protected function failResourceGone(string $description = 'Gone', ?string $code = null, string $message = '') - { - return $this->fail($description, $this->codes['resource_gone'], $code, $message); - } - - /** - * Used when the user has made too many requests for the resource recently. - * - * @return ResponseInterface - */ - protected function failTooManyRequests(string $description = 'Too Many Requests', ?string $code = null, string $message = '') - { - return $this->fail($description, $this->codes['too_many_requests'], $code, $message); - } - - /** - * Used when there is a server error. - * - * @param string $description The error message to show the user. - * @param string|null $code A custom, API-specific, error code. - * @param string $message A custom "reason" message to return. - */ - protected function failServerError(string $description = 'Internal Server Error', ?string $code = null, string $message = ''): ResponseInterface - { - return $this->fail($description, $this->codes['server_error'], $code, $message); - } - - // -------------------------------------------------------------------- - // Utility Methods - // -------------------------------------------------------------------- - - /** - * Handles formatting a response. Currently makes some heavy assumptions - * and needs updating! :) - * - * @param array|string|null $data - * - * @return string|null - */ - protected function format($data = null) - { - // If the data is a string, there's not much we can do to it... - if (is_string($data)) { - // The content type should be text/... and not application/... - $contentType = $this->response->getHeaderLine('Content-Type'); - $contentType = str_replace('application/json', 'text/html', $contentType); - $contentType = str_replace('application/', 'text/', $contentType); - $this->response->setContentType($contentType); - $this->format = 'html'; - - return $data; - } - - $format = Services::format(); - $mime = "application/{$this->format}"; - - // Determine correct response type through content negotiation if not explicitly declared - if ( - ! in_array($this->format, ['json', 'xml'], true) - && $this->request instanceof IncomingRequest - ) { - $mime = $this->request->negotiate( - 'media', - $format->getConfig()->supportedResponseFormats, - false - ); - } - - $this->response->setContentType($mime); - - // if we don't have a formatter, make one - if (! isset($this->formatter)) { - // if no formatter, use the default - $this->formatter = $format->getFormatter($mime); - } - - if ($mime !== 'application/json') { - // Recursively convert objects into associative arrays - // Conversion not required for JSONFormatter - $data = json_decode(json_encode($data), true); - } - - return $this->formatter->format($data); - } - - /** - * Sets the format the response should be in. - * - * @return $this - */ - protected function setResponseFormat(?string $format = null) - { - $this->format = strtolower($format); - - return $this; - } -} diff --git a/system4.4.6/Autoloader/Autoloader.php b/system4.4.6/Autoloader/Autoloader.php deleted file mode 100644 index 9a6073d9..00000000 --- a/system4.4.6/Autoloader/Autoloader.php +++ /dev/null @@ -1,490 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Autoloader; - -use CodeIgniter\Exceptions\ConfigException; -use Composer\Autoload\ClassLoader; -use Composer\InstalledVersions; -use Config\Autoload; -use Config\Modules; -use InvalidArgumentException; -use RuntimeException; - -/** - * An autoloader that uses both PSR4 autoloading, and traditional classmaps. - * - * Given a foo-bar package of classes in the file system at the following paths: - * ``` - * /path/to/packages/foo-bar/ - * /src - * Baz.php # Foo\Bar\Baz - * Qux/ - * Quux.php # Foo\Bar\Qux\Quux - * ``` - * you can add the path to the configuration array that is passed in the constructor. - * The Config array consists of 2 primary keys, both of which are associative arrays: - * 'psr4', and 'classmap'. - * ``` - * $Config = [ - * 'psr4' => [ - * 'Foo\Bar' => '/path/to/packages/foo-bar' - * ], - * 'classmap' => [ - * 'MyClass' => '/path/to/class/file.php' - * ] - * ]; - * ``` - * Example: - * ``` - * <?php - * // our configuration array - * $Config = [ ... ]; - * $loader = new \CodeIgniter\Autoloader\Autoloader($Config); - * - * // register the autoloader - * $loader->register(); - * ``` - * - * @see \CodeIgniter\Autoloader\AutoloaderTest - */ -class Autoloader -{ - /** - * Stores namespaces as key, and path as values. - * - * @var array<string, array<string>> - */ - protected $prefixes = []; - - /** - * Stores class name as key, and path as values. - * - * @var array<string, string> - */ - protected $classmap = []; - - /** - * Stores files as a list. - * - * @var list<string> - */ - protected $files = []; - - /** - * Stores helper list. - * Always load the URL helper, it should be used in most apps. - * - * @var list<string> - */ - protected $helpers = ['url']; - - /** - * Reads in the configuration array (described above) and stores - * the valid parts that we'll need. - * - * @return $this - */ - public function initialize(Autoload $config, Modules $modules) - { - $this->prefixes = []; - $this->classmap = []; - $this->files = []; - - // We have to have one or the other, though we don't enforce the need - // to have both present in order to work. - if ($config->psr4 === [] && $config->classmap === []) { - throw new InvalidArgumentException('Config array must contain either the \'psr4\' key or the \'classmap\' key.'); - } - - if ($config->psr4 !== []) { - $this->addNamespace($config->psr4); - } - - if ($config->classmap !== []) { - $this->classmap = $config->classmap; - } - - if ($config->files !== []) { - $this->files = $config->files; - } - - if (isset($config->helpers)) { - $this->helpers = [...$this->helpers, ...$config->helpers]; - } - - if (is_file(COMPOSER_PATH)) { - $this->loadComposerAutoloader($modules); - } - - return $this; - } - - private function loadComposerAutoloader(Modules $modules): void - { - // The path to the vendor directory. - // We do not want to enforce this, so set the constant if Composer was used. - if (! defined('VENDORPATH')) { - define('VENDORPATH', dirname(COMPOSER_PATH) . DIRECTORY_SEPARATOR); - } - - /** @var ClassLoader $composer */ - $composer = include COMPOSER_PATH; - - $this->loadComposerClassmap($composer); - - // Should we load through Composer's namespaces, also? - if ($modules->discoverInComposer) { - // @phpstan-ignore-next-line - $this->loadComposerNamespaces($composer, $modules->composerPackages ?? []); - } - - unset($composer); - } - - /** - * Register the loader with the SPL autoloader stack. - * - * @return void - */ - public function register() - { - // Prepend the PSR4 autoloader for maximum performance. - spl_autoload_register([$this, 'loadClass'], true, true); - - // Now prepend another loader for the files in our class map. - spl_autoload_register([$this, 'loadClassmap'], true, true); - - // Load our non-class files - foreach ($this->files as $file) { - $this->includeFile($file); - } - } - - /** - * Unregister autoloader. - * - * This method is for testing. - */ - public function unregister(): void - { - spl_autoload_unregister([$this, 'loadClass']); - spl_autoload_unregister([$this, 'loadClassmap']); - } - - /** - * Registers namespaces with the autoloader. - * - * @param array<string, list<string>|string>|string $namespace - * - * @return $this - */ - public function addNamespace($namespace, ?string $path = null) - { - if (is_array($namespace)) { - foreach ($namespace as $prefix => $namespacedPath) { - $prefix = trim($prefix, '\\'); - - if (is_array($namespacedPath)) { - foreach ($namespacedPath as $dir) { - $this->prefixes[$prefix][] = rtrim($dir, '\\/') . DIRECTORY_SEPARATOR; - } - - continue; - } - - $this->prefixes[$prefix][] = rtrim($namespacedPath, '\\/') . DIRECTORY_SEPARATOR; - } - } else { - $this->prefixes[trim($namespace, '\\')][] = rtrim($path, '\\/') . DIRECTORY_SEPARATOR; - } - - return $this; - } - - /** - * Get namespaces with prefixes as keys and paths as values. - * - * If a prefix param is set, returns only paths to the given prefix. - * - * @return array - */ - public function getNamespace(?string $prefix = null) - { - if ($prefix === null) { - return $this->prefixes; - } - - return $this->prefixes[trim($prefix, '\\')] ?? []; - } - - /** - * Removes a single namespace from the psr4 settings. - * - * @return $this - */ - public function removeNamespace(string $namespace) - { - if (isset($this->prefixes[trim($namespace, '\\')])) { - unset($this->prefixes[trim($namespace, '\\')]); - } - - return $this; - } - - /** - * Load a class using available class mapping. - * - * @internal For `spl_autoload_register` use. - */ - public function loadClassmap(string $class): void - { - $file = $this->classmap[$class] ?? ''; - - if (is_string($file) && $file !== '') { - $this->includeFile($file); - } - } - - /** - * Loads the class file for a given class name. - * - * @internal For `spl_autoload_register` use. - * - * @param string $class The fully qualified class name. - */ - public function loadClass(string $class): void - { - $this->loadInNamespace($class); - } - - /** - * Loads the class file for a given class name. - * - * @param string $class The fully-qualified class name - * - * @return false|string The mapped file name on success, or boolean false on fail - */ - protected function loadInNamespace(string $class) - { - if (strpos($class, '\\') === false) { - return false; - } - - foreach ($this->prefixes as $namespace => $directories) { - if (strpos($class, $namespace) === 0) { - $relativeClassPath = str_replace('\\', DIRECTORY_SEPARATOR, substr($class, strlen($namespace))); - - foreach ($directories as $directory) { - $directory = rtrim($directory, '\\/'); - - $filePath = $directory . $relativeClassPath . '.php'; - $filename = $this->includeFile($filePath); - - if ($filename) { - return $filename; - } - } - } - } - - // never found a mapped file - return false; - } - - /** - * A central way to include a file. Split out primarily for testing purposes. - * - * @return false|string The filename on success, false if the file is not loaded - */ - protected function includeFile(string $file) - { - if (is_file($file)) { - include_once $file; - - return $file; - } - - return false; - } - - /** - * Check file path. - * - * Checks special characters that are illegal in filenames on certain - * operating systems and special characters requiring special escaping - * to manipulate at the command line. Replaces spaces and consecutive - * dashes with a single dash. Trim period, dash and underscore from beginning - * and end of filename. - * - * @return string The sanitized filename - * - * @deprecated No longer used. See https://github.com/codeigniter4/CodeIgniter4/issues/7055 - */ - public function sanitizeFilename(string $filename): string - { - // Only allow characters deemed safe for POSIX portable filenames. - // Plus the forward slash for directory separators since this might be a path. - // http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_278 - // Modified to allow backslash and colons for on Windows machines. - $result = preg_match_all('/[^0-9\p{L}\s\/\-_.:\\\\]/u', $filename, $matches); - - if ($result > 0) { - $chars = implode('', $matches[0]); - - throw new InvalidArgumentException( - 'The file path contains special characters "' . $chars - . '" that are not allowed: "' . $filename . '"' - ); - } - if ($result === false) { - if (version_compare(PHP_VERSION, '8.0.0', '>=')) { - $message = preg_last_error_msg(); - } else { - $message = 'Regex error. error code: ' . preg_last_error(); - } - - throw new RuntimeException($message . '. filename: "' . $filename . '"'); - } - - // Clean up our filename edges. - $cleanFilename = trim($filename, '.-_'); - - if ($filename !== $cleanFilename) { - throw new InvalidArgumentException('The characters ".-_" are not allowed in filename edges: "' . $filename . '"'); - } - - return $cleanFilename; - } - - private function loadComposerNamespaces(ClassLoader $composer, array $composerPackages): void - { - $namespacePaths = $composer->getPrefixesPsr4(); - - // Get rid of CodeIgniter so we don't have duplicates - if (isset($namespacePaths['CodeIgniter\\'])) { - unset($namespacePaths['CodeIgniter\\']); - } - - if (! method_exists(InstalledVersions::class, 'getAllRawData')) { - throw new RuntimeException( - 'Your Composer version is too old.' - . ' Please update Composer (run `composer self-update`) to v2.0.14 or later' - . ' and remove your vendor/ directory, and run `composer update`.' - ); - } - // This method requires Composer 2.0.14 or later. - $allData = InstalledVersions::getAllRawData(); - $packageList = []; - - foreach ($allData as $list) { - $packageList = array_merge($packageList, $list['versions']); - } - - // Check config for $composerPackages. - $only = $composerPackages['only'] ?? []; - $exclude = $composerPackages['exclude'] ?? []; - if ($only !== [] && $exclude !== []) { - throw new ConfigException('Cannot use "only" and "exclude" at the same time in "Config\Modules::$composerPackages".'); - } - - // Get install paths of packages to add namespace for auto-discovery. - $installPaths = []; - if ($only !== []) { - foreach ($packageList as $packageName => $data) { - if (in_array($packageName, $only, true) && isset($data['install_path'])) { - $installPaths[] = $data['install_path']; - } - } - } else { - foreach ($packageList as $packageName => $data) { - if (! in_array($packageName, $exclude, true) && isset($data['install_path'])) { - $installPaths[] = $data['install_path']; - } - } - } - - $newPaths = []; - - foreach ($namespacePaths as $namespace => $srcPaths) { - $add = false; - - foreach ($srcPaths as $path) { - foreach ($installPaths as $installPath) { - if ($installPath === substr($path, 0, strlen($installPath))) { - $add = true; - break 2; - } - } - } - - if ($add) { - // Composer stores namespaces with trailing slash. We don't. - $newPaths[rtrim($namespace, '\\ ')] = $srcPaths; - } - } - - $this->addNamespace($newPaths); - } - - private function loadComposerClassmap(ClassLoader $composer): void - { - $classes = $composer->getClassMap(); - - $this->classmap = array_merge($this->classmap, $classes); - } - - /** - * Locates autoload information from Composer, if available. - * - * @deprecated No longer used. - * - * @return void - */ - protected function discoverComposerNamespaces() - { - if (! is_file(COMPOSER_PATH)) { - return; - } - - /** - * @var ClassLoader $composer - */ - $composer = include COMPOSER_PATH; - $paths = $composer->getPrefixesPsr4(); - $classes = $composer->getClassMap(); - - unset($composer); - - // Get rid of CodeIgniter so we don't have duplicates - if (isset($paths['CodeIgniter\\'])) { - unset($paths['CodeIgniter\\']); - } - - $newPaths = []; - - foreach ($paths as $key => $value) { - // Composer stores namespaces with trailing slash. We don't. - $newPaths[rtrim($key, '\\ ')] = $value; - } - - $this->prefixes = array_merge($this->prefixes, $newPaths); - $this->classmap = array_merge($this->classmap, $classes); - } - - /** - * Loads helpers - */ - public function loadHelpers(): void - { - helper($this->helpers); - } -} diff --git a/system4.4.6/Autoloader/FileLocator.php b/system4.4.6/Autoloader/FileLocator.php deleted file mode 100644 index c5cf8e18..00000000 --- a/system4.4.6/Autoloader/FileLocator.php +++ /dev/null @@ -1,386 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Autoloader; - -/** - * Allows loading non-class files in a namespaced manner. - * Works with Helpers, Views, etc. - * - * @see \CodeIgniter\Autoloader\FileLocatorTest - */ -class FileLocator -{ - /** - * The Autoloader to use. - * - * @var Autoloader - */ - protected $autoloader; - - public function __construct(Autoloader $autoloader) - { - $this->autoloader = $autoloader; - } - - /** - * Attempts to locate a file by examining the name for a namespace - * and looking through the PSR-4 namespaced files that we know about. - * - * @param string $file The relative file path or namespaced file to - * locate. If not namespaced, search in the app - * folder. - * @param non-empty-string|null $folder The folder within the namespace that we should - * look for the file. If $file does not contain - * this value, it will be appended to the namespace - * folder. - * @param string $ext The file extension the file should have. - * - * @return false|string The path to the file, or false if not found. - */ - public function locateFile(string $file, ?string $folder = null, string $ext = 'php') - { - $file = $this->ensureExt($file, $ext); - - // Clears the folder name if it is at the beginning of the filename - if ($folder !== null && strpos($file, $folder) === 0) { - $file = substr($file, strlen($folder . '/')); - } - - // Is not namespaced? Try the application folder. - if (strpos($file, '\\') === false) { - return $this->legacyLocate($file, $folder); - } - - // Standardize slashes to handle nested directories. - $file = strtr($file, '/', '\\'); - $file = ltrim($file, '\\'); - - $segments = explode('\\', $file); - - // The first segment will be empty if a slash started the filename. - if ($segments[0] === '') { - unset($segments[0]); - } - - $paths = []; - $filename = ''; - - // Namespaces always comes with arrays of paths - $namespaces = $this->autoloader->getNamespace(); - - foreach (array_keys($namespaces) as $namespace) { - if (substr($file, 0, strlen($namespace) + 1) === $namespace . '\\') { - $fileWithoutNamespace = substr($file, strlen($namespace)); - - // There may be sub-namespaces of the same vendor, - // so overwrite them with namespaces found later. - $paths = $namespaces[$namespace]; - $filename = ltrim(str_replace('\\', '/', $fileWithoutNamespace), '/'); - } - } - - // if no namespaces matched then quit - if ($paths === []) { - return false; - } - - // Check each path in the namespace - foreach ($paths as $path) { - // Ensure trailing slash - $path = rtrim($path, '/') . '/'; - - // If we have a folder name, then the calling function - // expects this file to be within that folder, like 'Views', - // or 'libraries'. - if ($folder !== null && strpos($path . $filename, '/' . $folder . '/') === false) { - $path .= trim($folder, '/') . '/'; - } - - $path .= $filename; - if (is_file($path)) { - return $path; - } - } - - return false; - } - - /** - * Examines a file and returns the fully qualified class name. - */ - public function getClassname(string $file): string - { - if (is_dir($file)) { - return ''; - } - - $php = file_get_contents($file); - $tokens = token_get_all($php); - $dlm = false; - $namespace = ''; - $className = ''; - - foreach ($tokens as $i => $token) { - if ($i < 2) { - continue; - } - - if ((isset($tokens[$i - 2][1]) && ($tokens[$i - 2][1] === 'phpnamespace' || $tokens[$i - 2][1] === 'namespace')) || ($dlm && $tokens[$i - 1][0] === T_NS_SEPARATOR && $token[0] === T_STRING)) { - if (! $dlm) { - $namespace = 0; - } - if (isset($token[1])) { - $namespace = $namespace ? $namespace . '\\' . $token[1] : $token[1]; - $dlm = true; - } - } elseif ($dlm && ($token[0] !== T_NS_SEPARATOR) && ($token[0] !== T_STRING)) { - $dlm = false; - } - - if (($tokens[$i - 2][0] === T_CLASS || (isset($tokens[$i - 2][1]) && $tokens[$i - 2][1] === 'phpclass')) - && $tokens[$i - 1][0] === T_WHITESPACE - && $token[0] === T_STRING) { - $className = $token[1]; - break; - } - } - - if ($className === '') { - return ''; - } - - return $namespace . '\\' . $className; - } - - /** - * Searches through all of the defined namespaces looking for a file. - * Returns an array of all found locations for the defined file. - * - * Example: - * - * $locator->search('Config/Routes.php'); - * // Assuming PSR4 namespaces include foo and bar, might return: - * [ - * 'app/Modules/foo/Config/Routes.php', - * 'app/Modules/bar/Config/Routes.php', - * ] - */ - public function search(string $path, string $ext = 'php', bool $prioritizeApp = true): array - { - $path = $this->ensureExt($path, $ext); - - $foundPaths = []; - $appPaths = []; - - foreach ($this->getNamespaces() as $namespace) { - if (isset($namespace['path']) && is_file($namespace['path'] . $path)) { - $fullPath = $namespace['path'] . $path; - $fullPath = realpath($fullPath) ?: $fullPath; - - if ($prioritizeApp) { - $foundPaths[] = $fullPath; - } elseif (strpos($fullPath, APPPATH) === 0) { - $appPaths[] = $fullPath; - } else { - $foundPaths[] = $fullPath; - } - } - } - - if (! $prioritizeApp && $appPaths !== []) { - $foundPaths = [...$foundPaths, ...$appPaths]; - } - - // Remove any duplicates - return array_unique($foundPaths); - } - - /** - * Ensures a extension is at the end of a filename - */ - protected function ensureExt(string $path, string $ext): string - { - if ($ext !== '') { - $ext = '.' . $ext; - - if (substr($path, -strlen($ext)) !== $ext) { - $path .= $ext; - } - } - - return $path; - } - - /** - * Return the namespace mappings we know about. - * - * @return array<int, array<string, string>> - */ - protected function getNamespaces() - { - $namespaces = []; - - // Save system for last - $system = []; - - foreach ($this->autoloader->getNamespace() as $prefix => $paths) { - foreach ($paths as $path) { - if ($prefix === 'CodeIgniter') { - $system = [ - 'prefix' => $prefix, - 'path' => rtrim($path, '\\/') . DIRECTORY_SEPARATOR, - ]; - - continue; - } - - $namespaces[] = [ - 'prefix' => $prefix, - 'path' => rtrim($path, '\\/') . DIRECTORY_SEPARATOR, - ]; - } - } - - $namespaces[] = $system; - - return $namespaces; - } - - /** - * Find the qualified name of a file according to - * the namespace of the first matched namespace path. - * - * @return false|string The qualified name or false if the path is not found - */ - public function findQualifiedNameFromPath(string $path) - { - $path = realpath($path) ?: $path; - - if (! is_file($path)) { - return false; - } - - foreach ($this->getNamespaces() as $namespace) { - $namespace['path'] = realpath($namespace['path']) ?: $namespace['path']; - - if ($namespace['path'] === '') { - continue; - } - - if (mb_strpos($path, $namespace['path']) === 0) { - $className = '\\' . $namespace['prefix'] . '\\' . - ltrim(str_replace( - '/', - '\\', - mb_substr($path, mb_strlen($namespace['path'])) - ), '\\'); - - // Remove the file extension (.php) - $className = mb_substr($className, 0, -4); - - // Check if this exists - if (class_exists($className)) { - return $className; - } - } - } - - return false; - } - - /** - * Scans the defined namespaces, returning a list of all files - * that are contained within the subpath specified by $path. - * - * @return string[] List of file paths - */ - public function listFiles(string $path): array - { - if ($path === '') { - return []; - } - - $files = []; - helper('filesystem'); - - foreach ($this->getNamespaces() as $namespace) { - $fullPath = $namespace['path'] . $path; - $fullPath = realpath($fullPath) ?: $fullPath; - - if (! is_dir($fullPath)) { - continue; - } - - $tempFiles = get_filenames($fullPath, true, false, false); - - if ($tempFiles !== []) { - $files = array_merge($files, $tempFiles); - } - } - - return $files; - } - - /** - * Scans the provided namespace, returning a list of all files - * that are contained within the sub path specified by $path. - * - * @return string[] List of file paths - */ - public function listNamespaceFiles(string $prefix, string $path): array - { - if ($path === '' || ($prefix === '')) { - return []; - } - - $files = []; - helper('filesystem'); - - // autoloader->getNamespace($prefix) returns an array of paths for that namespace - foreach ($this->autoloader->getNamespace($prefix) as $namespacePath) { - $fullPath = rtrim($namespacePath, '/') . '/' . $path; - $fullPath = realpath($fullPath) ?: $fullPath; - - if (! is_dir($fullPath)) { - continue; - } - - $tempFiles = get_filenames($fullPath, true, false, false); - - if ($tempFiles !== []) { - $files = array_merge($files, $tempFiles); - } - } - - return $files; - } - - /** - * Checks the app folder to see if the file can be found. - * Only for use with filenames that DO NOT include namespacing. - * - * @param non-empty-string|null $folder - * - * @return false|string The path to the file, or false if not found. - */ - protected function legacyLocate(string $file, ?string $folder = null) - { - $path = APPPATH . ($folder === null ? $file : $folder . '/' . $file); - $path = realpath($path) ?: $path; - - if (is_file($path)) { - return $path; - } - - return false; - } -} diff --git a/system4.4.6/BaseModel.php b/system4.4.6/BaseModel.php deleted file mode 100644 index 9cb6f969..00000000 --- a/system4.4.6/BaseModel.php +++ /dev/null @@ -1,1916 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter; - -use Closure; -use CodeIgniter\Database\BaseConnection; -use CodeIgniter\Database\BaseResult; -use CodeIgniter\Database\Exceptions\DatabaseException; -use CodeIgniter\Database\Exceptions\DataException; -use CodeIgniter\Database\Query; -use CodeIgniter\Exceptions\ModelException; -use CodeIgniter\I18n\Time; -use CodeIgniter\Pager\Pager; -use CodeIgniter\Validation\ValidationInterface; -use Config\Services; -use InvalidArgumentException; -use ReflectionClass; -use ReflectionException; -use ReflectionProperty; -use stdClass; - -/** - * The BaseModel class provides a number of convenient features that - * makes working with a databases less painful. Extending this class - * provide means of implementing various database systems - * - * It will: - * - simplifies pagination - * - allow specifying the return type (array, object, etc) with each call - * - automatically set and update timestamps - * - handle soft deletes - * - ensure validation is run against objects when saving items - * - process various callbacks - * - allow intermingling calls to the db connection - * - * @phpstan-type row_array array<int|string, float|int|null|object|string> - * @phpstan-type event_data_beforeinsert array{data: row_array} - * @phpstan-type event_data_afterinsert array{id: int|string, data: row_array, result: bool} - * @phpstan-type event_data_beforefind array{id?: int|string, method: string, singleton: bool, limit?: int, offset?: int} - * @phpstan-type event_data_afterfind array{id: int|string|null|list<int|string>, data: row_array|list<row_array>|object|null, method: string, singleton: bool} - * @phpstan-type event_data_beforeupdate array{id: null|list<int|string>, data: row_array} - * @phpstan-type event_data_afterupdate array{id: null|list<int|string>, data: row_array|object, result: bool} - * @phpstan-type event_data_beforedelete array{id: null|list<int|string>, purge: bool} - * @phpstan-type event_data_afterdelete array{id: null|list<int|string>, data: null, purge: bool, result: bool} - */ -abstract class BaseModel -{ - /** - * Pager instance. - * Populated after calling $this->paginate() - * - * @var Pager - */ - public $pager; - - /** - * Last insert ID - * - * @var int|string - */ - protected $insertID = 0; - - /** - * The Database connection group that - * should be instantiated. - * - * @var non-empty-string|null - */ - protected $DBGroup; - - /** - * The format that the results should be returned as. - * Will be overridden if the as* methods are used. - * - * @var string - */ - protected $returnType = 'array'; - - /** - * If this model should use "softDeletes" and - * simply set a date when rows are deleted, or - * do hard deletes. - * - * @var bool - */ - protected $useSoftDeletes = false; - - /** - * An array of field names that are allowed - * to be set by the user in inserts/updates. - * - * @var array - */ - protected $allowedFields = []; - - /** - * If true, will set created_at, and updated_at - * values during insert and update routines. - * - * @var bool - */ - protected $useTimestamps = false; - - /** - * The type of column that created_at and updated_at - * are expected to. - * - * Allowed: 'datetime', 'date', 'int' - * - * @var string - */ - protected $dateFormat = 'datetime'; - - /** - * The column used for insert timestamps - * - * @var string - */ - protected $createdField = 'created_at'; - - /** - * The column used for update timestamps - * - * @var string - */ - protected $updatedField = 'updated_at'; - - /** - * Used by withDeleted to override the - * model's softDelete setting. - * - * @var bool - */ - protected $tempUseSoftDeletes; - - /** - * The column used to save soft delete state - * - * @var string - */ - protected $deletedField = 'deleted_at'; - - /** - * Used by asArray and asObject to provide - * temporary overrides of model default. - * - * @var string - */ - protected $tempReturnType; - - /** - * Whether we should limit fields in inserts - * and updates to those available in $allowedFields or not. - * - * @var bool - */ - protected $protectFields = true; - - /** - * Database Connection - * - * @var BaseConnection - */ - protected $db; - - /** - * Rules used to validate data in insert, update, and save methods. - * The array must match the format of data passed to the Validation - * library. - * - * @var array|string - */ - protected $validationRules = []; - - /** - * Contains any custom error messages to be - * used during data validation. - * - * @var array - */ - protected $validationMessages = []; - - /** - * Skip the model's validation. Used in conjunction with skipValidation() - * to skip data validation for any future calls. - * - * @var bool - */ - protected $skipValidation = false; - - /** - * Whether rules should be removed that do not exist - * in the passed data. Used in updates. - * - * @var bool - */ - protected $cleanValidationRules = true; - - /** - * Our validator instance. - * - * @var ValidationInterface - */ - protected $validation; - - /* - * Callbacks. - * - * Each array should contain the method names (within the model) - * that should be called when those events are triggered. - * - * "Update" and "delete" methods are passed the same items that - * are given to their respective method. - * - * "Find" methods receive the ID searched for (if present), and - * 'afterFind' additionally receives the results that were found. - */ - - /** - * Whether to trigger the defined callbacks - * - * @var bool - */ - protected $allowCallbacks = true; - - /** - * Used by allowCallbacks() to override the - * model's allowCallbacks setting. - * - * @var bool - */ - protected $tempAllowCallbacks; - - /** - * Callbacks for beforeInsert - * - * @var array - */ - protected $beforeInsert = []; - - /** - * Callbacks for afterInsert - * - * @var array - */ - protected $afterInsert = []; - - /** - * Callbacks for beforeUpdate - * - * @var array - */ - protected $beforeUpdate = []; - - /** - * Callbacks for afterUpdate - * - * @var array - */ - protected $afterUpdate = []; - - /** - * Callbacks for beforeInsertBatch - * - * @var array - */ - protected $beforeInsertBatch = []; - - /** - * Callbacks for afterInsertBatch - * - * @var array - */ - protected $afterInsertBatch = []; - - /** - * Callbacks for beforeUpdateBatch - * - * @var array - */ - protected $beforeUpdateBatch = []; - - /** - * Callbacks for afterUpdateBatch - * - * @var array - */ - protected $afterUpdateBatch = []; - - /** - * Callbacks for beforeFind - * - * @var array - */ - protected $beforeFind = []; - - /** - * Callbacks for afterFind - * - * @var array - */ - protected $afterFind = []; - - /** - * Callbacks for beforeDelete - * - * @var array - */ - protected $beforeDelete = []; - - /** - * Callbacks for afterDelete - * - * @var array - */ - protected $afterDelete = []; - - /** - * Whether to allow inserting empty data. - */ - protected bool $allowEmptyInserts = false; - - public function __construct(?ValidationInterface $validation = null) - { - $this->tempReturnType = $this->returnType; - $this->tempUseSoftDeletes = $this->useSoftDeletes; - $this->tempAllowCallbacks = $this->allowCallbacks; - - /** - * @var ValidationInterface|null $validation - */ - $validation ??= Services::validation(null, false); - $this->validation = $validation; - - $this->initialize(); - } - - /** - * Initializes the instance with any additional steps. - * Optionally implemented by child classes. - * - * @return void - */ - protected function initialize() - { - } - - /** - * Fetches the row of database. - * This method works only with dbCalls. - * - * @param bool $singleton Single or multiple results - * @param array|int|string|null $id One primary key or an array of primary keys - * - * @return array|object|null The resulting row of data, or null. - */ - abstract protected function doFind(bool $singleton, $id = null); - - /** - * Fetches the column of database. - * This method works only with dbCalls. - * - * @param string $columnName Column Name - * - * @return array|null The resulting row of data, or null if no data found. - * - * @throws DataException - */ - abstract protected function doFindColumn(string $columnName); - - /** - * Fetches all results, while optionally limiting them. - * This method works only with dbCalls. - * - * @param int $limit Limit - * @param int $offset Offset - * - * @return array - */ - abstract protected function doFindAll(int $limit = 0, int $offset = 0); - - /** - * Returns the first row of the result set. - * This method works only with dbCalls. - * - * @return array|object|null - */ - abstract protected function doFirst(); - - /** - * Inserts data into the current database. - * This method works only with dbCalls. - * - * @param array $row Row data - * @phpstan-param row_array $row - * - * @return bool - */ - abstract protected function doInsert(array $row); - - /** - * Compiles batch insert and runs the queries, validating each row prior. - * This method works only with dbCalls. - * - * @param array|null $set An associative array of insert values - * @param bool|null $escape Whether to escape values - * @param int $batchSize The size of the batch to run - * @param bool $testing True means only number of records is returned, false will execute the query - * - * @return bool|int Number of rows inserted or FALSE on failure - */ - abstract protected function doInsertBatch(?array $set = null, ?bool $escape = null, int $batchSize = 100, bool $testing = false); - - /** - * Updates a single record in the database. - * This method works only with dbCalls. - * - * @param array|int|string|null $id ID - * @param array|null $row Row data - * @phpstan-param row_array|null $row - */ - abstract protected function doUpdate($id = null, $row = null): bool; - - /** - * Compiles an update and runs the query. - * This method works only with dbCalls. - * - * @param array|null $set An associative array of update values - * @param string|null $index The where key - * @param int $batchSize The size of the batch to run - * @param bool $returnSQL True means SQL is returned, false will execute the query - * - * @return false|int|string[] Number of rows affected or FALSE on failure, SQL array when testMode - * - * @throws DatabaseException - */ - abstract protected function doUpdateBatch(?array $set = null, ?string $index = null, int $batchSize = 100, bool $returnSQL = false); - - /** - * Deletes a single record from the database where $id matches. - * This method works only with dbCalls. - * - * @param array|int|string|null $id The rows primary key(s) - * @param bool $purge Allows overriding the soft deletes setting. - * - * @return bool|string - * - * @throws DatabaseException - */ - abstract protected function doDelete($id = null, bool $purge = false); - - /** - * Permanently deletes all rows that have been marked as deleted. - * through soft deletes (deleted = 1). - * This method works only with dbCalls. - * - * @return bool|string Returns a string if in test mode. - */ - abstract protected function doPurgeDeleted(); - - /** - * Works with the find* methods to return only the rows that - * have been deleted. - * This method works only with dbCalls. - * - * @return void - */ - abstract protected function doOnlyDeleted(); - - /** - * Compiles a replace and runs the query. - * This method works only with dbCalls. - * - * @param array|null $row Row data - * @phpstan-param row_array|null $row - * @param bool $returnSQL Set to true to return Query String - * - * @return BaseResult|false|Query|string - */ - abstract protected function doReplace(?array $row = null, bool $returnSQL = false); - - /** - * Grabs the last error(s) that occurred from the Database connection. - * This method works only with dbCalls. - * - * @return array|null - */ - abstract protected function doErrors(); - - /** - * Returns the id value for the data array or object. - * - * @param array|object $data Data - * - * @return array|int|string|null - * - * @deprecated Add an override on getIdValue() instead. Will be removed in version 5.0. - */ - abstract protected function idValue($data); - - /** - * Public getter to return the id value using the idValue() method. - * For example with SQL this will return $data->$this->primaryKey. - * - * @param array|object $row Row data - * @phpstan-param row_array|object $row - * - * @return array|int|string|null - * - * @todo: Make abstract in version 5.0 - */ - public function getIdValue($row) - { - return $this->idValue($row); - } - - /** - * Override countAllResults to account for soft deleted accounts. - * This method works only with dbCalls. - * - * @param bool $reset Reset - * @param bool $test Test - * - * @return int|string - */ - abstract public function countAllResults(bool $reset = true, bool $test = false); - - /** - * Loops over records in batches, allowing you to operate on them. - * This method works only with dbCalls. - * - * @param int $size Size - * @param Closure $userFunc Callback Function - * - * @return void - * - * @throws DataException - */ - abstract public function chunk(int $size, Closure $userFunc); - - /** - * Fetches the row of database. - * - * @param array|int|string|null $id One primary key or an array of primary keys - * - * @return array|object|null The resulting row of data, or null. - * @phpstan-return ($id is int|string ? row_array|object|null : list<row_array|object>) - */ - public function find($id = null) - { - $singleton = is_numeric($id) || is_string($id); - - if ($this->tempAllowCallbacks) { - // Call the before event and check for a return - $eventData = $this->trigger('beforeFind', [ - 'id' => $id, - 'method' => 'find', - 'singleton' => $singleton, - ]); - - if (isset($eventData['returnData']) && $eventData['returnData'] === true) { - return $eventData['data']; - } - } - - $eventData = [ - 'id' => $id, - 'data' => $this->doFind($singleton, $id), - 'method' => 'find', - 'singleton' => $singleton, - ]; - - if ($this->tempAllowCallbacks) { - $eventData = $this->trigger('afterFind', $eventData); - } - - $this->tempReturnType = $this->returnType; - $this->tempUseSoftDeletes = $this->useSoftDeletes; - $this->tempAllowCallbacks = $this->allowCallbacks; - - return $eventData['data']; - } - - /** - * Fetches the column of database. - * - * @param string $columnName Column Name - * - * @return array|null The resulting row of data, or null if no data found. - * - * @throws DataException - */ - public function findColumn(string $columnName) - { - if (strpos($columnName, ',') !== false) { - throw DataException::forFindColumnHaveMultipleColumns(); - } - - $resultSet = $this->doFindColumn($columnName); - - return $resultSet ? array_column($resultSet, $columnName) : null; - } - - /** - * Fetches all results, while optionally limiting them. - * - * @param int $limit Limit - * @param int $offset Offset - * - * @return array - */ - public function findAll(int $limit = 0, int $offset = 0) - { - if ($this->tempAllowCallbacks) { - // Call the before event and check for a return - $eventData = $this->trigger('beforeFind', [ - 'method' => 'findAll', - 'limit' => $limit, - 'offset' => $offset, - 'singleton' => false, - ]); - - if (isset($eventData['returnData']) && $eventData['returnData'] === true) { - return $eventData['data']; - } - } - - $eventData = [ - 'data' => $this->doFindAll($limit, $offset), - 'limit' => $limit, - 'offset' => $offset, - 'method' => 'findAll', - 'singleton' => false, - ]; - - if ($this->tempAllowCallbacks) { - $eventData = $this->trigger('afterFind', $eventData); - } - - $this->tempReturnType = $this->returnType; - $this->tempUseSoftDeletes = $this->useSoftDeletes; - $this->tempAllowCallbacks = $this->allowCallbacks; - - return $eventData['data']; - } - - /** - * Returns the first row of the result set. - * - * @return array|object|null - */ - public function first() - { - if ($this->tempAllowCallbacks) { - // Call the before event and check for a return - $eventData = $this->trigger('beforeFind', [ - 'method' => 'first', - 'singleton' => true, - ]); - - if (isset($eventData['returnData']) && $eventData['returnData'] === true) { - return $eventData['data']; - } - } - - $eventData = [ - 'data' => $this->doFirst(), - 'method' => 'first', - 'singleton' => true, - ]; - - if ($this->tempAllowCallbacks) { - $eventData = $this->trigger('afterFind', $eventData); - } - - $this->tempReturnType = $this->returnType; - $this->tempUseSoftDeletes = $this->useSoftDeletes; - $this->tempAllowCallbacks = $this->allowCallbacks; - - return $eventData['data']; - } - - /** - * A convenience method that will attempt to determine whether the - * data should be inserted or updated. Will work with either - * an array or object. When using with custom class objects, - * you must ensure that the class will provide access to the class - * variables, even if through a magic method. - * - * @param array|object $row Row data - * @phpstan-param row_array|object $row - * - * @throws ReflectionException - */ - public function save($row): bool - { - if ((array) $row === []) { - return true; - } - - if ($this->shouldUpdate($row)) { - $response = $this->update($this->getIdValue($row), $row); - } else { - $response = $this->insert($row, false); - - if ($response !== false) { - $response = true; - } - } - - return $response; - } - - /** - * This method is called on save to determine if entry have to be updated. - * If this method returns false insert operation will be executed - * - * @param array|object $row Row data - * @phpstan-param row_array|object $row - */ - protected function shouldUpdate($row): bool - { - $id = $this->getIdValue($row); - - return ! ($id === null || $id === []); - } - - /** - * Returns last insert ID or 0. - * - * @return int|string - */ - public function getInsertID() - { - return is_numeric($this->insertID) ? (int) $this->insertID : $this->insertID; - } - - /** - * Inserts data into the database. If an object is provided, - * it will attempt to convert it to an array. - * - * @param array|object|null $row Row data - * @phpstan-param row_array|object|null $row - * @param bool $returnID Whether insert ID should be returned or not. - * - * @return bool|int|string insert ID or true on success. false on failure. - * @phpstan-return ($returnID is true ? int|string|false : bool) - * - * @throws ReflectionException - */ - public function insert($row = null, bool $returnID = true) - { - $this->insertID = 0; - - // Set $cleanValidationRules to false temporary. - $cleanValidationRules = $this->cleanValidationRules; - $this->cleanValidationRules = false; - - $row = $this->transformDataToArray($row, 'insert'); - - // Validate data before saving. - if (! $this->skipValidation && ! $this->validate($row)) { - // Restore $cleanValidationRules - $this->cleanValidationRules = $cleanValidationRules; - - return false; - } - - // Restore $cleanValidationRules - $this->cleanValidationRules = $cleanValidationRules; - - // Must be called first, so we don't - // strip out created_at values. - $row = $this->doProtectFieldsForInsert($row); - - // doProtectFields() can further remove elements from - // $row, so we need to check for empty dataset again - if (! $this->allowEmptyInserts && $row === []) { - throw DataException::forEmptyDataset('insert'); - } - - // Set created_at and updated_at with same time - $date = $this->setDate(); - $row = $this->setCreatedField($row, $date); - $row = $this->setUpdatedField($row, $date); - - $eventData = ['data' => $row]; - - if ($this->tempAllowCallbacks) { - $eventData = $this->trigger('beforeInsert', $eventData); - } - - $result = $this->doInsert($eventData['data']); - - $eventData = [ - 'id' => $this->insertID, - 'data' => $eventData['data'], - 'result' => $result, - ]; - - if ($this->tempAllowCallbacks) { - // Trigger afterInsert events with the inserted data and new ID - $this->trigger('afterInsert', $eventData); - } - - $this->tempAllowCallbacks = $this->allowCallbacks; - - // If insertion failed, get out of here - if (! $result) { - return $result; - } - - // otherwise return the insertID, if requested. - return $returnID ? $this->insertID : $result; - } - - /** - * Set datetime to created field. - * - * @phpstan-param row_array $row - * @param int|string $date timestamp or datetime string - */ - protected function setCreatedField(array $row, $date): array - { - if ($this->useTimestamps && $this->createdField !== '' && ! array_key_exists($this->createdField, $row)) { - $row[$this->createdField] = $date; - } - - return $row; - } - - /** - * Set datetime to updated field. - * - * @phpstan-param row_array $row - * @param int|string $date timestamp or datetime string - */ - protected function setUpdatedField(array $row, $date): array - { - if ($this->useTimestamps && $this->updatedField !== '' && ! array_key_exists($this->updatedField, $row)) { - $row[$this->updatedField] = $date; - } - - return $row; - } - - /** - * Compiles batch insert runs the queries, validating each row prior. - * - * @param list<array|object>|null $set an associative array of insert values - * @phpstan-param list<row_array|object>|null $set - * @param bool|null $escape Whether to escape values - * @param int $batchSize The size of the batch to run - * @param bool $testing True means only number of records is returned, false will execute the query - * - * @return bool|int Number of rows inserted or FALSE on failure - * - * @throws ReflectionException - */ - public function insertBatch(?array $set = null, ?bool $escape = null, int $batchSize = 100, bool $testing = false) - { - // Set $cleanValidationRules to false temporary. - $cleanValidationRules = $this->cleanValidationRules; - $this->cleanValidationRules = false; - - if (is_array($set)) { - foreach ($set as &$row) { - // If $row is using a custom class with public or protected - // properties representing the collection elements, we need to grab - // them as an array. - if (is_object($row) && ! $row instanceof stdClass) { - $row = $this->objectToArray($row, false, true); - } - - // If it's still a stdClass, go ahead and convert to - // an array so doProtectFields and other model methods - // don't have to do special checks. - if (is_object($row)) { - $row = (array) $row; - } - - // Validate every row. - if (! $this->skipValidation && ! $this->validate($row)) { - // Restore $cleanValidationRules - $this->cleanValidationRules = $cleanValidationRules; - - return false; - } - - // Must be called first so we don't - // strip out created_at values. - $row = $this->doProtectFieldsForInsert($row); - - // Set created_at and updated_at with same time - $date = $this->setDate(); - $row = $this->setCreatedField($row, $date); - $row = $this->setUpdatedField($row, $date); - } - } - - // Restore $cleanValidationRules - $this->cleanValidationRules = $cleanValidationRules; - - $eventData = ['data' => $set]; - - if ($this->tempAllowCallbacks) { - $eventData = $this->trigger('beforeInsertBatch', $eventData); - } - - $result = $this->doInsertBatch($eventData['data'], $escape, $batchSize, $testing); - - $eventData = [ - 'data' => $eventData['data'], - 'result' => $result, - ]; - - if ($this->tempAllowCallbacks) { - // Trigger afterInsert events with the inserted data and new ID - $this->trigger('afterInsertBatch', $eventData); - } - - $this->tempAllowCallbacks = $this->allowCallbacks; - - return $result; - } - - /** - * Updates a single record in the database. If an object is provided, - * it will attempt to convert it into an array. - * - * @param array|int|string|null $id - * @param array|object|null $row Row data - * @phpstan-param row_array|object|null $row - * - * @throws ReflectionException - */ - public function update($id = null, $row = null): bool - { - if (is_bool($id)) { - throw new InvalidArgumentException('update(): argument #1 ($id) should not be boolean.'); - } - - if (is_numeric($id) || is_string($id)) { - $id = [$id]; - } - - $row = $this->transformDataToArray($row, 'update'); - - // Validate data before saving. - if (! $this->skipValidation && ! $this->validate($row)) { - return false; - } - - // Must be called first, so we don't - // strip out updated_at values. - $row = $this->doProtectFields($row); - - // doProtectFields() can further remove elements from - // $row, so we need to check for empty dataset again - if ($row === []) { - throw DataException::forEmptyDataset('update'); - } - - $row = $this->setUpdatedField($row, $this->setDate()); - - $eventData = [ - 'id' => $id, - 'data' => $row, - ]; - - if ($this->tempAllowCallbacks) { - $eventData = $this->trigger('beforeUpdate', $eventData); - } - - $eventData = [ - 'id' => $id, - 'data' => $eventData['data'], - 'result' => $this->doUpdate($id, $eventData['data']), - ]; - - if ($this->tempAllowCallbacks) { - $this->trigger('afterUpdate', $eventData); - } - - $this->tempAllowCallbacks = $this->allowCallbacks; - - return $eventData['result']; - } - - /** - * Compiles an update and runs the query. - * - * @param list<array|object>|null $set an associative array of insert values - * @phpstan-param list<row_array|object>|null $set - * @param string|null $index The where key - * @param int $batchSize The size of the batch to run - * @param bool $returnSQL True means SQL is returned, false will execute the query - * - * @return false|int|string[] Number of rows affected or FALSE on failure, SQL array when testMode - * - * @throws DatabaseException - * @throws ReflectionException - */ - public function updateBatch(?array $set = null, ?string $index = null, int $batchSize = 100, bool $returnSQL = false) - { - if (is_array($set)) { - foreach ($set as &$row) { - // If $row is using a custom class with public or protected - // properties representing the collection elements, we need to grab - // them as an array. - if (is_object($row) && ! $row instanceof stdClass) { - // For updates the index field is needed even if it is not changed. - // So set $onlyChanged to false. - $row = $this->objectToArray($row, false, true); - } - - // If it's still a stdClass, go ahead and convert to - // an array so doProtectFields and other model methods - // don't have to do special checks. - if (is_object($row)) { - $row = (array) $row; - } - - // Validate data before saving. - if (! $this->skipValidation && ! $this->validate($row)) { - return false; - } - - // Save updateIndex for later - $updateIndex = $row[$index] ?? null; - - if ($updateIndex === null) { - throw new InvalidArgumentException( - 'The index ("' . $index . '") for updateBatch() is missing in the data: ' - . json_encode($row) - ); - } - - // Must be called first so we don't - // strip out updated_at values. - $row = $this->doProtectFields($row); - - // Restore updateIndex value in case it was wiped out - if ($updateIndex !== null) { - $row[$index] = $updateIndex; - } - - $row = $this->setUpdatedField($row, $this->setDate()); - } - } - - $eventData = ['data' => $set]; - - if ($this->tempAllowCallbacks) { - $eventData = $this->trigger('beforeUpdateBatch', $eventData); - } - - $result = $this->doUpdateBatch($eventData['data'], $index, $batchSize, $returnSQL); - - $eventData = [ - 'data' => $eventData['data'], - 'result' => $result, - ]; - - if ($this->tempAllowCallbacks) { - // Trigger afterInsert events with the inserted data and new ID - $this->trigger('afterUpdateBatch', $eventData); - } - - $this->tempAllowCallbacks = $this->allowCallbacks; - - return $result; - } - - /** - * Deletes a single record from the database where $id matches. - * - * @param array|int|string|null $id The rows primary key(s) - * @param bool $purge Allows overriding the soft deletes setting. - * - * @return BaseResult|bool - * - * @throws DatabaseException - */ - public function delete($id = null, bool $purge = false) - { - if (is_bool($id)) { - throw new InvalidArgumentException('delete(): argument #1 ($id) should not be boolean.'); - } - - if ($id && (is_numeric($id) || is_string($id))) { - $id = [$id]; - } - - $eventData = [ - 'id' => $id, - 'purge' => $purge, - ]; - - if ($this->tempAllowCallbacks) { - $this->trigger('beforeDelete', $eventData); - } - - $eventData = [ - 'id' => $id, - 'data' => null, - 'purge' => $purge, - 'result' => $this->doDelete($id, $purge), - ]; - - if ($this->tempAllowCallbacks) { - $this->trigger('afterDelete', $eventData); - } - - $this->tempAllowCallbacks = $this->allowCallbacks; - - return $eventData['result']; - } - - /** - * Permanently deletes all rows that have been marked as deleted - * through soft deletes (deleted = 1). - * - * @return bool|string Returns a string if in test mode. - */ - public function purgeDeleted() - { - if (! $this->useSoftDeletes) { - return true; - } - - return $this->doPurgeDeleted(); - } - - /** - * Sets $useSoftDeletes value so that we can temporarily override - * the soft deletes settings. Can be used for all find* methods. - * - * @param bool $val Value - * - * @return $this - */ - public function withDeleted(bool $val = true) - { - $this->tempUseSoftDeletes = ! $val; - - return $this; - } - - /** - * Works with the find* methods to return only the rows that - * have been deleted. - * - * @return $this - */ - public function onlyDeleted() - { - $this->tempUseSoftDeletes = false; - $this->doOnlyDeleted(); - - return $this; - } - - /** - * Compiles a replace and runs the query. - * - * @param array|null $row Row data - * @phpstan-param row_array|null $row - * @param bool $returnSQL Set to true to return Query String - * - * @return BaseResult|false|Query|string - */ - public function replace(?array $row = null, bool $returnSQL = false) - { - // Validate data before saving. - if (($row !== null) && ! $this->skipValidation && ! $this->validate($row)) { - return false; - } - - $row = $this->setUpdatedField((array) $row, $this->setDate()); - - return $this->doReplace($row, $returnSQL); - } - - /** - * Grabs the last error(s) that occurred. If data was validated, - * it will first check for errors there, otherwise will try to - * grab the last error from the Database connection. - * - * The return array should be in the following format: - * ['source' => 'message'] - * - * @param bool $forceDB Always grab the db error, not validation - * - * @return array<string,string> - */ - public function errors(bool $forceDB = false) - { - // Do we have validation errors? - if (! $forceDB && ! $this->skipValidation && ($errors = $this->validation->getErrors())) { - return $errors; - } - - return $this->doErrors(); - } - - /** - * Works with Pager to get the size and offset parameters. - * Expects a GET variable (?page=2) that specifies the page of results - * to display. - * - * @param int|null $perPage Items per page - * @param string $group Will be used by the pagination library to identify a unique pagination set. - * @param int|null $page Optional page number (useful when the page number is provided in different way) - * @param int $segment Optional URI segment number (if page number is provided by URI segment) - * - * @return array|null - */ - public function paginate(?int $perPage = null, string $group = 'default', ?int $page = null, int $segment = 0) - { - // Since multiple models may use the Pager, the Pager must be shared. - $pager = Services::pager(); - - if ($segment !== 0) { - $pager->setSegment($segment, $group); - } - - $page = $page >= 1 ? $page : $pager->getCurrentPage($group); - // Store it in the Pager library, so it can be paginated in the views. - $this->pager = $pager->store($group, $page, $perPage, $this->countAllResults(false), $segment); - $perPage = $this->pager->getPerPage($group); - $offset = ($pager->getCurrentPage($group) - 1) * $perPage; - - return $this->findAll($perPage, $offset); - } - - /** - * It could be used when you have to change default or override current allowed fields. - * - * @param array $allowedFields Array with names of fields - * - * @return $this - */ - public function setAllowedFields(array $allowedFields) - { - $this->allowedFields = $allowedFields; - - return $this; - } - - /** - * Sets whether or not we should whitelist data set during - * updates or inserts against $this->availableFields. - * - * @param bool $protect Value - * - * @return $this - */ - public function protect(bool $protect = true) - { - $this->protectFields = $protect; - - return $this; - } - - /** - * Ensures that only the fields that are allowed to be updated are - * in the data array. - * - * @used-by update() to protect against mass assignment vulnerabilities. - * @used-by updateBatch() to protect against mass assignment vulnerabilities. - * - * @param array $row Row data - * @phpstan-param row_array $row - * - * @throws DataException - */ - protected function doProtectFields(array $row): array - { - if (! $this->protectFields) { - return $row; - } - - if ($this->allowedFields === []) { - throw DataException::forInvalidAllowedFields(static::class); - } - - foreach (array_keys($row) as $key) { - if (! in_array($key, $this->allowedFields, true)) { - unset($row[$key]); - } - } - - return $row; - } - - /** - * Ensures that only the fields that are allowed to be inserted are in - * the data array. - * - * @used-by insert() to protect against mass assignment vulnerabilities. - * @used-by insertBatch() to protect against mass assignment vulnerabilities. - * - * @param array $row Row data - * @phpstan-param row_array $row - * - * @throws DataException - */ - protected function doProtectFieldsForInsert(array $row): array - { - return $this->doProtectFields($row); - } - - /** - * Sets the date or current date if null value is passed. - * - * @param int|null $userData An optional PHP timestamp to be converted. - * - * @return int|string - * - * @throws ModelException - */ - protected function setDate(?int $userData = null) - { - $currentDate = $userData ?? Time::now()->getTimestamp(); - - return $this->intToDate($currentDate); - } - - /** - * A utility function to allow child models to use the type of - * date/time format that they prefer. This is primarily used for - * setting created_at, updated_at and deleted_at values, but can be - * used by inheriting classes. - * - * The available time formats are: - * - 'int' - Stores the date as an integer timestamp - * - 'datetime' - Stores the data in the SQL datetime format - * - 'date' - Stores the date (only) in the SQL date format. - * - * @param int $value value - * - * @return int|string - * - * @throws ModelException - */ - protected function intToDate(int $value) - { - switch ($this->dateFormat) { - case 'int': - return $value; - - case 'datetime': - return date('Y-m-d H:i:s', $value); - - case 'date': - return date('Y-m-d', $value); - - default: - throw ModelException::forNoDateFormat(static::class); - } - } - - /** - * Converts Time value to string using $this->dateFormat. - * - * The available time formats are: - * - 'int' - Stores the date as an integer timestamp - * - 'datetime' - Stores the data in the SQL datetime format - * - 'date' - Stores the date (only) in the SQL date format. - * - * @param Time $value value - * - * @return int|string - */ - protected function timeToDate(Time $value) - { - switch ($this->dateFormat) { - case 'datetime': - return $value->format('Y-m-d H:i:s'); - - case 'date': - return $value->format('Y-m-d'); - - case 'int': - return $value->getTimestamp(); - - default: - return (string) $value; - } - } - - /** - * Set the value of the skipValidation flag. - * - * @param bool $skip Value - * - * @return $this - */ - public function skipValidation(bool $skip = true) - { - $this->skipValidation = $skip; - - return $this; - } - - /** - * Allows to set (and reset) validation messages. - * It could be used when you have to change default or override current validate messages. - * - * @param array $validationMessages Value - * - * @return $this - */ - public function setValidationMessages(array $validationMessages) - { - $this->validationMessages = $validationMessages; - - return $this; - } - - /** - * Allows to set field wise validation message. - * It could be used when you have to change default or override current validate messages. - * - * @param string $field Field Name - * @param array $fieldMessages Validation messages - * - * @return $this - */ - public function setValidationMessage(string $field, array $fieldMessages) - { - $this->validationMessages[$field] = $fieldMessages; - - return $this; - } - - /** - * Allows to set (and reset) validation rules. - * It could be used when you have to change default or override current validate rules. - * - * @param array $validationRules Value - * - * @return $this - */ - public function setValidationRules(array $validationRules) - { - $this->validationRules = $validationRules; - - return $this; - } - - /** - * Allows to set field wise validation rules. - * It could be used when you have to change default or override current validate rules. - * - * @param string $field Field Name - * @param array|string $fieldRules Validation rules - * - * @return $this - */ - public function setValidationRule(string $field, $fieldRules) - { - $rules = $this->validationRules; - - // ValidationRules can be either a string, which is the group name, - // or an array of rules. - if (is_string($rules)) { - [$rules, $customErrors] = $this->validation->loadRuleGroup($rules); - - $this->validationRules = $rules; - $this->validationMessages += $customErrors; - } - - $this->validationRules[$field] = $fieldRules; - - return $this; - } - - /** - * Should validation rules be removed before saving? - * Most handy when doing updates. - * - * @param bool $choice Value - * - * @return $this - */ - public function cleanRules(bool $choice = false) - { - $this->cleanValidationRules = $choice; - - return $this; - } - - /** - * Validate the row data against the validation rules (or the validation group) - * specified in the class property, $validationRules. - * - * @param array|object $row Row data - * @phpstan-param row_array|object $row - */ - public function validate($row): bool - { - $rules = $this->getValidationRules(); - - // Validation requires array, so cast away. - if (is_object($row)) { - $row = (array) $row; - } - - if ($this->skipValidation || $rules === [] || $row === []) { - return true; - } - - $rules = $this->cleanValidationRules ? $this->cleanValidationRules($rules, $row) : $rules; - - // If no data existed that needs validation - // our job is done here. - if ($rules === []) { - return true; - } - - $this->validation->reset()->setRules($rules, $this->validationMessages); - - return $this->validation->run($row, null, $this->DBGroup); - } - - /** - * Returns the model's defined validation rules so that they - * can be used elsewhere, if needed. - * - * @param array $options Options - */ - public function getValidationRules(array $options = []): array - { - $rules = $this->validationRules; - - // ValidationRules can be either a string, which is the group name, - // or an array of rules. - if (is_string($rules)) { - [$rules, $customErrors] = $this->validation->loadRuleGroup($rules); - - $this->validationMessages += $customErrors; - } - - if (isset($options['except'])) { - $rules = array_diff_key($rules, array_flip($options['except'])); - } elseif (isset($options['only'])) { - $rules = array_intersect_key($rules, array_flip($options['only'])); - } - - return $rules; - } - - /** - * Returns the model's validation messages, so they - * can be used elsewhere, if needed. - */ - public function getValidationMessages(): array - { - return $this->validationMessages; - } - - /** - * Removes any rules that apply to fields that have not been set - * currently so that rules don't block updating when only updating - * a partial row. - * - * @param array $rules Array containing field name and rule - * @param array $row Row data (@TODO Remove null in param type) - * @phpstan-param row_array $row - */ - protected function cleanValidationRules(array $rules, ?array $row = null): array - { - if ($row === null || $row === []) { - return []; - } - - foreach (array_keys($rules) as $field) { - if (! array_key_exists($field, $row)) { - unset($rules[$field]); - } - } - - return $rules; - } - - /** - * Sets $tempAllowCallbacks value so that we can temporarily override - * the setting. Resets after the next method that uses triggers. - * - * @param bool $val value - * - * @return $this - */ - public function allowCallbacks(bool $val = true) - { - $this->tempAllowCallbacks = $val; - - return $this; - } - - /** - * A simple event trigger for Model Events that allows additional - * data manipulation within the model. Specifically intended for - * usage by child models this can be used to format data, - * save/load related classes, etc. - * - * It is the responsibility of the callback methods to return - * the data itself. - * - * Each $eventData array MUST have a 'data' key with the relevant - * data for callback methods (like an array of key/value pairs to insert - * or update, an array of results, etc.) - * - * If callbacks are not allowed then returns $eventData immediately. - * - * @param string $event Event - * @param array $eventData Event Data - * - * @return array - * - * @throws DataException - */ - protected function trigger(string $event, array $eventData) - { - // Ensure it's a valid event - if (! isset($this->{$event}) || $this->{$event} === []) { - return $eventData; - } - - foreach ($this->{$event} as $callback) { - if (! method_exists($this, $callback)) { - throw DataException::forInvalidMethodTriggered($callback); - } - - $eventData = $this->{$callback}($eventData); - } - - return $eventData; - } - - /** - * Sets the return type of the results to be as an associative array. - * - * @return $this - */ - public function asArray() - { - $this->tempReturnType = 'array'; - - return $this; - } - - /** - * Sets the return type to be of the specified type of object. - * Defaults to a simple object, but can be any class that has - * class vars with the same name as the collection columns, - * or at least allows them to be created. - * - * @param string $class Class Name - * - * @return $this - */ - public function asObject(string $class = 'object') - { - $this->tempReturnType = $class; - - return $this; - } - - /** - * Takes a class and returns an array of its public and protected - * properties as an array suitable for use in creates and updates. - * This method uses objectToRawArray() internally and does conversion - * to string on all Time instances - * - * @param object $object Object - * @param bool $onlyChanged Only Changed Property - * @param bool $recursive If true, inner entities will be cast as array as well - * - * @return array<string, mixed> - * - * @throws ReflectionException - */ - protected function objectToArray($object, bool $onlyChanged = true, bool $recursive = false): array - { - $properties = $this->objectToRawArray($object, $onlyChanged, $recursive); - - // Convert any Time instances to appropriate $dateFormat - return $this->timeToString($properties); - } - - /** - * Convert any Time instances to appropriate $dateFormat. - * - * @param array<string, mixed> $properties - * - * @return array<string, mixed> - */ - protected function timeToString(array $properties): array - { - if ($properties === []) { - return []; - } - - return array_map(function ($value) { - if ($value instanceof Time) { - return $this->timeToDate($value); - } - - return $value; - }, $properties); - } - - /** - * Takes a class and returns an array of its public and protected - * properties as an array with raw values. - * - * @param object $object Object - * @param bool $onlyChanged Only Changed Property - * @param bool $recursive If true, inner entities will be casted as array as well - * - * @return array<string, mixed> - * - * @throws ReflectionException - */ - protected function objectToRawArray($object, bool $onlyChanged = true, bool $recursive = false): array - { - // Entity::toRawArray() returns array. - if (method_exists($object, 'toRawArray')) { - $properties = $object->toRawArray($onlyChanged, $recursive); - } else { - $mirror = new ReflectionClass($object); - $props = $mirror->getProperties(ReflectionProperty::IS_PUBLIC | ReflectionProperty::IS_PROTECTED); - - $properties = []; - - // Loop over each property, - // saving the name/value in a new array we can return. - foreach ($props as $prop) { - // Must make protected values accessible. - $prop->setAccessible(true); - $properties[$prop->getName()] = $prop->getValue($object); - } - } - - return $properties; - } - - /** - * Transform data to array. - * - * @param array|object|null $row Row data - * @phpstan-param row_array|object|null $row - * @param string $type Type of data (insert|update) - * - * @throws DataException - * @throws InvalidArgumentException - * @throws ReflectionException - */ - protected function transformDataToArray($row, string $type): array - { - if (! in_array($type, ['insert', 'update'], true)) { - throw new InvalidArgumentException(sprintf('Invalid type "%s" used upon transforming data to array.', $type)); - } - - if (! $this->allowEmptyInserts && ($row === null || (array) $row === [])) { - throw DataException::forEmptyDataset($type); - } - - // If $row is using a custom class with public or protected - // properties representing the collection elements, we need to grab - // them as an array. - if (is_object($row) && ! $row instanceof stdClass) { - // If it validates with entire rules, all fields are needed. - $onlyChanged = ($this->skipValidation === false && $this->cleanValidationRules === false) - ? false : ($type === 'update'); - - $row = $this->objectToArray($row, $onlyChanged, true); - } - - // If it's still a stdClass, go ahead and convert to - // an array so doProtectFields and other model methods - // don't have to do special checks. - if (is_object($row)) { - $row = (array) $row; - } - - // If it's still empty here, means $row is no change or is empty object - if (! $this->allowEmptyInserts && ($row === null || $row === [])) { - throw DataException::forEmptyDataset($type); - } - - return $row; - } - - /** - * Provides the db connection and model's properties. - * - * @param string $name Name - * - * @return array|bool|float|int|object|string|null - */ - public function __get(string $name) - { - if (property_exists($this, $name)) { - return $this->{$name}; - } - - return $this->db->{$name} ?? null; - } - - /** - * Checks for the existence of properties across this model, and db connection. - * - * @param string $name Name - */ - public function __isset(string $name): bool - { - if (property_exists($this, $name)) { - return true; - } - - return isset($this->db->{$name}); - } - - /** - * Provides direct access to method in the database connection. - * - * @param string $name Name - * @param array $params Params - * - * @return $this|null - */ - public function __call(string $name, array $params) - { - if (method_exists($this->db, $name)) { - return $this->db->{$name}(...$params); - } - - return null; - } - - /** - * Replace any placeholders within the rules with the values that - * match the 'key' of any properties being set. For example, if - * we had the following $data array: - * - * [ 'id' => 13 ] - * - * and the following rule: - * - * 'required|is_unique[users,email,id,{id}]' - * - * The value of {id} would be replaced with the actual id in the form data: - * - * 'required|is_unique[users,email,id,13]' - * - * @param array $rules Validation rules - * @param array $data Data - * - * @codeCoverageIgnore - * - * @deprecated use fillPlaceholders($rules, $data) from Validation instead - */ - protected function fillPlaceholders(array $rules, array $data): array - { - $replacements = []; - - foreach ($data as $key => $value) { - $replacements['{' . $key . '}'] = $value; - } - - if ($replacements !== []) { - foreach ($rules as &$rule) { - if (is_array($rule)) { - foreach ($rule as &$row) { - // Should only be an `errors` array - // which doesn't take placeholders. - if (is_array($row)) { - continue; - } - - $row = strtr($row, $replacements); - } - - continue; - } - - $rule = strtr($rule, $replacements); - } - } - - return $rules; - } - - /** - * Sets $allowEmptyInserts. - */ - public function allowEmptyInserts(bool $value = true): self - { - $this->allowEmptyInserts = $value; - - return $this; - } -} diff --git a/system4.4.6/CLI/BaseCommand.php b/system4.4.6/CLI/BaseCommand.php deleted file mode 100644 index 8101283b..00000000 --- a/system4.4.6/CLI/BaseCommand.php +++ /dev/null @@ -1,227 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\CLI; - -use Config\Exceptions; -use Psr\Log\LoggerInterface; -use ReflectionException; -use Throwable; - -/** - * BaseCommand is the base class used in creating CLI commands. - * - * @property array<string, string> $arguments - * @property Commands $commands - * @property string $description - * @property string $group - * @property LoggerInterface $logger - * @property string $name - * @property array<string, string> $options - * @property string $usage - */ -abstract class BaseCommand -{ - /** - * The group the command is lumped under - * when listing commands. - * - * @var string - */ - protected $group; - - /** - * The Command's name - * - * @var string - */ - protected $name; - - /** - * the Command's usage description - * - * @var string - */ - protected $usage; - - /** - * the Command's short description - * - * @var string - */ - protected $description; - - /** - * the Command's options description - * - * @var array<string, string> - */ - protected $options = []; - - /** - * the Command's Arguments description - * - * @var array<string, string> - */ - protected $arguments = []; - - /** - * The Logger to use for a command - * - * @var LoggerInterface - */ - protected $logger; - - /** - * Instance of Commands so - * commands can call other commands. - * - * @var Commands - */ - protected $commands; - - public function __construct(LoggerInterface $logger, Commands $commands) - { - $this->logger = $logger; - $this->commands = $commands; - } - - /** - * Actually execute a command. - * - * @param array<int|string, string|null> $params - * - * @return int|void - */ - abstract public function run(array $params); - - /** - * Can be used by a command to run other commands. - * - * @return int|void - * - * @throws ReflectionException - */ - protected function call(string $command, array $params = []) - { - return $this->commands->run($command, $params); - } - - /** - * A simple method to display an error with line/file, in child commands. - * - * @return void - */ - protected function showError(Throwable $e) - { - $exception = $e; - $message = $e->getMessage(); - $config = config(Exceptions::class); - - require $config->errorViewPath . '/cli/error_exception.php'; - } - - /** - * Show Help includes (Usage, Arguments, Description, Options). - * - * @return void - */ - public function showHelp() - { - CLI::write(lang('CLI.helpUsage'), 'yellow'); - - if (! empty($this->usage)) { - $usage = $this->usage; - } else { - $usage = $this->name; - - if ($this->arguments !== []) { - $usage .= ' [arguments]'; - } - } - - CLI::write($this->setPad($usage, 0, 0, 2)); - - if (! empty($this->description)) { - CLI::newLine(); - CLI::write(lang('CLI.helpDescription'), 'yellow'); - CLI::write($this->setPad($this->description, 0, 0, 2)); - } - - if ($this->arguments !== []) { - CLI::newLine(); - CLI::write(lang('CLI.helpArguments'), 'yellow'); - $length = max(array_map('strlen', array_keys($this->arguments))); - - foreach ($this->arguments as $argument => $description) { - CLI::write(CLI::color($this->setPad($argument, $length, 2, 2), 'green') . $description); - } - } - - if ($this->options !== []) { - CLI::newLine(); - CLI::write(lang('CLI.helpOptions'), 'yellow'); - $length = max(array_map('strlen', array_keys($this->options))); - - foreach ($this->options as $option => $description) { - CLI::write(CLI::color($this->setPad($option, $length, 2, 2), 'green') . $description); - } - } - } - - /** - * Pads our string out so that all titles are the same length to nicely line up descriptions. - * - * @param int $extra How many extra spaces to add at the end - */ - public function setPad(string $item, int $max, int $extra = 2, int $indent = 0): string - { - $max += $extra + $indent; - - return str_pad(str_repeat(' ', $indent) . $item, $max); - } - - /** - * Get pad for $key => $value array output - * - * @deprecated Use setPad() instead. - * - * @codeCoverageIgnore - */ - public function getPad(array $array, int $pad): int - { - $max = 0; - - foreach (array_keys($array) as $key) { - $max = max($max, strlen($key)); - } - - return $max + $pad; - } - - /** - * Makes it simple to access our protected properties. - * - * @return array|Commands|LoggerInterface|string|null - */ - public function __get(string $key) - { - return $this->{$key} ?? null; - } - - /** - * Makes it simple to check our protected properties. - */ - public function __isset(string $key): bool - { - return isset($this->{$key}); - } -} diff --git a/system4.4.6/CLI/CLI.php b/system4.4.6/CLI/CLI.php deleted file mode 100644 index 9a50e403..00000000 --- a/system4.4.6/CLI/CLI.php +++ /dev/null @@ -1,1153 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\CLI; - -use CodeIgniter\CLI\Exceptions\CLIException; -use Config\Services; -use InvalidArgumentException; -use Throwable; - -/** - * Set of static methods useful for CLI request handling. - * - * Portions of this code were initially from the FuelPHP Framework, - * version 1.7.x, and used here under the MIT license they were - * originally made available under. Reference: http://fuelphp.com - * - * Some of the code in this class is Windows-specific, and not - * possible to test using travis-ci. It has been phpunit-annotated - * to prevent messing up code coverage. - * - * Some of the methods require keyboard input, and are not unit-testable - * as a result: input() and prompt(). - * validate() is internal, and not testable if prompt() isn't. - * The wait() method is mostly testable, as long as you don't give it - * an argument of "0". - * These have been flagged to ignore for code coverage purposes. - * - * @see \CodeIgniter\CLI\CLITest - */ -class CLI -{ - /** - * Is the readline library on the system? - * - * @var bool - * - * @deprecated 4.4.2 Should be protected. - * @TODO Fix to camelCase in the next major version. - */ - public static $readline_support = false; - - /** - * The message displayed at prompts. - * - * @var string - * - * @deprecated 4.4.2 Should be protected. - * @TODO Fix to camelCase in the next major version. - */ - public static $wait_msg = 'Press any key to continue...'; - - /** - * Has the class already been initialized? - * - * @var bool - */ - protected static $initialized = false; - - /** - * Foreground color list - * - * @var array<string, string> - * - * @TODO Fix to camelCase in the next major version. - */ - protected static $foreground_colors = [ - 'black' => '0;30', - 'dark_gray' => '1;30', - 'blue' => '0;34', - 'dark_blue' => '0;34', - 'light_blue' => '1;34', - 'green' => '0;32', - 'light_green' => '1;32', - 'cyan' => '0;36', - 'light_cyan' => '1;36', - 'red' => '0;31', - 'light_red' => '1;31', - 'purple' => '0;35', - 'light_purple' => '1;35', - 'yellow' => '0;33', - 'light_yellow' => '1;33', - 'light_gray' => '0;37', - 'white' => '1;37', - ]; - - /** - * Background color list - * - * @var array<string, string> - * - * @TODO Fix to camelCase in the next major version. - */ - protected static $background_colors = [ - 'black' => '40', - 'red' => '41', - 'green' => '42', - 'yellow' => '43', - 'blue' => '44', - 'magenta' => '45', - 'cyan' => '46', - 'light_gray' => '47', - ]; - - /** - * List of array segments. - * - * @var array - */ - protected static $segments = []; - - /** - * @var array - */ - protected static $options = []; - - /** - * Helps track internally whether the last - * output was a "write" or a "print" to - * keep the output clean and as expected. - * - * @var string|null - */ - protected static $lastWrite; - - /** - * Height of the CLI window - * - * @var int|null - */ - protected static $height; - - /** - * Width of the CLI window - * - * @var int|null - */ - protected static $width; - - /** - * Whether the current stream supports colored output. - * - * @var bool - */ - protected static $isColored = false; - - /** - * Static "constructor". - * - * @return void - */ - public static function init() - { - if (is_cli()) { - // Readline is an extension for PHP that makes interactivity with PHP - // much more bash-like. - // http://www.php.net/manual/en/readline.installation.php - static::$readline_support = extension_loaded('readline'); - - // clear segments & options to keep testing clean - static::$segments = []; - static::$options = []; - - // Check our stream resource for color support - static::$isColored = static::hasColorSupport(STDOUT); - - static::parseCommandLine(); - - static::$initialized = true; - } elseif (! defined('STDOUT')) { - // If the command is being called from a controller - // we need to define STDOUT ourselves - // For "! defined('STDOUT')" see: https://github.com/codeigniter4/CodeIgniter4/issues/7047 - define('STDOUT', 'php://output'); // @codeCoverageIgnore - } - } - - /** - * Get input from the shell, using readline or the standard STDIN - * - * Named options must be in the following formats: - * php index.php user -v --v -name=John --name=John - * - * @param string|null $prefix You may specify a string with which to prompt the user. - */ - public static function input(?string $prefix = null): string - { - // readline() can't be tested. - if (static::$readline_support && ENVIRONMENT !== 'testing') { - return readline($prefix); // @codeCoverageIgnore - } - - echo $prefix; - - return fgets(fopen('php://stdin', 'rb')); - } - - /** - * Asks the user for input. - * - * Usage: - * - * // Takes any input - * $color = CLI::prompt('What is your favorite color?'); - * - * // Takes any input, but offers default - * $color = CLI::prompt('What is your favourite color?', 'white'); - * - * // Will validate options with the in_list rule and accept only if one of the list - * $color = CLI::prompt('What is your favourite color?', array('red','blue')); - * - * // Do not provide options but requires a valid email - * $email = CLI::prompt('What is your email?', null, 'required|valid_email'); - * - * @param string $field Output "field" question - * @param array|string $options String to a default value, array to a list of options (the first option will be the default value) - * @param array|string|null $validation Validation rules - * - * @return string The user input - * - * @codeCoverageIgnore - */ - public static function prompt(string $field, $options = null, $validation = null): string - { - $extraOutput = ''; - $default = ''; - - if ($validation && ! is_array($validation) && ! is_string($validation)) { - throw new InvalidArgumentException('$rules can only be of type string|array'); - } - - if (! is_array($validation)) { - $validation = $validation ? explode('|', $validation) : []; - } - - if (is_string($options)) { - $extraOutput = ' [' . static::color($options, 'green') . ']'; - $default = $options; - } - - if (is_array($options) && $options) { - $opts = $options; - $extraOutputDefault = static::color($opts[0], 'green'); - - unset($opts[0]); - - if ($opts === []) { - $extraOutput = $extraOutputDefault; - } else { - $extraOutput = '[' . $extraOutputDefault . ', ' . implode(', ', $opts) . ']'; - $validation[] = 'in_list[' . implode(', ', $options) . ']'; - } - - $default = $options[0]; - } - - static::fwrite(STDOUT, $field . (trim($field) ? ' ' : '') . $extraOutput . ': '); - - // Read the input from keyboard. - $input = trim(static::input()) ?: $default; - - if ($validation !== []) { - while (! static::validate('"' . trim($field) . '"', $input, $validation)) { - $input = static::prompt($field, $options, $validation); - } - } - - return $input; - } - - /** - * prompt(), but based on the option's key - * - * @param array|string $text Output "field" text or an one or two value array where the first value is the text before listing the options - * and the second value the text before asking to select one option. Provide empty string to omit - * @param array $options A list of options (array(key => description)), the first option will be the default value - * @param array|string|null $validation Validation rules - * - * @return string The selected key of $options - * - * @codeCoverageIgnore - */ - public static function promptByKey($text, array $options, $validation = null): string - { - if (is_string($text)) { - $text = [$text]; - } elseif (! is_array($text)) { - throw new InvalidArgumentException('$text can only be of type string|array'); - } - - CLI::isZeroOptions($options); - - if ($line = array_shift($text)) { - CLI::write($line); - } - - CLI::printKeysAndValues($options); - - return static::prompt(PHP_EOL . array_shift($text), array_keys($options), $validation); - } - - /** - * This method is the same as promptByKey(), but this method supports multiple keys, separated by commas. - * - * @param string $text Output "field" text or an one or two value array where the first value is the text before listing the options - * and the second value the text before asking to select one option. Provide empty string to omit - * @param array $options A list of options (array(key => description)), the first option will be the default value - * - * @return array The selected key(s) and value(s) of $options - */ - public static function promptByMultipleKeys(string $text, array $options): array - { - CLI::isZeroOptions($options); - - $extraOutputDefault = static::color('0', 'green'); - $opts = $options; - unset($opts[0]); - - if ($opts === []) { - $extraOutput = $extraOutputDefault; - } else { - $optsKey = []; - - foreach (array_keys($opts) as $key) { - $optsKey[] = $key; - } - $extraOutput = '[' . $extraOutputDefault . ', ' . implode(', ', $optsKey) . ']'; - $extraOutput = 'You can specify multiple values separated by commas.' . PHP_EOL . $extraOutput; - } - - CLI::write($text); - CLI::printKeysAndValues($options); - CLI::newLine(); - $input = static::prompt($extraOutput) ?: 0; // 0 is default - - // validation - while (true) { - $pattern = preg_match_all('/^\d+(,\d+)*$/', trim($input)); - - // separate input by comma and convert all to an int[] - $inputToArray = array_map(static fn ($value) => (int) $value, explode(',', $input)); - // find max from key of $options - $maxOptions = array_key_last($options); - // find max from input - $maxInput = max($inputToArray); - - // return the prompt again if $input contain(s) non-numeric charachter, except a comma. - // And if max from $options less than max from input - // it is mean user tried to access null value in $options - if (! $pattern || $maxOptions < $maxInput) { - static::error('Please select correctly.'); - CLI::newLine(); - $input = static::prompt($extraOutput) ?: 0; - } else { - break; - } - } - - $input = []; - - foreach ($options as $key => $description) { - foreach ($inputToArray as $inputKey) { - if ($key === $inputKey) { - $input[$key] = $description; - } - } - } - - return $input; - } - - // -------------------------------------------------------------------- - // Utility for promptBy... - // -------------------------------------------------------------------- - - /** - * Validation for $options in promptByKey() and promptByMultipleKeys(). Return an error if $options is an empty array. - */ - private static function isZeroOptions(array $options): void - { - if (! $options) { - throw new InvalidArgumentException('No options to select from were provided'); - } - } - - /** - * Print each key and value one by one - */ - private static function printKeysAndValues(array $options): void - { - // +2 for the square brackets around the key - $keyMaxLength = max(array_map('mb_strwidth', array_keys($options))) + 2; - - foreach ($options as $key => $description) { - $name = str_pad(' [' . $key . '] ', $keyMaxLength + 4, ' '); - CLI::write(CLI::color($name, 'green') . CLI::wrap($description, 125, $keyMaxLength + 4)); - } - } - - // -------------------------------------------------------------------- - // End Utility for promptBy... - // -------------------------------------------------------------------- - - /** - * Validate one prompt "field" at a time - * - * @param string $field Prompt "field" output - * @param string $value Input value - * @param array|string $rules Validation rules - * - * @codeCoverageIgnore - */ - protected static function validate(string $field, string $value, $rules): bool - { - $label = $field; - $field = 'temp'; - $validation = Services::validation(null, false); - $validation->setRules([ - $field => [ - 'label' => $label, - 'rules' => $rules, - ], - ]); - $validation->run([$field => $value]); - - if ($validation->hasError($field)) { - static::error($validation->getError($field)); - - return false; - } - - return true; - } - - /** - * Outputs a string to the CLI without any surrounding newlines. - * Useful for showing repeating elements on a single line. - * - * @return void - */ - public static function print(string $text = '', ?string $foreground = null, ?string $background = null) - { - if ($foreground || $background) { - $text = static::color($text, $foreground, $background); - } - - static::$lastWrite = null; - - static::fwrite(STDOUT, $text); - } - - /** - * Outputs a string to the cli on its own line. - * - * @return void - */ - public static function write(string $text = '', ?string $foreground = null, ?string $background = null) - { - if ($foreground || $background) { - $text = static::color($text, $foreground, $background); - } - - if (static::$lastWrite !== 'write') { - $text = PHP_EOL . $text; - static::$lastWrite = 'write'; - } - - static::fwrite(STDOUT, $text . PHP_EOL); - } - - /** - * Outputs an error to the CLI using STDERR instead of STDOUT - * - * @return void - */ - public static function error(string $text, string $foreground = 'light_red', ?string $background = null) - { - // Check color support for STDERR - $stdout = static::$isColored; - static::$isColored = static::hasColorSupport(STDERR); - - if ($foreground || $background) { - $text = static::color($text, $foreground, $background); - } - - static::fwrite(STDERR, $text . PHP_EOL); - - // return STDOUT color support - static::$isColored = $stdout; - } - - /** - * Beeps a certain number of times. - * - * @param int $num The number of times to beep - * - * @return void - */ - public static function beep(int $num = 1) - { - echo str_repeat("\x07", $num); - } - - /** - * Waits a certain number of seconds, optionally showing a wait message and - * waiting for a key press. - * - * @param int $seconds Number of seconds - * @param bool $countdown Show a countdown or not - * - * @return void - */ - public static function wait(int $seconds, bool $countdown = false) - { - if ($countdown === true) { - $time = $seconds; - - while ($time > 0) { - static::fwrite(STDOUT, $time . '... '); - sleep(1); - $time--; - } - - static::write(); - } elseif ($seconds > 0) { - sleep($seconds); - } else { - // this chunk cannot be tested because of keyboard input - // @codeCoverageIgnoreStart - static::write(static::$wait_msg); - static::input(); - // @codeCoverageIgnoreEnd - } - } - - /** - * if operating system === windows - * - * @deprecated 4.3.0 Use `is_windows()` instead - */ - public static function isWindows(): bool - { - return is_windows(); - } - - /** - * Enter a number of empty lines - * - * @return void - */ - public static function newLine(int $num = 1) - { - // Do it once or more, write with empty string gives us a new line - for ($i = 0; $i < $num; $i++) { - static::write(); - } - } - - /** - * Clears the screen of output - * - * @codeCoverageIgnore - * - * @return void - */ - public static function clearScreen() - { - // Unix systems, and Windows with VT100 Terminal support (i.e. Win10) - // can handle CSI sequences. For lower than Win10 we just shove in 40 new lines. - is_windows() && ! static::streamSupports('sapi_windows_vt100_support', STDOUT) - ? static::newLine(40) - : static::fwrite(STDOUT, "\033[H\033[2J"); - } - - /** - * Returns the given text with the correct color codes for a foreground and - * optionally a background color. - * - * @param string $text The text to color - * @param string $foreground The foreground color - * @param string|null $background The background color - * @param string|null $format Other formatting to apply. Currently only 'underline' is understood - * - * @return string The color coded string - */ - public static function color(string $text, string $foreground, ?string $background = null, ?string $format = null): string - { - if (! static::$isColored || $text === '') { - return $text; - } - - if (! array_key_exists($foreground, static::$foreground_colors)) { - throw CLIException::forInvalidColor('foreground', $foreground); - } - - if ($background !== null && ! array_key_exists($background, static::$background_colors)) { - throw CLIException::forInvalidColor('background', $background); - } - - $newText = ''; - - // Detect if color method was already in use with this text - if (strpos($text, "\033[0m") !== false) { - $pattern = '/\\033\\[0;.+?\\033\\[0m/u'; - - preg_match_all($pattern, $text, $matches); - $coloredStrings = $matches[0]; - - // No colored string found. Invalid strings with no `\033[0;??`. - if ($coloredStrings === []) { - return $newText . self::getColoredText($text, $foreground, $background, $format); - } - - $nonColoredText = preg_replace( - $pattern, - '<<__colored_string__>>', - $text - ); - $nonColoredChunks = preg_split( - '/<<__colored_string__>>/u', - $nonColoredText - ); - - foreach ($nonColoredChunks as $i => $chunk) { - if ($chunk !== '') { - $newText .= self::getColoredText($chunk, $foreground, $background, $format); - } - - if (isset($coloredStrings[$i])) { - $newText .= $coloredStrings[$i]; - } - } - } else { - $newText .= self::getColoredText($text, $foreground, $background, $format); - } - - return $newText; - } - - private static function getColoredText(string $text, string $foreground, ?string $background, ?string $format): string - { - $string = "\033[" . static::$foreground_colors[$foreground] . 'm'; - - if ($background !== null) { - $string .= "\033[" . static::$background_colors[$background] . 'm'; - } - - if ($format === 'underline') { - $string .= "\033[4m"; - } - - return $string . $text . "\033[0m"; - } - - /** - * Get the number of characters in string having encoded characters - * and ignores styles set by the color() function - */ - public static function strlen(?string $string): int - { - if ($string === null) { - return 0; - } - - foreach (static::$foreground_colors as $color) { - $string = strtr($string, ["\033[" . $color . 'm' => '']); - } - - foreach (static::$background_colors as $color) { - $string = strtr($string, ["\033[" . $color . 'm' => '']); - } - - $string = strtr($string, ["\033[4m" => '', "\033[0m" => '']); - - return mb_strwidth($string); - } - - /** - * Checks whether the current stream resource supports or - * refers to a valid terminal type device. - * - * @param resource $resource - */ - public static function streamSupports(string $function, $resource): bool - { - if (ENVIRONMENT === 'testing') { - // In the current setup of the tests we cannot fully check - // if the stream supports the function since we are using - // filtered streams. - return function_exists($function); - } - - return function_exists($function) && @$function($resource); // @codeCoverageIgnore - } - - /** - * Returns true if the stream resource supports colors. - * - * This is tricky on Windows, because Cygwin, Msys2 etc. emulate pseudo - * terminals via named pipes, so we can only check the environment. - * - * Reference: https://github.com/composer/xdebug-handler/blob/master/src/Process.php - * - * @param resource $resource - */ - public static function hasColorSupport($resource): bool - { - // Follow https://no-color.org/ - if (isset($_SERVER['NO_COLOR']) || getenv('NO_COLOR') !== false) { - return false; - } - - if (getenv('TERM_PROGRAM') === 'Hyper') { - return true; - } - - if (is_windows()) { - // @codeCoverageIgnoreStart - return static::streamSupports('sapi_windows_vt100_support', $resource) - || isset($_SERVER['ANSICON']) - || getenv('ANSICON') !== false - || getenv('ConEmuANSI') === 'ON' - || getenv('TERM') === 'xterm'; - // @codeCoverageIgnoreEnd - } - - return static::streamSupports('stream_isatty', $resource); - } - - /** - * Attempts to determine the width of the viewable CLI window. - */ - public static function getWidth(int $default = 80): int - { - if (static::$width === null) { - static::generateDimensions(); - } - - return static::$width ?: $default; - } - - /** - * Attempts to determine the height of the viewable CLI window. - */ - public static function getHeight(int $default = 32): int - { - if (static::$height === null) { - static::generateDimensions(); - } - - return static::$height ?: $default; - } - - /** - * Populates the CLI's dimensions. - * - * @codeCoverageIgnore - * - * @return void - */ - public static function generateDimensions() - { - try { - if (is_windows()) { - // Shells such as `Cygwin` and `Git bash` returns incorrect values - // when executing `mode CON`, so we use `tput` instead - if (getenv('TERM') || (($shell = getenv('SHELL')) && preg_match('/(?:bash|zsh)(?:\.exe)?$/', $shell))) { - static::$height = (int) exec('tput lines'); - static::$width = (int) exec('tput cols'); - } else { - $return = -1; - $output = []; - exec('mode CON', $output, $return); - - // Look for the next lines ending in ": <number>" - // Searching for "Columns:" or "Lines:" will fail on non-English locales - if ($return === 0 && $output && preg_match('/:\s*(\d+)\n[^:]+:\s*(\d+)\n/', implode("\n", $output), $matches)) { - static::$height = (int) $matches[1]; - static::$width = (int) $matches[2]; - } - } - } elseif (($size = exec('stty size')) && preg_match('/(\d+)\s+(\d+)/', $size, $matches)) { - static::$height = (int) $matches[1]; - static::$width = (int) $matches[2]; - } else { - static::$height = (int) exec('tput lines'); - static::$width = (int) exec('tput cols'); - } - } catch (Throwable $e) { - // Reset the dimensions so that the default values will be returned later. - // Then let the developer know of the error. - static::$height = null; - static::$width = null; - log_message('error', (string) $e); - } - } - - /** - * Displays a progress bar on the CLI. You must call it repeatedly - * to update it. Set $thisStep = false to erase the progress bar. - * - * @param bool|int $thisStep - * - * @return void - */ - public static function showProgress($thisStep = 1, int $totalSteps = 10) - { - static $inProgress = false; - - // restore cursor position when progress is continuing. - if ($inProgress !== false && $inProgress <= $thisStep) { - static::fwrite(STDOUT, "\033[1A"); - } - $inProgress = $thisStep; - - if ($thisStep !== false) { - // Don't allow div by zero or negative numbers.... - $thisStep = abs($thisStep); - $totalSteps = $totalSteps < 1 ? 1 : $totalSteps; - - $percent = (int) (($thisStep / $totalSteps) * 100); - $step = (int) round($percent / 10); - - // Write the progress bar - static::fwrite(STDOUT, "[\033[32m" . str_repeat('#', $step) . str_repeat('.', 10 - $step) . "\033[0m]"); - // Textual representation... - static::fwrite(STDOUT, sprintf(' %3d%% Complete', $percent) . PHP_EOL); - } else { - static::fwrite(STDOUT, "\007"); - } - } - - /** - * Takes a string and writes it to the command line, wrapping to a maximum - * width. If no maximum width is specified, will wrap to the window's max - * width. - * - * If an int is passed into $pad_left, then all strings after the first - * will pad with that many spaces to the left. Useful when printing - * short descriptions that need to start on an existing line. - */ - public static function wrap(?string $string = null, int $max = 0, int $padLeft = 0): string - { - if ($string === null || $string === '') { - return ''; - } - - if ($max === 0) { - $max = self::getWidth(); - } - - if (self::getWidth() < $max) { - $max = self::getWidth(); - } - - $max -= $padLeft; - - $lines = wordwrap($string, $max, PHP_EOL); - - if ($padLeft > 0) { - $lines = explode(PHP_EOL, $lines); - - $first = true; - - array_walk($lines, static function (&$line) use ($padLeft, &$first) { - if (! $first) { - $line = str_repeat(' ', $padLeft) . $line; - } else { - $first = false; - } - }); - - $lines = implode(PHP_EOL, $lines); - } - - return $lines; - } - - // -------------------------------------------------------------------- - // Command-Line 'URI' support - // -------------------------------------------------------------------- - - /** - * Parses the command line it was called from and collects all - * options and valid segments. - * - * @return void - */ - protected static function parseCommandLine() - { - $args = $_SERVER['argv'] ?? []; - array_shift($args); // scrap invoking program - $optionValue = false; - - foreach ($args as $i => $arg) { - // If there's no "-" at the beginning, then - // this is probably an argument or an option value - if (mb_strpos($arg, '-') !== 0) { - if ($optionValue) { - // We have already included this in the previous - // iteration, so reset this flag - $optionValue = false; - } else { - // Yup, it's a segment - static::$segments[] = $arg; - } - - continue; - } - - $arg = ltrim($arg, '-'); - $value = null; - - if (isset($args[$i + 1]) && mb_strpos($args[$i + 1], '-') !== 0) { - $value = $args[$i + 1]; - $optionValue = true; - } - - static::$options[$arg] = $value; - } - } - - /** - * Returns the command line string portions of the arguments, minus - * any options, as a string. This is used to pass along to the main - * CodeIgniter application. - */ - public static function getURI(): string - { - return implode('/', static::$segments); - } - - /** - * Returns an individual segment. - * - * This ignores any options that might have been dispersed between - * valid segments in the command: - * - * // segment(3) is 'three', not '-f' or 'anOption' - * > php spark one two -f anOption three - * - * **IMPORTANT:** The index here is one-based instead of zero-based. - * - * @return string|null - */ - public static function getSegment(int $index) - { - return static::$segments[$index - 1] ?? null; - } - - /** - * Returns the raw array of segments found. - */ - public static function getSegments(): array - { - return static::$segments; - } - - /** - * Gets a single command-line option. Returns TRUE if the option - * exists, but doesn't have a value, and is simply acting as a flag. - * - * @return string|true|null - */ - public static function getOption(string $name) - { - if (! array_key_exists($name, static::$options)) { - return null; - } - - // If the option didn't have a value, simply return TRUE - // so they know it was set, otherwise return the actual value. - $val = static::$options[$name] ?? true; - - return $val; - } - - /** - * Returns the raw array of options found. - */ - public static function getOptions(): array - { - return static::$options; - } - - /** - * Returns the options as a string, suitable for passing along on - * the CLI to other commands. - * - * @param bool $useLongOpts Use '--' for long options? - * @param bool $trim Trim final string output? - */ - public static function getOptionString(bool $useLongOpts = false, bool $trim = false): string - { - if (static::$options === []) { - return ''; - } - - $out = ''; - - foreach (static::$options as $name => $value) { - if ($useLongOpts && mb_strlen($name) > 1) { - $out .= "--{$name} "; - } else { - $out .= "-{$name} "; - } - - if ($value === null) { - continue; - } - - if (mb_strpos($value, ' ') !== false) { - $out .= "\"{$value}\" "; - } elseif ($value !== null) { - $out .= "{$value} "; - } - } - - return $trim ? trim($out) : $out; - } - - /** - * Returns a well formatted table - * - * @param array $tbody List of rows - * @param array $thead List of columns - * - * @return void - */ - public static function table(array $tbody, array $thead = []) - { - // All the rows in the table will be here until the end - $tableRows = []; - - // We need only indexes and not keys - if ($thead !== []) { - $tableRows[] = array_values($thead); - } - - foreach ($tbody as $tr) { - $tableRows[] = array_values($tr); - } - - // Yes, it really is necessary to know this count - $totalRows = count($tableRows); - - // Store all columns lengths - // $all_cols_lengths[row][column] = length - $allColsLengths = []; - - // Store maximum lengths by column - // $max_cols_lengths[column] = length - $maxColsLengths = []; - - // Read row by row and define the longest columns - for ($row = 0; $row < $totalRows; $row++) { - $column = 0; // Current column index - - foreach ($tableRows[$row] as $col) { - // Sets the size of this column in the current row - $allColsLengths[$row][$column] = static::strlen($col); - - // If the current column does not have a value among the larger ones - // or the value of this is greater than the existing one - // then, now, this assumes the maximum length - if (! isset($maxColsLengths[$column]) || $allColsLengths[$row][$column] > $maxColsLengths[$column]) { - $maxColsLengths[$column] = $allColsLengths[$row][$column]; - } - - // We can go check the size of the next column... - $column++; - } - } - - // Read row by row and add spaces at the end of the columns - // to match the exact column length - for ($row = 0; $row < $totalRows; $row++) { - $column = 0; - - foreach ($tableRows[$row] as $col) { - $diff = $maxColsLengths[$column] - static::strlen($col); - - if ($diff !== 0) { - $tableRows[$row][$column] .= str_repeat(' ', $diff); - } - - $column++; - } - } - - $table = ''; - $cols = ''; - - // Joins columns and append the well formatted rows to the table - for ($row = 0; $row < $totalRows; $row++) { - // Set the table border-top - if ($row === 0) { - $cols = '+'; - - foreach ($tableRows[$row] as $col) { - $cols .= str_repeat('-', static::strlen($col) + 2) . '+'; - } - $table .= $cols . PHP_EOL; - } - - // Set the columns borders - $table .= '| ' . implode(' | ', $tableRows[$row]) . ' |' . PHP_EOL; - - // Set the thead and table borders-bottom - if (($row === 0 && $thead !== []) || ($row + 1 === $totalRows)) { - $table .= $cols . PHP_EOL; - } - } - - static::write($table); - } - - /** - * While the library is intended for use on CLI commands, - * commands can be called from controllers and elsewhere - * so we need a way to allow them to still work. - * - * For now, just echo the content, but look into a better - * solution down the road. - * - * @param resource $handle - * - * @return void - */ - protected static function fwrite($handle, string $string) - { - if (! is_cli()) { - // @codeCoverageIgnoreStart - echo $string; - - return; - // @codeCoverageIgnoreEnd - } - - fwrite($handle, $string); - } -} - -// Ensure the class is initialized. Done outside of code coverage -CLI::init(); // @codeCoverageIgnore diff --git a/system4.4.6/CLI/Commands.php b/system4.4.6/CLI/Commands.php deleted file mode 100644 index 1de0df27..00000000 --- a/system4.4.6/CLI/Commands.php +++ /dev/null @@ -1,186 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\CLI; - -use CodeIgniter\Autoloader\FileLocator; -use CodeIgniter\Log\Logger; -use ReflectionClass; -use ReflectionException; - -/** - * Core functionality for running, listing, etc commands. - */ -class Commands -{ - /** - * The found commands. - * - * @var array - */ - protected $commands = []; - - /** - * Logger instance. - * - * @var Logger - */ - protected $logger; - - /** - * Constructor - * - * @param Logger|null $logger - */ - public function __construct($logger = null) - { - $this->logger = $logger ?? service('logger'); - $this->discoverCommands(); - } - - /** - * Runs a command given - * - * @return int|void - */ - public function run(string $command, array $params) - { - if (! $this->verifyCommand($command, $this->commands)) { - return; - } - - // The file would have already been loaded during the - // createCommandList function... - $className = $this->commands[$command]['class']; - $class = new $className($this->logger, $this); - - return $class->run($params); - } - - /** - * Provide access to the list of commands. - * - * @return array - */ - public function getCommands() - { - return $this->commands; - } - - /** - * Discovers all commands in the framework and within user code, - * and collects instances of them to work with. - * - * @return void - */ - public function discoverCommands() - { - if ($this->commands !== []) { - return; - } - - /** @var FileLocator $locator */ - $locator = service('locator'); - $files = $locator->listFiles('Commands/'); - - // If no matching command files were found, bail - // This should never happen in unit testing. - if ($files === []) { - return; // @codeCoverageIgnore - } - - // Loop over each file checking to see if a command with that - // alias exists in the class. - foreach ($files as $file) { - $className = $locator->getClassname($file); - - if ($className === '' || ! class_exists($className)) { - continue; - } - - try { - $class = new ReflectionClass($className); - - if (! $class->isInstantiable() || ! $class->isSubclassOf(BaseCommand::class)) { - continue; - } - - /** @var BaseCommand $class */ - $class = new $className($this->logger, $this); - - if (isset($class->group)) { - $this->commands[$class->name] = [ - 'class' => $className, - 'file' => $file, - 'group' => $class->group, - 'description' => $class->description, - ]; - } - - unset($class); - } catch (ReflectionException $e) { - $this->logger->error($e->getMessage()); - } - } - - asort($this->commands); - } - - /** - * Verifies if the command being sought is found - * in the commands list. - */ - public function verifyCommand(string $command, array $commands): bool - { - if (isset($commands[$command])) { - return true; - } - - $message = lang('CLI.commandNotFound', [$command]); - - $alternatives = $this->getCommandAlternatives($command, $commands); - if ($alternatives !== []) { - if (count($alternatives) === 1) { - $message .= "\n\n" . lang('CLI.altCommandSingular') . "\n "; - } else { - $message .= "\n\n" . lang('CLI.altCommandPlural') . "\n "; - } - - $message .= implode("\n ", $alternatives); - } - - CLI::error($message); - CLI::newLine(); - - return false; - } - - /** - * Finds alternative of `$name` among collection - * of commands. - */ - protected function getCommandAlternatives(string $name, array $collection): array - { - $alternatives = []; - - foreach (array_keys($collection) as $commandName) { - $lev = levenshtein($name, $commandName); - - if ($lev <= strlen($commandName) / 3 || strpos($commandName, $name) !== false) { - $alternatives[$commandName] = $lev; - } - } - - ksort($alternatives, SORT_NATURAL | SORT_FLAG_CASE); - - return array_keys($alternatives); - } -} diff --git a/system4.4.6/CLI/Console.php b/system4.4.6/CLI/Console.php deleted file mode 100644 index adcf9aae..00000000 --- a/system4.4.6/CLI/Console.php +++ /dev/null @@ -1,88 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\CLI; - -use CodeIgniter\CodeIgniter; -use Config\App; -use Config\Services; -use Exception; - -/** - * Console - * - * @see \CodeIgniter\CLI\ConsoleTest - */ -class Console -{ - /** - * Runs the current command discovered on the CLI. - * - * @return int|void - * - * @throws Exception - */ - public function run() - { - // Create CLIRequest - $appConfig = config(App::class); - Services::createRequest($appConfig, true); - // Load Routes - Services::routes()->loadRoutes(); - - $runner = Services::commands(); - $params = array_merge(CLI::getSegments(), CLI::getOptions()); - $params = $this->parseParamsForHelpOption($params); - $command = array_shift($params) ?? 'list'; - - return $runner->run($command, $params); - } - - /** - * Displays basic information about the Console. - * - * @return void - */ - public function showHeader(bool $suppress = false) - { - if ($suppress) { - return; - } - - CLI::write(sprintf( - 'CodeIgniter v%s Command Line Tool - Server Time: %s UTC%s', - CodeIgniter::CI_VERSION, - date('Y-m-d H:i:s'), - date('P') - ), 'green'); - CLI::newLine(); - } - - /** - * Introspects the `$params` passed for presence of the - * `--help` option. - * - * If present, it will be found as `['help' => null]`. - * We'll remove that as an option from `$params` and - * unshift it as argument instead. - */ - private function parseParamsForHelpOption(array $params): array - { - if (array_key_exists('help', $params)) { - unset($params['help']); - - $params = $params === [] ? ['list'] : $params; - array_unshift($params, 'help'); - } - - return $params; - } -} diff --git a/system4.4.6/CLI/Exceptions/CLIException.php b/system4.4.6/CLI/Exceptions/CLIException.php deleted file mode 100644 index 4e07cd64..00000000 --- a/system4.4.6/CLI/Exceptions/CLIException.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\CLI\Exceptions; - -use CodeIgniter\Exceptions\DebugTraceableTrait; -use RuntimeException; - -/** - * CLIException - */ -class CLIException extends RuntimeException -{ - use DebugTraceableTrait; - - /** - * Thrown when `$color` specified for `$type` is not within the - * allowed list of colors. - * - * @return CLIException - */ - public static function forInvalidColor(string $type, string $color) - { - return new static(lang('CLI.invalidColor', [$type, $color])); - } -} diff --git a/system4.4.6/CLI/GeneratorTrait.php b/system4.4.6/CLI/GeneratorTrait.php deleted file mode 100644 index 7b606638..00000000 --- a/system4.4.6/CLI/GeneratorTrait.php +++ /dev/null @@ -1,388 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\CLI; - -use Config\Generators; -use Config\Services; -use Throwable; - -/** - * GeneratorTrait contains a collection of methods - * to build the commands that generates a file. - */ -trait GeneratorTrait -{ - /** - * Component Name - * - * @var string - */ - protected $component; - - /** - * File directory - * - * @var string - */ - protected $directory; - - /** - * View template name - * - * @var string - */ - protected $template; - - /** - * Language string key for required class names. - * - * @var string - */ - protected $classNameLang = ''; - - /** - * Whether to require class name. - * - * @internal - * - * @var bool - */ - private $hasClassName = true; - - /** - * Whether to sort class imports. - * - * @internal - * - * @var bool - */ - private $sortImports = true; - - /** - * Whether the `--suffix` option has any effect. - * - * @internal - * - * @var bool - */ - private $enabledSuffixing = true; - - /** - * The params array for easy access by other methods. - * - * @internal - * - * @var array - */ - private $params = []; - - /** - * Execute the command. - * - * @deprecated use generateClass() instead - */ - protected function execute(array $params): void - { - $this->generateClass($params); - } - - /** - * Generates a class file from an existing template. - */ - protected function generateClass(array $params) - { - $this->params = $params; - - // Get the fully qualified class name from the input. - $class = $this->qualifyClassName(); - - // Get the file path from class name. - $target = $this->buildPath($class); - - // Check if path is empty. - if (empty($target)) { - return; - } - - $this->generateFile($target, $this->buildContent($class)); - } - - /** - * Generate a view file from an existing template. - */ - protected function generateView(string $view, array $params) - { - $this->params = $params; - - $target = $this->buildPath($view); - - // Check if path is empty. - if (empty($target)) { - return; - } - - $this->generateFile($target, $this->buildContent($view)); - } - - /** - * Handles writing the file to disk, and all of the safety checks around that. - */ - private function generateFile(string $target, string $content): void - { - if ($this->getOption('namespace') === 'CodeIgniter') { - // @codeCoverageIgnoreStart - CLI::write(lang('CLI.generator.usingCINamespace'), 'yellow'); - CLI::newLine(); - - if (CLI::prompt('Are you sure you want to continue?', ['y', 'n'], 'required') === 'n') { - CLI::newLine(); - CLI::write(lang('CLI.generator.cancelOperation'), 'yellow'); - CLI::newLine(); - - return; - } - - CLI::newLine(); - // @codeCoverageIgnoreEnd - } - - $isFile = is_file($target); - - // Overwriting files unknowingly is a serious annoyance, So we'll check if - // we are duplicating things, If 'force' option is not supplied, we bail. - if (! $this->getOption('force') && $isFile) { - CLI::error(lang('CLI.generator.fileExist', [clean_path($target)]), 'light_gray', 'red'); - CLI::newLine(); - - return; - } - - // Check if the directory to save the file is existing. - $dir = dirname($target); - - if (! is_dir($dir)) { - mkdir($dir, 0755, true); - } - - helper('filesystem'); - - // Build the class based on the details we have, We'll be getting our file - // contents from the template, and then we'll do the necessary replacements. - if (! write_file($target, $content)) { - // @codeCoverageIgnoreStart - CLI::error(lang('CLI.generator.fileError', [clean_path($target)]), 'light_gray', 'red'); - CLI::newLine(); - - return; - // @codeCoverageIgnoreEnd - } - - if ($this->getOption('force') && $isFile) { - CLI::write(lang('CLI.generator.fileOverwrite', [clean_path($target)]), 'yellow'); - CLI::newLine(); - - return; - } - - CLI::write(lang('CLI.generator.fileCreate', [clean_path($target)]), 'green'); - CLI::newLine(); - } - - /** - * Prepare options and do the necessary replacements. - */ - protected function prepare(string $class): string - { - return $this->parseTemplate($class); - } - - /** - * Change file basename before saving. - * - * Useful for components where the file name has a date. - */ - protected function basename(string $filename): string - { - return basename($filename); - } - - /** - * Parses the class name and checks if it is already qualified. - */ - protected function qualifyClassName(): string - { - // Gets the class name from input. - $class = $this->params[0] ?? CLI::getSegment(2); - - if ($class === null && $this->hasClassName) { - // @codeCoverageIgnoreStart - $nameLang = $this->classNameLang ?: 'CLI.generator.className.default'; - $class = CLI::prompt(lang($nameLang), null, 'required'); - CLI::newLine(); - // @codeCoverageIgnoreEnd - } - - helper('inflector'); - - $component = singular($this->component); - - /** - * @see https://regex101.com/r/a5KNCR/2 - */ - $pattern = sprintf('/([a-z][a-z0-9_\/\\\\]+)(%s)$/i', $component); - - if (preg_match($pattern, $class, $matches) === 1) { - $class = $matches[1] . ucfirst($matches[2]); - } - - if ($this->enabledSuffixing && $this->getOption('suffix') && preg_match($pattern, $class) !== 1) { - $class .= ucfirst($component); - } - - // Trims input, normalize separators, and ensure that all paths are in Pascalcase. - $class = ltrim(implode('\\', array_map('pascalize', explode('\\', str_replace('/', '\\', trim($class))))), '\\/'); - - // Gets the namespace from input. Don't forget the ending backslash! - $namespace = trim(str_replace('/', '\\', $this->getOption('namespace') ?? APP_NAMESPACE), '\\') . '\\'; - - if (strncmp($class, $namespace, strlen($namespace)) === 0) { - return $class; // @codeCoverageIgnore - } - - return $namespace . $this->directory . '\\' . str_replace('/', '\\', $class); - } - - /** - * Gets the generator view as defined in the `Config\Generators::$views`, - * with fallback to `$template` when the defined view does not exist. - */ - protected function renderTemplate(array $data = []): string - { - try { - return view(config(Generators::class)->views[$this->name], $data, ['debug' => false]); - } catch (Throwable $e) { - log_message('error', (string) $e); - - return view("CodeIgniter\\Commands\\Generators\\Views\\{$this->template}", $data, ['debug' => false]); - } - } - - /** - * Performs pseudo-variables contained within view file. - */ - protected function parseTemplate(string $class, array $search = [], array $replace = [], array $data = []): string - { - // Retrieves the namespace part from the fully qualified class name. - $namespace = trim(implode('\\', array_slice(explode('\\', $class), 0, -1)), '\\'); - $search[] = '<@php'; - $search[] = '{namespace}'; - $search[] = '{class}'; - $replace[] = '<?php'; - $replace[] = $namespace; - $replace[] = str_replace($namespace . '\\', '', $class); - - return str_replace($search, $replace, $this->renderTemplate($data)); - } - - /** - * Builds the contents for class being generated, doing all - * the replacements necessary, and alphabetically sorts the - * imports for a given template. - */ - protected function buildContent(string $class): string - { - $template = $this->prepare($class); - - if ($this->sortImports && preg_match('/(?P<imports>(?:^use [^;]+;$\n?)+)/m', $template, $match)) { - $imports = explode("\n", trim($match['imports'])); - sort($imports); - - return str_replace(trim($match['imports']), implode("\n", $imports), $template); - } - - return $template; - } - - /** - * Builds the file path from the class name. - */ - protected function buildPath(string $class): string - { - $namespace = trim(str_replace('/', '\\', $this->getOption('namespace') ?? APP_NAMESPACE), '\\'); - - // Check if the namespace is actually defined and we are not just typing gibberish. - $base = Services::autoloader()->getNamespace($namespace); - - if (! $base = reset($base)) { - CLI::error(lang('CLI.namespaceNotDefined', [$namespace]), 'light_gray', 'red'); - CLI::newLine(); - - return ''; - } - - $base = realpath($base) ?: $base; - $file = $base . DIRECTORY_SEPARATOR . str_replace('\\', DIRECTORY_SEPARATOR, trim(str_replace($namespace . '\\', '', $class), '\\')) . '.php'; - - return implode(DIRECTORY_SEPARATOR, array_slice(explode(DIRECTORY_SEPARATOR, $file), 0, -1)) . DIRECTORY_SEPARATOR . $this->basename($file); - } - - /** - * Allows child generators to modify the internal `$hasClassName` flag. - * - * @return $this - */ - protected function setHasClassName(bool $hasClassName) - { - $this->hasClassName = $hasClassName; - - return $this; - } - - /** - * Allows child generators to modify the internal `$sortImports` flag. - * - * @return $this - */ - protected function setSortImports(bool $sortImports) - { - $this->sortImports = $sortImports; - - return $this; - } - - /** - * Allows child generators to modify the internal `$enabledSuffixing` flag. - * - * @return $this - */ - protected function setEnabledSuffixing(bool $enabledSuffixing) - { - $this->enabledSuffixing = $enabledSuffixing; - - return $this; - } - - /** - * Gets a single command-line option. Returns TRUE if the option exists, - * but doesn't have a value, and is simply acting as a flag. - * - * @return mixed - */ - protected function getOption(string $name) - { - if (! array_key_exists($name, $this->params)) { - return CLI::getOption($name); - } - - return $this->params[$name] ?? true; - } -} diff --git a/system4.4.6/Cache/CacheFactory.php b/system4.4.6/Cache/CacheFactory.php deleted file mode 100644 index 6402b002..00000000 --- a/system4.4.6/Cache/CacheFactory.php +++ /dev/null @@ -1,89 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Cache; - -use CodeIgniter\Cache\Exceptions\CacheException; -use CodeIgniter\Exceptions\CriticalError; -use CodeIgniter\Test\Mock\MockCache; -use Config\Cache; - -/** - * A factory for loading the desired - * - * @see \CodeIgniter\Cache\CacheFactoryTest - */ -class CacheFactory -{ - /** - * The class to use when mocking - * - * @var string - */ - public static $mockClass = MockCache::class; - - /** - * The service to inject the mock as - * - * @var string - */ - public static $mockServiceName = 'cache'; - - /** - * Attempts to create the desired cache handler, based upon the - * - * @param non-empty-string|null $handler - * @param non-empty-string|null $backup - * - * @return CacheInterface - */ - public static function getHandler(Cache $config, ?string $handler = null, ?string $backup = null) - { - if (! isset($config->validHandlers) || $config->validHandlers === []) { - throw CacheException::forInvalidHandlers(); - } - - if (! isset($config->handler) || ! isset($config->backupHandler)) { - throw CacheException::forNoBackup(); - } - - $handler ??= $config->handler; - $backup ??= $config->backupHandler; - - if (! array_key_exists($handler, $config->validHandlers) || ! array_key_exists($backup, $config->validHandlers)) { - throw CacheException::forHandlerNotFound(); - } - - $adapter = new $config->validHandlers[$handler]($config); - - if (! $adapter->isSupported()) { - $adapter = new $config->validHandlers[$backup]($config); - - if (! $adapter->isSupported()) { - // Fall back to the dummy adapter. - $adapter = new $config->validHandlers['dummy'](); - } - } - - // If $adapter->initialization throws a CriticalError exception, we will attempt to - // use the $backup handler, if that also fails, we resort to the dummy handler. - try { - $adapter->initialize(); - } catch (CriticalError $e) { - log_message('critical', $e . ' Resorting to using ' . $backup . ' handler.'); - - // get the next best cache handler (or dummy if the $backup also fails) - $adapter = self::getHandler($config, $backup, 'dummy'); - } - - return $adapter; - } -} diff --git a/system4.4.6/Cache/CacheInterface.php b/system4.4.6/Cache/CacheInterface.php deleted file mode 100644 index 23ea709d..00000000 --- a/system4.4.6/Cache/CacheInterface.php +++ /dev/null @@ -1,108 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Cache; - -/** - * Cache interface - */ -interface CacheInterface -{ - /** - * Takes care of any handler-specific setup that must be done. - * - * @return void - */ - public function initialize(); - - /** - * Attempts to fetch an item from the cache store. - * - * @param string $key Cache item name - * - * @return array|bool|float|int|object|string|null - */ - public function get(string $key); - - /** - * Saves an item to the cache store. - * - * @param string $key Cache item name - * @param array|bool|float|int|object|string|null $value The data to save - * @param int $ttl Time To Live, in seconds (default 60) - * - * @return bool Success or failure - */ - public function save(string $key, $value, int $ttl = 60); - - /** - * Deletes a specific item from the cache store. - * - * @param string $key Cache item name - * - * @return bool Success or failure - */ - public function delete(string $key); - - /** - * Performs atomic incrementation of a raw stored value. - * - * @param string $key Cache ID - * @param int $offset Step/value to increase by - * - * @return bool|int - */ - public function increment(string $key, int $offset = 1); - - /** - * Performs atomic decrementation of a raw stored value. - * - * @param string $key Cache ID - * @param int $offset Step/value to increase by - * - * @return bool|int - */ - public function decrement(string $key, int $offset = 1); - - /** - * Will delete all items in the entire cache. - * - * @return bool Success or failure - */ - public function clean(); - - /** - * Returns information on the entire cache. - * - * The information returned and the structure of the data - * varies depending on the handler. - * - * @return array|false|object|null - */ - public function getCacheInfo(); - - /** - * Returns detailed information about the specific item in the cache. - * - * @param string $key Cache item name. - * - * @return array|false|null - * Returns null if the item does not exist, otherwise array<string, mixed> - * with at least the 'expire' key for absolute epoch expiry (or null). - * Some handlers may return false when an item does not exist, which is deprecated. - */ - public function getMetaData(string $key); - - /** - * Determines if the driver is supported on this system. - */ - public function isSupported(): bool; -} diff --git a/system4.4.6/Cache/Exceptions/CacheException.php b/system4.4.6/Cache/Exceptions/CacheException.php deleted file mode 100644 index 3445590c..00000000 --- a/system4.4.6/Cache/Exceptions/CacheException.php +++ /dev/null @@ -1,64 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Cache\Exceptions; - -use CodeIgniter\Exceptions\DebugTraceableTrait; -use CodeIgniter\Exceptions\ExceptionInterface; -use RuntimeException; - -/** - * CacheException - */ -class CacheException extends RuntimeException implements ExceptionInterface -{ - use DebugTraceableTrait; - - /** - * Thrown when handler has no permission to write cache. - * - * @return CacheException - */ - public static function forUnableToWrite(string $path) - { - return new static(lang('Cache.unableToWrite', [$path])); - } - - /** - * Thrown when an unrecognized handler is used. - * - * @return CacheException - */ - public static function forInvalidHandlers() - { - return new static(lang('Cache.invalidHandlers')); - } - - /** - * Thrown when no backup handler is setup in config. - * - * @return CacheException - */ - public static function forNoBackup() - { - return new static(lang('Cache.noBackup')); - } - - /** - * Thrown when specified handler was not found. - * - * @return CacheException - */ - public static function forHandlerNotFound() - { - return new static(lang('Cache.handlerNotFound')); - } -} diff --git a/system4.4.6/Cache/Exceptions/ExceptionInterface.php b/system4.4.6/Cache/Exceptions/ExceptionInterface.php deleted file mode 100644 index 067e8aa2..00000000 --- a/system4.4.6/Cache/Exceptions/ExceptionInterface.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Cache\Exceptions; - -/** - * Provides a domain-level interface for broad capture - * of all framework-related exceptions. - * - * catch (\CodeIgniter\Cache\Exceptions\ExceptionInterface) { ... } - * - * @deprecated 4.1.2 - */ -interface ExceptionInterface -{ -} diff --git a/system4.4.6/Cache/FactoriesCache.php b/system4.4.6/Cache/FactoriesCache.php deleted file mode 100644 index d78d0b1b..00000000 --- a/system4.4.6/Cache/FactoriesCache.php +++ /dev/null @@ -1,65 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Cache; - -use CodeIgniter\Cache\FactoriesCache\FileVarExportHandler; -use CodeIgniter\Config\Factories; - -final class FactoriesCache -{ - /** - * @var CacheInterface|FileVarExportHandler - */ - private $cache; - - /** - * @param CacheInterface|FileVarExportHandler|null $cache - */ - public function __construct($cache = null) - { - $this->cache = $cache ?? new FileVarExportHandler(); - } - - public function save(string $component): void - { - if (! Factories::isUpdated($component)) { - return; - } - - $data = Factories::getComponentInstances($component); - - $this->cache->save($this->getCacheKey($component), $data, 3600 * 24); - } - - private function getCacheKey(string $component): string - { - return 'FactoriesCache_' . $component; - } - - public function load(string $component): bool - { - $key = $this->getCacheKey($component); - - if (! $data = $this->cache->get($key)) { - return false; - } - - Factories::setComponentInstances($component, $data); - - return true; - } - - public function delete(string $component): void - { - $this->cache->delete($this->getCacheKey($component)); - } -} diff --git a/system4.4.6/Cache/FactoriesCache/FileVarExportHandler.php b/system4.4.6/Cache/FactoriesCache/FileVarExportHandler.php deleted file mode 100644 index f7cee5ef..00000000 --- a/system4.4.6/Cache/FactoriesCache/FileVarExportHandler.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Cache\FactoriesCache; - -final class FileVarExportHandler -{ - private string $path = WRITEPATH . 'cache'; - - /** - * @param array|bool|float|int|object|string|null $val - */ - public function save(string $key, $val): void - { - $val = var_export($val, true); - - // Write to temp file first to ensure atomicity - $tmp = $this->path . "/{$key}." . uniqid('', true) . '.tmp'; - file_put_contents($tmp, '<?php return ' . $val . ';', LOCK_EX); - - rename($tmp, $this->path . "/{$key}"); - } - - public function delete(string $key): void - { - @unlink($this->path . "/{$key}"); - } - - /** - * @return array|bool|float|int|object|string|null - */ - public function get(string $key) - { - return @include $this->path . "/{$key}"; - } -} diff --git a/system4.4.6/Cache/Handlers/BaseHandler.php b/system4.4.6/Cache/Handlers/BaseHandler.php deleted file mode 100644 index 061a4a66..00000000 --- a/system4.4.6/Cache/Handlers/BaseHandler.php +++ /dev/null @@ -1,111 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Cache\Handlers; - -use Closure; -use CodeIgniter\Cache\CacheInterface; -use Config\Cache; -use Exception; -use InvalidArgumentException; - -/** - * Base class for cache handling - * - * @see \CodeIgniter\Cache\Handlers\BaseHandlerTest - */ -abstract class BaseHandler implements CacheInterface -{ - /** - * Reserved characters that cannot be used in a key or tag. May be overridden by the config. - * From https://github.com/symfony/cache-contracts/blob/c0446463729b89dd4fa62e9aeecc80287323615d/ItemInterface.php#L43 - * - * @deprecated in favor of the Cache config - */ - public const RESERVED_CHARACTERS = '{}()/\@:'; - - /** - * Maximum key length. - */ - public const MAX_KEY_LENGTH = PHP_INT_MAX; - - /** - * Prefix to apply to cache keys. - * May not be used by all handlers. - * - * @var string - */ - protected $prefix; - - /** - * Validates a cache key according to PSR-6. - * Keys that exceed MAX_KEY_LENGTH are hashed. - * From https://github.com/symfony/cache/blob/7b024c6726af21fd4984ac8d1eae2b9f3d90de88/CacheItem.php#L158 - * - * @param string $key The key to validate - * @param string $prefix Optional prefix to include in length calculations - * - * @throws InvalidArgumentException When $key is not valid - */ - public static function validateKey($key, $prefix = ''): string - { - if (! is_string($key)) { - throw new InvalidArgumentException('Cache key must be a string'); - } - if ($key === '') { - throw new InvalidArgumentException('Cache key cannot be empty.'); - } - - $reserved = config(Cache::class)->reservedCharacters ?? self::RESERVED_CHARACTERS; - if ($reserved && strpbrk($key, $reserved) !== false) { - throw new InvalidArgumentException('Cache key contains reserved characters ' . $reserved); - } - - // If the key with prefix exceeds the length then return the hashed version - return strlen($prefix . $key) > static::MAX_KEY_LENGTH ? $prefix . md5($key) : $prefix . $key; - } - - /** - * Get an item from the cache, or execute the given Closure and store the result. - * - * @param string $key Cache item name - * @param int $ttl Time to live - * @param Closure(): mixed $callback Callback return value - * - * @return array|bool|float|int|object|string|null - */ - public function remember(string $key, int $ttl, Closure $callback) - { - $value = $this->get($key); - - if ($value !== null) { - return $value; - } - - $this->save($key, $value = $callback(), $ttl); - - return $value; - } - - /** - * Deletes items from the cache store matching a given pattern. - * - * @param string $pattern Cache items glob-style pattern - * - * @return int|never - * - * @throws Exception - */ - public function deleteMatching(string $pattern) - { - throw new Exception('The deleteMatching method is not implemented.'); - } -} diff --git a/system4.4.6/Cache/Handlers/DummyHandler.php b/system4.4.6/Cache/Handlers/DummyHandler.php deleted file mode 100644 index d2d4fb06..00000000 --- a/system4.4.6/Cache/Handlers/DummyHandler.php +++ /dev/null @@ -1,119 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Cache\Handlers; - -use Closure; - -/** - * Dummy cache handler - * - * @see \CodeIgniter\Cache\Handlers\DummyHandlerTest - */ -class DummyHandler extends BaseHandler -{ - /** - * {@inheritDoc} - */ - public function initialize() - { - } - - /** - * {@inheritDoc} - */ - public function get(string $key) - { - return null; - } - - /** - * {@inheritDoc} - */ - public function remember(string $key, int $ttl, Closure $callback) - { - return null; - } - - /** - * {@inheritDoc} - */ - public function save(string $key, $value, int $ttl = 60) - { - return true; - } - - /** - * {@inheritDoc} - */ - public function delete(string $key) - { - return true; - } - - /** - * {@inheritDoc} - * - * @return int - */ - public function deleteMatching(string $pattern) - { - return 0; - } - - /** - * {@inheritDoc} - */ - public function increment(string $key, int $offset = 1) - { - return true; - } - - /** - * {@inheritDoc} - */ - public function decrement(string $key, int $offset = 1) - { - return true; - } - - /** - * {@inheritDoc} - */ - public function clean() - { - return true; - } - - /** - * {@inheritDoc} - */ - public function getCacheInfo() - { - return null; - } - - /** - * {@inheritDoc} - */ - public function getMetaData(string $key) - { - return null; - } - - /** - * {@inheritDoc} - */ - public function isSupported(): bool - { - return true; - } -} diff --git a/system4.4.6/Cache/Handlers/FileHandler.php b/system4.4.6/Cache/Handlers/FileHandler.php deleted file mode 100644 index 0a39c361..00000000 --- a/system4.4.6/Cache/Handlers/FileHandler.php +++ /dev/null @@ -1,423 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Cache\Handlers; - -use CodeIgniter\Cache\Exceptions\CacheException; -use CodeIgniter\I18n\Time; -use Config\Cache; -use Throwable; - -/** - * File system cache handler - * - * @see \CodeIgniter\Cache\Handlers\FileHandlerTest - */ -class FileHandler extends BaseHandler -{ - /** - * Maximum key length. - */ - public const MAX_KEY_LENGTH = 255; - - /** - * Where to store cached files on the disk. - * - * @var string - */ - protected $path; - - /** - * Mode for the stored files. - * Must be chmod-safe (octal). - * - * @var int - * - * @see https://www.php.net/manual/en/function.chmod.php - */ - protected $mode; - - /** - * Note: Use `CacheFactory::getHandler()` to instantiate. - * - * @throws CacheException - */ - public function __construct(Cache $config) - { - if (! property_exists($config, 'file')) { - $config->file = [ - 'storePath' => $config->storePath ?? WRITEPATH . 'cache', - 'mode' => 0640, - ]; - } - - $this->path = ! empty($config->file['storePath']) ? $config->file['storePath'] : WRITEPATH . 'cache'; - $this->path = rtrim($this->path, '/') . '/'; - - if (! is_really_writable($this->path)) { - throw CacheException::forUnableToWrite($this->path); - } - - $this->mode = $config->file['mode'] ?? 0640; - $this->prefix = $config->prefix; - } - - /** - * {@inheritDoc} - */ - public function initialize() - { - } - - /** - * {@inheritDoc} - */ - public function get(string $key) - { - $key = static::validateKey($key, $this->prefix); - $data = $this->getItem($key); - - return is_array($data) ? $data['data'] : null; - } - - /** - * {@inheritDoc} - */ - public function save(string $key, $value, int $ttl = 60) - { - $key = static::validateKey($key, $this->prefix); - - $contents = [ - 'time' => Time::now()->getTimestamp(), - 'ttl' => $ttl, - 'data' => $value, - ]; - - if ($this->writeFile($this->path . $key, serialize($contents))) { - try { - chmod($this->path . $key, $this->mode); - - // @codeCoverageIgnoreStart - } catch (Throwable $e) { - log_message('debug', 'Failed to set mode on cache file: ' . $e); - // @codeCoverageIgnoreEnd - } - - return true; - } - - return false; - } - - /** - * {@inheritDoc} - */ - public function delete(string $key) - { - $key = static::validateKey($key, $this->prefix); - - return is_file($this->path . $key) && unlink($this->path . $key); - } - - /** - * {@inheritDoc} - * - * @return int - */ - public function deleteMatching(string $pattern) - { - $deleted = 0; - - foreach (glob($this->path . $pattern, GLOB_NOSORT) as $filename) { - if (is_file($filename) && @unlink($filename)) { - $deleted++; - } - } - - return $deleted; - } - - /** - * {@inheritDoc} - */ - public function increment(string $key, int $offset = 1) - { - $prefixedKey = static::validateKey($key, $this->prefix); - $tmp = $this->getItem($prefixedKey); - - if ($tmp === false) { - $tmp = ['data' => 0, 'ttl' => 60]; - } - - ['data' => $value, 'ttl' => $ttl] = $tmp; - - if (! is_int($value)) { - return false; - } - - $value += $offset; - - return $this->save($key, $value, $ttl) ? $value : false; - } - - /** - * {@inheritDoc} - */ - public function decrement(string $key, int $offset = 1) - { - return $this->increment($key, -$offset); - } - - /** - * {@inheritDoc} - */ - public function clean() - { - return $this->deleteFiles($this->path, false, true); - } - - /** - * {@inheritDoc} - */ - public function getCacheInfo() - { - return $this->getDirFileInfo($this->path); - } - - /** - * {@inheritDoc} - */ - public function getMetaData(string $key) - { - $key = static::validateKey($key, $this->prefix); - - if (false === $data = $this->getItem($key)) { - return false; // @TODO This will return null in a future release - } - - return [ - 'expire' => $data['ttl'] > 0 ? $data['time'] + $data['ttl'] : null, - 'mtime' => filemtime($this->path . $key), - 'data' => $data['data'], - ]; - } - - /** - * {@inheritDoc} - */ - public function isSupported(): bool - { - return is_writable($this->path); - } - - /** - * Does the heavy lifting of actually retrieving the file and - * verifying it's age. - * - * @return array{data: mixed, ttl: int, time: int}|false - */ - protected function getItem(string $filename) - { - if (! is_file($this->path . $filename)) { - return false; - } - - $data = @unserialize(file_get_contents($this->path . $filename)); - - if (! is_array($data)) { - return false; - } - - if (! isset($data['ttl']) || ! is_int($data['ttl'])) { - return false; - } - - if (! isset($data['time']) || ! is_int($data['time'])) { - return false; - } - - if ($data['ttl'] > 0 && Time::now()->getTimestamp() > $data['time'] + $data['ttl']) { - @unlink($this->path . $filename); - - return false; - } - - return $data; - } - - /** - * Writes a file to disk, or returns false if not successful. - * - * @param string $path - * @param string $data - * @param string $mode - * - * @return bool - */ - protected function writeFile($path, $data, $mode = 'wb') - { - if (($fp = @fopen($path, $mode)) === false) { - return false; - } - - flock($fp, LOCK_EX); - - for ($result = $written = 0, $length = strlen($data); $written < $length; $written += $result) { - if (($result = fwrite($fp, substr($data, $written))) === false) { - break; - } - } - - flock($fp, LOCK_UN); - fclose($fp); - - return is_int($result); - } - - /** - * Deletes all files contained in the supplied directory path. - * Files must be writable or owned by the system in order to be deleted. - * If the second parameter is set to TRUE, any directories contained - * within the supplied base directory will be nuked as well. - * - * @param string $path File path - * @param bool $delDir Whether to delete any directories found in the path - * @param bool $htdocs Whether to skip deleting .htaccess and index page files - * @param int $_level Current directory depth level (default: 0; internal use only) - */ - protected function deleteFiles(string $path, bool $delDir = false, bool $htdocs = false, int $_level = 0): bool - { - // Trim the trailing slash - $path = rtrim($path, '/\\'); - - if (! $currentDir = @opendir($path)) { - return false; - } - - while (false !== ($filename = @readdir($currentDir))) { - if ($filename !== '.' && $filename !== '..') { - if (is_dir($path . DIRECTORY_SEPARATOR . $filename) && $filename[0] !== '.') { - $this->deleteFiles($path . DIRECTORY_SEPARATOR . $filename, $delDir, $htdocs, $_level + 1); - } elseif ($htdocs !== true || ! preg_match('/^(\.htaccess|index\.(html|htm|php)|web\.config)$/i', $filename)) { - @unlink($path . DIRECTORY_SEPARATOR . $filename); - } - } - } - - closedir($currentDir); - - return ($delDir === true && $_level > 0) ? @rmdir($path) : true; - } - - /** - * Reads the specified directory and builds an array containing the filenames, - * filesize, dates, and permissions - * - * Any sub-folders contained within the specified path are read as well. - * - * @param string $sourceDir Path to source - * @param bool $topLevelOnly Look only at the top level directory specified? - * @param bool $_recursion Internal variable to determine recursion status - do not use in calls - * - * @return array|false - */ - protected function getDirFileInfo(string $sourceDir, bool $topLevelOnly = true, bool $_recursion = false) - { - static $_filedata = []; - $relativePath = $sourceDir; - - if ($fp = @opendir($sourceDir)) { - // reset the array and make sure $source_dir has a trailing slash on the initial call - if ($_recursion === false) { - $_filedata = []; - $sourceDir = rtrim(realpath($sourceDir) ?: $sourceDir, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR; - } - - // Used to be foreach (scandir($source_dir, 1) as $file), but scandir() is simply not as fast - while (false !== ($file = readdir($fp))) { - if (is_dir($sourceDir . $file) && $file[0] !== '.' && $topLevelOnly === false) { - $this->getDirFileInfo($sourceDir . $file . DIRECTORY_SEPARATOR, $topLevelOnly, true); - } elseif (! is_dir($sourceDir . $file) && $file[0] !== '.') { - $_filedata[$file] = $this->getFileInfo($sourceDir . $file); - $_filedata[$file]['relative_path'] = $relativePath; - } - } - - closedir($fp); - - return $_filedata; - } - - return false; - } - - /** - * Given a file and path, returns the name, path, size, date modified - * Second parameter allows you to explicitly declare what information you want returned - * Options are: name, server_path, size, date, readable, writable, executable, fileperms - * Returns FALSE if the file cannot be found. - * - * @param string $file Path to file - * @param array|string $returnedValues Array or comma separated string of information returned - * - * @return array|false - */ - protected function getFileInfo(string $file, $returnedValues = ['name', 'server_path', 'size', 'date']) - { - if (! is_file($file)) { - return false; - } - - if (is_string($returnedValues)) { - $returnedValues = explode(',', $returnedValues); - } - - $fileInfo = []; - - foreach ($returnedValues as $key) { - switch ($key) { - case 'name': - $fileInfo['name'] = basename($file); - break; - - case 'server_path': - $fileInfo['server_path'] = $file; - break; - - case 'size': - $fileInfo['size'] = filesize($file); - break; - - case 'date': - $fileInfo['date'] = filemtime($file); - break; - - case 'readable': - $fileInfo['readable'] = is_readable($file); - break; - - case 'writable': - $fileInfo['writable'] = is_writable($file); - break; - - case 'executable': - $fileInfo['executable'] = is_executable($file); - break; - - case 'fileperms': - $fileInfo['fileperms'] = fileperms($file); - break; - } - } - - return $fileInfo; - } -} diff --git a/system4.4.6/Cache/Handlers/MemcachedHandler.php b/system4.4.6/Cache/Handlers/MemcachedHandler.php deleted file mode 100644 index e8658906..00000000 --- a/system4.4.6/Cache/Handlers/MemcachedHandler.php +++ /dev/null @@ -1,276 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Cache\Handlers; - -use CodeIgniter\Exceptions\CriticalError; -use CodeIgniter\I18n\Time; -use Config\Cache; -use Exception; -use Memcache; -use Memcached; - -/** - * Mamcached cache handler - * - * @see \CodeIgniter\Cache\Handlers\MemcachedHandlerTest - */ -class MemcachedHandler extends BaseHandler -{ - /** - * The memcached object - * - * @var Memcache|Memcached - */ - protected $memcached; - - /** - * Memcached Configuration - * - * @var array - */ - protected $config = [ - 'host' => '127.0.0.1', - 'port' => 11211, - 'weight' => 1, - 'raw' => false, - ]; - - /** - * Note: Use `CacheFactory::getHandler()` to instantiate. - */ - public function __construct(Cache $config) - { - $this->prefix = $config->prefix; - - $this->config = array_merge($this->config, $config->memcached); - } - - /** - * Closes the connection to Memcache(d) if present. - */ - public function __destruct() - { - if ($this->memcached instanceof Memcached) { - $this->memcached->quit(); - } elseif ($this->memcached instanceof Memcache) { - $this->memcached->close(); - } - } - - /** - * {@inheritDoc} - */ - public function initialize() - { - try { - if (class_exists(Memcached::class)) { - // Create new instance of Memcached - $this->memcached = new Memcached(); - if ($this->config['raw']) { - $this->memcached->setOption(Memcached::OPT_BINARY_PROTOCOL, true); - } - - // Add server - $this->memcached->addServer( - $this->config['host'], - $this->config['port'], - $this->config['weight'] - ); - - // attempt to get status of servers - $stats = $this->memcached->getStats(); - - // $stats should be an associate array with a key in the format of host:port. - // If it doesn't have the key, we know the server is not working as expected. - if (! isset($stats[$this->config['host'] . ':' . $this->config['port']])) { - throw new CriticalError('Cache: Memcached connection failed.'); - } - } elseif (class_exists(Memcache::class)) { - // Create new instance of Memcache - $this->memcached = new Memcache(); - - // Check if we can connect to the server - $canConnect = $this->memcached->connect( - $this->config['host'], - $this->config['port'] - ); - - // If we can't connect, throw a CriticalError exception - if ($canConnect === false) { - throw new CriticalError('Cache: Memcache connection failed.'); - } - - // Add server, third parameter is persistence and defaults to TRUE. - $this->memcached->addServer( - $this->config['host'], - $this->config['port'], - true, - $this->config['weight'] - ); - } else { - throw new CriticalError('Cache: Not support Memcache(d) extension.'); - } - } catch (Exception $e) { - throw new CriticalError('Cache: Memcache(d) connection refused (' . $e->getMessage() . ').'); - } - } - - /** - * {@inheritDoc} - */ - public function get(string $key) - { - $data = []; - $key = static::validateKey($key, $this->prefix); - - if ($this->memcached instanceof Memcached) { - $data = $this->memcached->get($key); - - // check for unmatched key - if ($this->memcached->getResultCode() === Memcached::RES_NOTFOUND) { - return null; - } - } elseif ($this->memcached instanceof Memcache) { - $flags = false; - $data = $this->memcached->get($key, $flags); - - // check for unmatched key (i.e. $flags is untouched) - if ($flags === false) { - return null; - } - } - - return is_array($data) ? $data[0] : $data; - } - - /** - * {@inheritDoc} - */ - public function save(string $key, $value, int $ttl = 60) - { - $key = static::validateKey($key, $this->prefix); - - if (! $this->config['raw']) { - $value = [ - $value, - Time::now()->getTimestamp(), - $ttl, - ]; - } - - if ($this->memcached instanceof Memcached) { - return $this->memcached->set($key, $value, $ttl); - } - - if ($this->memcached instanceof Memcache) { - return $this->memcached->set($key, $value, 0, $ttl); - } - - return false; - } - - /** - * {@inheritDoc} - */ - public function delete(string $key) - { - $key = static::validateKey($key, $this->prefix); - - return $this->memcached->delete($key); - } - - /** - * {@inheritDoc} - * - * @return never - */ - public function deleteMatching(string $pattern) - { - throw new Exception('The deleteMatching method is not implemented for Memcached. You must select File, Redis or Predis handlers to use it.'); - } - - /** - * {@inheritDoc} - */ - public function increment(string $key, int $offset = 1) - { - if (! $this->config['raw']) { - return false; - } - - $key = static::validateKey($key, $this->prefix); - - return $this->memcached->increment($key, $offset, $offset, 60); - } - - /** - * {@inheritDoc} - */ - public function decrement(string $key, int $offset = 1) - { - if (! $this->config['raw']) { - return false; - } - - $key = static::validateKey($key, $this->prefix); - - // FIXME: third parameter isn't other handler actions. - - return $this->memcached->decrement($key, $offset, $offset, 60); - } - - /** - * {@inheritDoc} - */ - public function clean() - { - return $this->memcached->flush(); - } - - /** - * {@inheritDoc} - */ - public function getCacheInfo() - { - return $this->memcached->getStats(); - } - - /** - * {@inheritDoc} - */ - public function getMetaData(string $key) - { - $key = static::validateKey($key, $this->prefix); - $stored = $this->memcached->get($key); - - // if not an array, don't try to count for PHP7.2 - if (! is_array($stored) || count($stored) !== 3) { - return false; // @TODO This will return null in a future release - } - - [$data, $time, $limit] = $stored; - - return [ - 'expire' => $limit > 0 ? $time + $limit : null, - 'mtime' => $time, - 'data' => $data, - ]; - } - - /** - * {@inheritDoc} - */ - public function isSupported(): bool - { - return extension_loaded('memcached') || extension_loaded('memcache'); - } -} diff --git a/system4.4.6/Cache/Handlers/PredisHandler.php b/system4.4.6/Cache/Handlers/PredisHandler.php deleted file mode 100644 index 986d083e..00000000 --- a/system4.4.6/Cache/Handlers/PredisHandler.php +++ /dev/null @@ -1,235 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Cache\Handlers; - -use CodeIgniter\Exceptions\CriticalError; -use CodeIgniter\I18n\Time; -use Config\Cache; -use Exception; -use Predis\Client; -use Predis\Collection\Iterator\Keyspace; - -/** - * Predis cache handler - * - * @see \CodeIgniter\Cache\Handlers\PredisHandlerTest - */ -class PredisHandler extends BaseHandler -{ - /** - * Default config - * - * @var array - */ - protected $config = [ - 'scheme' => 'tcp', - 'host' => '127.0.0.1', - 'password' => null, - 'port' => 6379, - 'timeout' => 0, - ]; - - /** - * Predis connection - * - * @var Client - */ - protected $redis; - - /** - * Note: Use `CacheFactory::getHandler()` to instantiate. - */ - public function __construct(Cache $config) - { - $this->prefix = $config->prefix; - - if (isset($config->redis)) { - $this->config = array_merge($this->config, $config->redis); - } - } - - /** - * {@inheritDoc} - */ - public function initialize() - { - try { - $this->redis = new Client($this->config, ['prefix' => $this->prefix]); - $this->redis->time(); - } catch (Exception $e) { - throw new CriticalError('Cache: Predis connection refused (' . $e->getMessage() . ').'); - } - } - - /** - * {@inheritDoc} - */ - public function get(string $key) - { - $key = static::validateKey($key); - - $data = array_combine( - ['__ci_type', '__ci_value'], - $this->redis->hmget($key, ['__ci_type', '__ci_value']) - ); - - if (! isset($data['__ci_type'], $data['__ci_value']) || $data['__ci_value'] === false) { - return null; - } - - switch ($data['__ci_type']) { - case 'array': - case 'object': - return unserialize($data['__ci_value']); - - case 'boolean': - case 'integer': - case 'double': // Yes, 'double' is returned and NOT 'float' - case 'string': - case 'NULL': - return settype($data['__ci_value'], $data['__ci_type']) ? $data['__ci_value'] : null; - - case 'resource': - default: - return null; - } - } - - /** - * {@inheritDoc} - */ - public function save(string $key, $value, int $ttl = 60) - { - $key = static::validateKey($key); - - switch ($dataType = gettype($value)) { - case 'array': - case 'object': - $value = serialize($value); - break; - - case 'boolean': - case 'integer': - case 'double': // Yes, 'double' is returned and NOT 'float' - case 'string': - case 'NULL': - break; - - case 'resource': - default: - return false; - } - - if (! $this->redis->hmset($key, ['__ci_type' => $dataType, '__ci_value' => $value])) { - return false; - } - - if ($ttl !== 0) { - $this->redis->expireat($key, Time::now()->getTimestamp() + $ttl); - } - - return true; - } - - /** - * {@inheritDoc} - */ - public function delete(string $key) - { - $key = static::validateKey($key); - - return $this->redis->del($key) === 1; - } - - /** - * {@inheritDoc} - * - * @return int - */ - public function deleteMatching(string $pattern) - { - $matchedKeys = []; - - foreach (new Keyspace($this->redis, $pattern) as $key) { - $matchedKeys[] = $key; - } - - return $this->redis->del($matchedKeys); - } - - /** - * {@inheritDoc} - */ - public function increment(string $key, int $offset = 1) - { - $key = static::validateKey($key); - - return $this->redis->hincrby($key, 'data', $offset); - } - - /** - * {@inheritDoc} - */ - public function decrement(string $key, int $offset = 1) - { - $key = static::validateKey($key); - - return $this->redis->hincrby($key, 'data', -$offset); - } - - /** - * {@inheritDoc} - */ - public function clean() - { - return $this->redis->flushdb()->getPayload() === 'OK'; - } - - /** - * {@inheritDoc} - */ - public function getCacheInfo() - { - return $this->redis->info(); - } - - /** - * {@inheritDoc} - */ - public function getMetaData(string $key) - { - $key = static::validateKey($key); - - $data = array_combine(['__ci_value'], $this->redis->hmget($key, ['__ci_value'])); - - if (isset($data['__ci_value']) && $data['__ci_value'] !== false) { - $time = Time::now()->getTimestamp(); - $ttl = $this->redis->ttl($key); - - return [ - 'expire' => $ttl > 0 ? $time + $ttl : null, - 'mtime' => $time, - 'data' => $data['__ci_value'], - ]; - } - - return null; - } - - /** - * {@inheritDoc} - */ - public function isSupported(): bool - { - return class_exists(Client::class); - } -} diff --git a/system4.4.6/Cache/Handlers/RedisHandler.php b/system4.4.6/Cache/Handlers/RedisHandler.php deleted file mode 100644 index 953de2dc..00000000 --- a/system4.4.6/Cache/Handlers/RedisHandler.php +++ /dev/null @@ -1,267 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Cache\Handlers; - -use CodeIgniter\Exceptions\CriticalError; -use CodeIgniter\I18n\Time; -use Config\Cache; -use Redis; -use RedisException; - -/** - * Redis cache handler - * - * @see \CodeIgniter\Cache\Handlers\RedisHandlerTest - */ -class RedisHandler extends BaseHandler -{ - /** - * Default config - * - * @var array - */ - protected $config = [ - 'host' => '127.0.0.1', - 'password' => null, - 'port' => 6379, - 'timeout' => 0, - 'database' => 0, - ]; - - /** - * Redis connection - * - * @var Redis|null - */ - protected $redis; - - /** - * Note: Use `CacheFactory::getHandler()` to instantiate. - */ - public function __construct(Cache $config) - { - $this->prefix = $config->prefix; - - $this->config = array_merge($this->config, $config->redis); - } - - /** - * Closes the connection to Redis if present. - */ - public function __destruct() - { - if (isset($this->redis)) { - $this->redis->close(); - } - } - - /** - * {@inheritDoc} - */ - public function initialize() - { - $config = $this->config; - - $this->redis = new Redis(); - - try { - // Note:: If Redis is your primary cache choice, and it is "offline", every page load will end up been delayed by the timeout duration. - // I feel like some sort of temporary flag should be set, to indicate that we think Redis is "offline", allowing us to bypass the timeout for a set period of time. - - if (! $this->redis->connect($config['host'], ($config['host'][0] === '/' ? 0 : $config['port']), $config['timeout'])) { - // Note:: I'm unsure if log_message() is necessary, however I'm not 100% comfortable removing it. - log_message('error', 'Cache: Redis connection failed. Check your configuration.'); - - throw new CriticalError('Cache: Redis connection failed. Check your configuration.'); - } - - if (isset($config['password']) && ! $this->redis->auth($config['password'])) { - log_message('error', 'Cache: Redis authentication failed.'); - - throw new CriticalError('Cache: Redis authentication failed.'); - } - - if (isset($config['database']) && ! $this->redis->select($config['database'])) { - log_message('error', 'Cache: Redis select database failed.'); - - throw new CriticalError('Cache: Redis select database failed.'); - } - } catch (RedisException $e) { - throw new CriticalError('Cache: RedisException occurred with message (' . $e->getMessage() . ').'); - } - } - - /** - * {@inheritDoc} - */ - public function get(string $key) - { - $key = static::validateKey($key, $this->prefix); - $data = $this->redis->hMGet($key, ['__ci_type', '__ci_value']); - - if (! isset($data['__ci_type'], $data['__ci_value']) || $data['__ci_value'] === false) { - return null; - } - - switch ($data['__ci_type']) { - case 'array': - case 'object': - return unserialize($data['__ci_value']); - - case 'boolean': - case 'integer': - case 'double': // Yes, 'double' is returned and NOT 'float' - case 'string': - case 'NULL': - return settype($data['__ci_value'], $data['__ci_type']) ? $data['__ci_value'] : null; - - case 'resource': - default: - return null; - } - } - - /** - * {@inheritDoc} - */ - public function save(string $key, $value, int $ttl = 60) - { - $key = static::validateKey($key, $this->prefix); - - switch ($dataType = gettype($value)) { - case 'array': - case 'object': - $value = serialize($value); - break; - - case 'boolean': - case 'integer': - case 'double': // Yes, 'double' is returned and NOT 'float' - case 'string': - case 'NULL': - break; - - case 'resource': - default: - return false; - } - - if (! $this->redis->hMSet($key, ['__ci_type' => $dataType, '__ci_value' => $value])) { - return false; - } - - if ($ttl !== 0) { - $this->redis->expireAt($key, Time::now()->getTimestamp() + $ttl); - } - - return true; - } - - /** - * {@inheritDoc} - */ - public function delete(string $key) - { - $key = static::validateKey($key, $this->prefix); - - return $this->redis->del($key) === 1; - } - - /** - * {@inheritDoc} - * - * @return int - */ - public function deleteMatching(string $pattern) - { - $matchedKeys = []; - $iterator = null; - - do { - // Scan for some keys - $keys = $this->redis->scan($iterator, $pattern); - - // Redis may return empty results, so protect against that - if ($keys !== false) { - foreach ($keys as $key) { - $matchedKeys[] = $key; - } - } - } while ($iterator > 0); - - return $this->redis->del($matchedKeys); - } - - /** - * {@inheritDoc} - */ - public function increment(string $key, int $offset = 1) - { - $key = static::validateKey($key, $this->prefix); - - return $this->redis->hIncrBy($key, '__ci_value', $offset); - } - - /** - * {@inheritDoc} - */ - public function decrement(string $key, int $offset = 1) - { - return $this->increment($key, -$offset); - } - - /** - * {@inheritDoc} - */ - public function clean() - { - return $this->redis->flushDB(); - } - - /** - * {@inheritDoc} - */ - public function getCacheInfo() - { - return $this->redis->info(); - } - - /** - * {@inheritDoc} - */ - public function getMetaData(string $key) - { - $value = $this->get($key); - - if ($value !== null) { - $time = Time::now()->getTimestamp(); - $ttl = $this->redis->ttl(static::validateKey($key, $this->prefix)); - assert(is_int($ttl)); - - return [ - 'expire' => $ttl > 0 ? $time + $ttl : null, - 'mtime' => $time, - 'data' => $value, - ]; - } - - return null; - } - - /** - * {@inheritDoc} - */ - public function isSupported(): bool - { - return extension_loaded('redis'); - } -} diff --git a/system4.4.6/Cache/Handlers/WincacheHandler.php b/system4.4.6/Cache/Handlers/WincacheHandler.php deleted file mode 100644 index b1ea45de..00000000 --- a/system4.4.6/Cache/Handlers/WincacheHandler.php +++ /dev/null @@ -1,150 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Cache\Handlers; - -use CodeIgniter\I18n\Time; -use Config\Cache; -use Exception; - -/** - * Cache handler for WinCache from Microsoft & IIS. - * - * @codeCoverageIgnore - */ -class WincacheHandler extends BaseHandler -{ - /** - * Note: Use `CacheFactory::getHandler()` to instantiate. - */ - public function __construct(Cache $config) - { - $this->prefix = $config->prefix; - } - - /** - * {@inheritDoc} - */ - public function initialize() - { - } - - /** - * {@inheritDoc} - */ - public function get(string $key) - { - $key = static::validateKey($key, $this->prefix); - $success = false; - - $data = wincache_ucache_get($key, $success); - - // Success returned by reference from wincache_ucache_get() - return $success ? $data : null; - } - - /** - * {@inheritDoc} - */ - public function save(string $key, $value, int $ttl = 60) - { - $key = static::validateKey($key, $this->prefix); - - return wincache_ucache_set($key, $value, $ttl); - } - - /** - * {@inheritDoc} - */ - public function delete(string $key) - { - $key = static::validateKey($key, $this->prefix); - - return wincache_ucache_delete($key); - } - - /** - * {@inheritDoc} - * - * @return never - */ - public function deleteMatching(string $pattern) - { - throw new Exception('The deleteMatching method is not implemented for Wincache. You must select File, Redis or Predis handlers to use it.'); - } - - /** - * {@inheritDoc} - */ - public function increment(string $key, int $offset = 1) - { - $key = static::validateKey($key, $this->prefix); - - return wincache_ucache_inc($key, $offset); - } - - /** - * {@inheritDoc} - */ - public function decrement(string $key, int $offset = 1) - { - $key = static::validateKey($key, $this->prefix); - - return wincache_ucache_dec($key, $offset); - } - - /** - * {@inheritDoc} - */ - public function clean() - { - return wincache_ucache_clear(); - } - - /** - * {@inheritDoc} - */ - public function getCacheInfo() - { - return wincache_ucache_info(true); - } - - /** - * {@inheritDoc} - */ - public function getMetaData(string $key) - { - $key = static::validateKey($key, $this->prefix); - - if ($stored = wincache_ucache_info(false, $key)) { - $age = $stored['ucache_entries'][1]['age_seconds']; - $ttl = $stored['ucache_entries'][1]['ttl_seconds']; - $hitcount = $stored['ucache_entries'][1]['hitcount']; - - return [ - 'expire' => $ttl > 0 ? Time::now()->getTimestamp() + $ttl : null, - 'hitcount' => $hitcount, - 'age' => $age, - 'ttl' => $ttl, - ]; - } - - return false; // @TODO This will return null in a future release - } - - /** - * {@inheritDoc} - */ - public function isSupported(): bool - { - return extension_loaded('wincache') && ini_get('wincache.ucenabled'); - } -} diff --git a/system4.4.6/Cache/ResponseCache.php b/system4.4.6/Cache/ResponseCache.php deleted file mode 100644 index 3f66284a..00000000 --- a/system4.4.6/Cache/ResponseCache.php +++ /dev/null @@ -1,151 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Cache; - -use CodeIgniter\HTTP\CLIRequest; -use CodeIgniter\HTTP\IncomingRequest; -use CodeIgniter\HTTP\ResponseInterface; -use Config\Cache as CacheConfig; -use Exception; - -/** - * Web Page Caching - * - * @see \CodeIgniter\Cache\ResponseCacheTest - */ -final class ResponseCache -{ - /** - * Whether to take the URL query string into consideration when generating - * output cache files. Valid options are: - * - * false = Disabled - * true = Enabled, take all query parameters into account. - * Please be aware that this may result in numerous cache - * files generated for the same page over and over again. - * array('q') = Enabled, but only take into account the specified list - * of query parameters. - * - * @var bool|string[] - */ - private $cacheQueryString = false; - - /** - * Cache time to live. - * - * @var int seconds - */ - private int $ttl = 0; - - private CacheInterface $cache; - - public function __construct(CacheConfig $config, CacheInterface $cache) - { - $this->cacheQueryString = $config->cacheQueryString; - $this->cache = $cache; - } - - /** - * @return $this - */ - public function setTtl(int $ttl) - { - $this->ttl = $ttl; - - return $this; - } - - /** - * Generates the cache key to use from the current request. - * - * @param CLIRequest|IncomingRequest $request - * - * @internal for testing purposes only - */ - public function generateCacheKey($request): string - { - if ($request instanceof CLIRequest) { - return md5($request->getPath()); - } - - $uri = clone $request->getUri(); - - $query = $this->cacheQueryString - ? $uri->getQuery(is_array($this->cacheQueryString) ? ['only' => $this->cacheQueryString] : []) - : ''; - - return md5($uri->setFragment('')->setQuery($query)); - } - - /** - * Caches the response. - * - * @param CLIRequest|IncomingRequest $request - */ - public function make($request, ResponseInterface $response): bool - { - if ($this->ttl === 0) { - return true; - } - - $headers = []; - - foreach ($response->headers() as $header) { - $headers[$header->getName()] = $header->getValueLine(); - } - - return $this->cache->save( - $this->generateCacheKey($request), - serialize(['headers' => $headers, 'output' => $response->getBody()]), - $this->ttl - ); - } - - /** - * Gets the cached response for the request. - * - * @param CLIRequest|IncomingRequest $request - */ - public function get($request, ResponseInterface $response): ?ResponseInterface - { - if ($cachedResponse = $this->cache->get($this->generateCacheKey($request))) { - $cachedResponse = unserialize($cachedResponse); - - if ( - ! is_array($cachedResponse) - || ! isset($cachedResponse['output']) - || ! isset($cachedResponse['headers']) - ) { - throw new Exception('Error unserializing page cache'); - } - - $headers = $cachedResponse['headers']; - $output = $cachedResponse['output']; - - // Clear all default headers - foreach (array_keys($response->headers()) as $key) { - $response->removeHeader($key); - } - - // Set cached headers - foreach ($headers as $name => $value) { - $response->setHeader($name, $value); - } - - $response->setBody($output); - - return $response; - } - - return null; - } -} diff --git a/system4.4.6/CodeIgniter.php b/system4.4.6/CodeIgniter.php deleted file mode 100644 index a602d2a3..00000000 --- a/system4.4.6/CodeIgniter.php +++ /dev/null @@ -1,1163 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter; - -use Closure; -use CodeIgniter\Cache\ResponseCache; -use CodeIgniter\Debug\Timer; -use CodeIgniter\Events\Events; -use CodeIgniter\Exceptions\FrameworkException; -use CodeIgniter\Exceptions\PageNotFoundException; -use CodeIgniter\HTTP\CLIRequest; -use CodeIgniter\HTTP\DownloadResponse; -use CodeIgniter\HTTP\Exceptions\RedirectException; -use CodeIgniter\HTTP\IncomingRequest; -use CodeIgniter\HTTP\RedirectResponse; -use CodeIgniter\HTTP\Request; -use CodeIgniter\HTTP\ResponsableInterface; -use CodeIgniter\HTTP\ResponseInterface; -use CodeIgniter\HTTP\URI; -use CodeIgniter\Router\Exceptions\RedirectException as DeprecatedRedirectException; -use CodeIgniter\Router\RouteCollectionInterface; -use CodeIgniter\Router\Router; -use Config\App; -use Config\Cache; -use Config\Feature; -use Config\Kint as KintConfig; -use Config\Services; -use Exception; -use Kint; -use Kint\Renderer\CliRenderer; -use Kint\Renderer\RichRenderer; -use Locale; -use LogicException; -use Throwable; - -/** - * This class is the core of the framework, and will analyse the - * request, route it to a controller, and send back the response. - * Of course, there are variations to that flow, but this is the brains. - * - * @see \CodeIgniter\CodeIgniterTest - */ -class CodeIgniter -{ - /** - * The current version of CodeIgniter Framework - */ - public const CI_VERSION = '4.4.6'; - - /** - * App startup time. - * - * @var float|null - */ - protected $startTime; - - /** - * Total app execution time - * - * @var float - */ - protected $totalTime; - - /** - * Main application configuration - * - * @var App - */ - protected $config; - - /** - * Timer instance. - * - * @var Timer - */ - protected $benchmark; - - /** - * Current request. - * - * @var CLIRequest|IncomingRequest|null - */ - protected $request; - - /** - * Current response. - * - * @var ResponseInterface - */ - protected $response; - - /** - * Router to use. - * - * @var Router - */ - protected $router; - - /** - * Controller to use. - * - * @var (Closure(mixed...): ResponseInterface|string)|string|null - */ - protected $controller; - - /** - * Controller method to invoke. - * - * @var string - */ - protected $method; - - /** - * Output handler to use. - * - * @var string - */ - protected $output; - - /** - * Cache expiration time - * - * @var int seconds - * - * @deprecated 4.4.0 Moved to ResponseCache::$ttl. No longer used. - */ - protected static $cacheTTL = 0; - - /** - * Request path to use. - * - * @var string|null - * - * @deprecated No longer used. - */ - protected $path; - - /** - * Should the Response instance "pretend" - * to keep from setting headers/cookies/etc - * - * @var bool - * - * @deprecated No longer used. - */ - protected $useSafeOutput = false; - - /** - * Context - * web: Invoked by HTTP request - * php-cli: Invoked by CLI via `php public/index.php` - * - * @phpstan-var 'php-cli'|'web' - */ - protected ?string $context = null; - - /** - * Whether to enable Control Filters. - */ - protected bool $enableFilters = true; - - /** - * Whether to return Response object or send response. - * - * @deprecated No longer used. - */ - protected bool $returnResponse = false; - - /** - * Application output buffering level - */ - protected int $bufferLevel; - - /** - * Web Page Caching - */ - protected ResponseCache $pageCache; - - /** - * Constructor. - */ - public function __construct(App $config) - { - $this->startTime = microtime(true); - $this->config = $config; - - $this->pageCache = Services::responsecache(); - } - - /** - * Handles some basic app and environment setup. - * - * @return void - */ - public function initialize() - { - // Define environment variables - $this->bootstrapEnvironment(); - - // Setup Exception Handling - Services::exceptions()->initialize(); - - // Run this check for manual installations - if (! is_file(COMPOSER_PATH)) { - $this->resolvePlatformExtensions(); // @codeCoverageIgnore - } - - // Set default locale on the server - Locale::setDefault($this->config->defaultLocale ?? 'en'); - - // Set default timezone on the server - date_default_timezone_set($this->config->appTimezone ?? 'UTC'); - - $this->initializeKint(); - } - - /** - * Checks system for missing required PHP extensions. - * - * @return void - * - * @throws FrameworkException - * - * @codeCoverageIgnore - */ - protected function resolvePlatformExtensions() - { - $requiredExtensions = [ - 'intl', - 'json', - 'mbstring', - ]; - - $missingExtensions = []; - - foreach ($requiredExtensions as $extension) { - if (! extension_loaded($extension)) { - $missingExtensions[] = $extension; - } - } - - if ($missingExtensions !== []) { - throw FrameworkException::forMissingExtension(implode(', ', $missingExtensions)); - } - } - - /** - * Initializes Kint - * - * @return void - */ - protected function initializeKint() - { - if (CI_DEBUG) { - $this->autoloadKint(); - $this->configureKint(); - } elseif (class_exists(Kint::class)) { - // In case that Kint is already loaded via Composer. - Kint::$enabled_mode = false; - // @codeCoverageIgnore - } - - helper('kint'); - } - - private function autoloadKint(): void - { - // If we have KINT_DIR it means it's already loaded via composer - if (! defined('KINT_DIR')) { - spl_autoload_register(function ($class) { - $class = explode('\\', $class); - - if (array_shift($class) !== 'Kint') { - return; - } - - $file = SYSTEMPATH . 'ThirdParty/Kint/' . implode('/', $class) . '.php'; - - if (is_file($file)) { - require_once $file; - } - }); - - require_once SYSTEMPATH . 'ThirdParty/Kint/init.php'; - } - } - - private function configureKint(): void - { - $config = config(KintConfig::class); - - Kint::$depth_limit = $config->maxDepth; - Kint::$display_called_from = $config->displayCalledFrom; - Kint::$expanded = $config->expanded; - - if (isset($config->plugins) && is_array($config->plugins)) { - Kint::$plugins = $config->plugins; - } - - $csp = Services::csp(); - if ($csp->enabled()) { - RichRenderer::$js_nonce = $csp->getScriptNonce(); - RichRenderer::$css_nonce = $csp->getStyleNonce(); - } - - RichRenderer::$theme = $config->richTheme; - RichRenderer::$folder = $config->richFolder; - RichRenderer::$sort = $config->richSort; - if (isset($config->richObjectPlugins) && is_array($config->richObjectPlugins)) { - RichRenderer::$value_plugins = $config->richObjectPlugins; - } - if (isset($config->richTabPlugins) && is_array($config->richTabPlugins)) { - RichRenderer::$tab_plugins = $config->richTabPlugins; - } - - CliRenderer::$cli_colors = $config->cliColors; - CliRenderer::$force_utf8 = $config->cliForceUTF8; - CliRenderer::$detect_width = $config->cliDetectWidth; - CliRenderer::$min_terminal_width = $config->cliMinWidth; - } - - /** - * Launch the application! - * - * This is "the loop" if you will. The main entry point into the script - * that gets the required class instances, fires off the filters, - * tries to route the response, loads the controller and generally - * makes all the pieces work together. - * - * @return ResponseInterface|void - */ - public function run(?RouteCollectionInterface $routes = null, bool $returnResponse = false) - { - if ($this->context === null) { - throw new LogicException( - 'Context must be set before run() is called. If you are upgrading from 4.1.x, ' - . 'you need to merge `public/index.php` and `spark` file from `vendor/codeigniter4/framework`.' - ); - } - - $this->pageCache->setTtl(0); - $this->bufferLevel = ob_get_level(); - - $this->startBenchmark(); - - $this->getRequestObject(); - $this->getResponseObject(); - - $this->spoofRequestMethod(); - - try { - $this->response = $this->handleRequest($routes, config(Cache::class), $returnResponse); - } catch (ResponsableInterface|DeprecatedRedirectException $e) { - $this->outputBufferingEnd(); - if ($e instanceof DeprecatedRedirectException) { - $e = new RedirectException($e->getMessage(), $e->getCode(), $e); - } - - $this->response = $e->getResponse(); - } catch (PageNotFoundException $e) { - $this->response = $this->display404errors($e); - } catch (Throwable $e) { - $this->outputBufferingEnd(); - - throw $e; - } - - if ($returnResponse) { - return $this->response; - } - - $this->sendResponse(); - } - - /** - * Set our Response instance to "pretend" mode so that things like - * cookies and headers are not actually sent, allowing PHP 7.2+ to - * not complain when ini_set() function is used. - * - * @return $this - * - * @deprecated No longer used. - */ - public function useSafeOutput(bool $safe = true) - { - $this->useSafeOutput = $safe; - - return $this; - } - - /** - * Invoked via php-cli command? - */ - private function isPhpCli(): bool - { - return $this->context === 'php-cli'; - } - - /** - * Web access? - */ - private function isWeb(): bool - { - return $this->context === 'web'; - } - - /** - * Disables Controller Filters. - */ - public function disableFilters(): void - { - $this->enableFilters = false; - } - - /** - * Handles the main request logic and fires the controller. - * - * @return ResponseInterface - * - * @throws PageNotFoundException - * @throws RedirectException - * - * @deprecated $returnResponse is deprecated. - */ - protected function handleRequest(?RouteCollectionInterface $routes, Cache $cacheConfig, bool $returnResponse = false) - { - $this->forceSecureAccess(); - - if ($this->request instanceof IncomingRequest && strtolower($this->request->getMethod()) === 'cli') { - return $this->response->setStatusCode(405)->setBody('Method Not Allowed'); - } - - Events::trigger('pre_system'); - - // Check for a cached page. Execution will stop - // if the page has been cached. - if (($response = $this->displayCache($cacheConfig)) instanceof ResponseInterface) { - return $response; - } - - $routeFilter = $this->tryToRouteIt($routes); - - $uri = $this->determinePath(); - - if ($this->enableFilters) { - // Start up the filters - $filters = Services::filters(); - - // If any filters were specified within the routes file, - // we need to ensure it's active for the current request - if ($routeFilter !== null) { - $multipleFiltersEnabled = config(Feature::class)->multipleFilters ?? false; - if ($multipleFiltersEnabled) { - $filters->enableFilters($routeFilter, 'before'); - $filters->enableFilters($routeFilter, 'after'); - } else { - // for backward compatibility - $filters->enableFilter($routeFilter, 'before'); - $filters->enableFilter($routeFilter, 'after'); - } - } - - // Run "before" filters - $this->benchmark->start('before_filters'); - $possibleResponse = $filters->run($uri, 'before'); - $this->benchmark->stop('before_filters'); - - // If a ResponseInterface instance is returned then send it back to the client and stop - if ($possibleResponse instanceof ResponseInterface) { - $this->outputBufferingEnd(); - - return $possibleResponse; - } - - if ($possibleResponse instanceof IncomingRequest || $possibleResponse instanceof CLIRequest) { - $this->request = $possibleResponse; - } - } - - $returned = $this->startController(); - - // Closure controller has run in startController(). - if (! is_callable($this->controller)) { - $controller = $this->createController(); - - if (! method_exists($controller, '_remap') && ! is_callable([$controller, $this->method], false)) { - throw PageNotFoundException::forMethodNotFound($this->method); - } - - // Is there a "post_controller_constructor" event? - Events::trigger('post_controller_constructor'); - - $returned = $this->runController($controller); - } else { - $this->benchmark->stop('controller_constructor'); - $this->benchmark->stop('controller'); - } - - // If $returned is a string, then the controller output something, - // probably a view, instead of echoing it directly. Send it along - // so it can be used with the output. - $this->gatherOutput($cacheConfig, $returned); - - if ($this->enableFilters) { - $filters = Services::filters(); - $filters->setResponse($this->response); - - // After filter debug toolbar requires 'total_execution'. - $this->totalTime = $this->benchmark->getElapsedTime('total_execution'); - - // Run "after" filters - $this->benchmark->start('after_filters'); - $response = $filters->run($uri, 'after'); - $this->benchmark->stop('after_filters'); - - if ($response instanceof ResponseInterface) { - $this->response = $response; - } - } - - // Skip unnecessary processing for special Responses. - if ( - ! $this->response instanceof DownloadResponse - && ! $this->response instanceof RedirectResponse - ) { - // Cache it without the performance metrics replaced - // so that we can have live speed updates along the way. - // Must be run after filters to preserve the Response headers. - $this->pageCache->make($this->request, $this->response); - - // Update the performance metrics - $body = $this->response->getBody(); - if ($body !== null) { - $output = $this->displayPerformanceMetrics($body); - $this->response->setBody($output); - } - - // Save our current URI as the previous URI in the session - // for safer, more accurate use with `previous_url()` helper function. - $this->storePreviousURL(current_url(true)); - } - - unset($uri); - - // Is there a post-system event? - Events::trigger('post_system'); - - return $this->response; - } - - /** - * You can load different configurations depending on your - * current environment. Setting the environment also influences - * things like logging and error reporting. - * - * This can be set to anything, but default usage is: - * - * development - * testing - * production - * - * @codeCoverageIgnore - * - * @return void - * - * @deprecated 4.4.0 No longer used. Moved to index.php and spark. - */ - protected function detectEnvironment() - { - // Make sure ENVIRONMENT isn't already set by other means. - if (! defined('ENVIRONMENT')) { - define('ENVIRONMENT', env('CI_ENVIRONMENT', 'production')); - } - } - - /** - * Load any custom boot files based upon the current environment. - * - * If no boot file exists, we shouldn't continue because something - * is wrong. At the very least, they should have error reporting setup. - * - * @return void - */ - protected function bootstrapEnvironment() - { - if (is_file(APPPATH . 'Config/Boot/' . ENVIRONMENT . '.php')) { - require_once APPPATH . 'Config/Boot/' . ENVIRONMENT . '.php'; - } else { - // @codeCoverageIgnoreStart - header('HTTP/1.1 503 Service Unavailable.', true, 503); - echo 'The application environment is not set correctly.'; - - exit(EXIT_ERROR); // EXIT_ERROR - // @codeCoverageIgnoreEnd - } - } - - /** - * Start the Benchmark - * - * The timer is used to display total script execution both in the - * debug toolbar, and potentially on the displayed page. - * - * @return void - */ - protected function startBenchmark() - { - if ($this->startTime === null) { - $this->startTime = microtime(true); - } - - $this->benchmark = Services::timer(); - $this->benchmark->start('total_execution', $this->startTime); - $this->benchmark->start('bootstrap'); - } - - /** - * Sets a Request object to be used for this request. - * Used when running certain tests. - * - * @param CLIRequest|IncomingRequest $request - * - * @return $this - */ - public function setRequest($request) - { - $this->request = $request; - - return $this; - } - - /** - * Get our Request object, (either IncomingRequest or CLIRequest). - * - * @return void - */ - protected function getRequestObject() - { - if ($this->request instanceof Request) { - return; - } - - if ($this->isPhpCli()) { - Services::createRequest($this->config, true); - } else { - Services::createRequest($this->config); - } - - $this->request = Services::request(); - } - - /** - * Get our Response object, and set some default values, including - * the HTTP protocol version and a default successful response. - * - * @return void - */ - protected function getResponseObject() - { - $this->response = Services::response($this->config); - - if ($this->isWeb()) { - $this->response->setProtocolVersion($this->request->getProtocolVersion()); - } - - // Assume success until proven otherwise. - $this->response->setStatusCode(200); - } - - /** - * Force Secure Site Access? If the config value 'forceGlobalSecureRequests' - * is true, will enforce that all requests to this site are made through - * HTTPS. Will redirect the user to the current page with HTTPS, as well - * as set the HTTP Strict Transport Security header for those browsers - * that support it. - * - * @param int $duration How long the Strict Transport Security - * should be enforced for this URL. - * - * @return void - */ - protected function forceSecureAccess($duration = 31_536_000) - { - if ($this->config->forceGlobalSecureRequests !== true) { - return; - } - - force_https($duration, $this->request, $this->response); - } - - /** - * Determines if a response has been cached for the given URI. - * - * @return false|ResponseInterface - * - * @throws Exception - * - * @deprecated 4.4.2 The parameter $config is deprecated. No longer used. - */ - public function displayCache(Cache $config) - { - $cachedResponse = $this->pageCache->get($this->request, $this->response); - if ($cachedResponse instanceof ResponseInterface) { - $this->response = $cachedResponse; - - $this->totalTime = $this->benchmark->getElapsedTime('total_execution'); - $output = $this->displayPerformanceMetrics($cachedResponse->getBody()); - $this->response->setBody($output); - - return $this->response; - } - - return false; - } - - /** - * Tells the app that the final output should be cached. - * - * @deprecated 4.4.0 Moved to ResponseCache::setTtl(). No longer used. - * - * @return void - */ - public static function cache(int $time) - { - static::$cacheTTL = $time; - } - - /** - * Caches the full response from the current request. Used for - * full-page caching for very high performance. - * - * @return bool - * - * @deprecated 4.4.0 No longer used. - */ - public function cachePage(Cache $config) - { - $headers = []; - - foreach ($this->response->headers() as $header) { - $headers[$header->getName()] = $header->getValueLine(); - } - - return cache()->save($this->generateCacheName($config), serialize(['headers' => $headers, 'output' => $this->output]), static::$cacheTTL); - } - - /** - * Returns an array with our basic performance stats collected. - */ - public function getPerformanceStats(): array - { - return [ - 'startTime' => $this->startTime, - 'totalTime' => $this->totalTime, - ]; - } - - /** - * Generates the cache name to use for our full-page caching. - * - * @deprecated 4.4.0 No longer used. - */ - protected function generateCacheName(Cache $config): string - { - if ($this->request instanceof CLIRequest) { - return md5($this->request->getPath()); - } - - $uri = clone $this->request->getUri(); - - $query = $config->cacheQueryString - ? $uri->getQuery(is_array($config->cacheQueryString) ? ['only' => $config->cacheQueryString] : []) - : ''; - - return md5($uri->setFragment('')->setQuery($query)); - } - - /** - * Replaces the elapsed_time tag. - */ - public function displayPerformanceMetrics(string $output): string - { - return str_replace('{elapsed_time}', (string) $this->totalTime, $output); - } - - /** - * Try to Route It - As it sounds like, works with the router to - * match a route against the current URI. If the route is a - * "redirect route", will also handle the redirect. - * - * @param RouteCollectionInterface|null $routes A collection interface to use in place - * of the config file. - * - * @return string|string[]|null Route filters, that is, the filters specified in the routes file - * - * @throws RedirectException - */ - protected function tryToRouteIt(?RouteCollectionInterface $routes = null) - { - if ($routes === null) { - $routes = Services::routes()->loadRoutes(); - } - - // $routes is defined in Config/Routes.php - $this->router = Services::router($routes, $this->request); - - $path = $this->determinePath(); - - $this->benchmark->stop('bootstrap'); - $this->benchmark->start('routing'); - - $this->outputBufferingStart(); - - $this->controller = $this->router->handle($path); - $this->method = $this->router->methodName(); - - // If a {locale} segment was matched in the final route, - // then we need to set the correct locale on our Request. - if ($this->router->hasLocale()) { - $this->request->setLocale($this->router->getLocale()); - } - - $this->benchmark->stop('routing'); - - // for backward compatibility - $multipleFiltersEnabled = config(Feature::class)->multipleFilters ?? false; - if (! $multipleFiltersEnabled) { - return $this->router->getFilter(); - } - - return $this->router->getFilters(); - } - - /** - * Determines the path to use for us to try to route to, based - * on the CLI/IncomingRequest path. - * - * @return string - */ - protected function determinePath() - { - return $this->path ?? - (method_exists($this->request, 'getPath') - ? $this->request->getPath() - : $this->request->getUri()->getPath()); - } - - /** - * Allows the request path to be set from outside the class, - * instead of relying on CLIRequest or IncomingRequest for the path. - * - * This is not used now. - * - * @return $this - * - * @deprecated No longer used. - */ - public function setPath(string $path) - { - $this->path = $path; - - return $this; - } - - /** - * Now that everything has been setup, this method attempts to run the - * controller method and make the script go. If it's not able to, will - * show the appropriate Page Not Found error. - * - * @return ResponseInterface|string|void - */ - protected function startController() - { - $this->benchmark->start('controller'); - $this->benchmark->start('controller_constructor'); - - // Is it routed to a Closure? - if (is_object($this->controller) && (get_class($this->controller) === 'Closure')) { - $controller = $this->controller; - - return $controller(...$this->router->params()); - } - - // No controller specified - we don't know what to do now. - if (! isset($this->controller)) { - throw PageNotFoundException::forEmptyController(); - } - - // Try to autoload the class - if (! class_exists($this->controller, true) || $this->method[0] === '_') { - throw PageNotFoundException::forControllerNotFound($this->controller, $this->method); - } - } - - /** - * Instantiates the controller class. - * - * @return Controller - */ - protected function createController() - { - assert(is_string($this->controller)); - - $class = new $this->controller(); - $class->initController($this->request, $this->response, Services::logger()); - - $this->benchmark->stop('controller_constructor'); - - return $class; - } - - /** - * Runs the controller, allowing for _remap methods to function. - * - * CI4 supports three types of requests: - * 1. Web: URI segments become parameters, sent to Controllers via Routes, - * output controlled by Headers to browser - * 2. PHP CLI: accessed by CLI via php public/index.php, arguments become URI segments, - * sent to Controllers via Routes, output varies - * - * @param Controller $class - * - * @return false|ResponseInterface|string|void - */ - protected function runController($class) - { - // This is a Web request or PHP CLI request - $params = $this->router->params(); - - $output = method_exists($class, '_remap') - ? $class->_remap($this->method, ...$params) - : $class->{$this->method}(...$params); - - $this->benchmark->stop('controller'); - - return $output; - } - - /** - * Displays a 404 Page Not Found error. If set, will try to - * call the 404Override controller/method that was set in routing config. - * - * @return ResponseInterface|void - */ - protected function display404errors(PageNotFoundException $e) - { - // Is there a 404 Override available? - if ($override = $this->router->get404Override()) { - $returned = null; - - if ($override instanceof Closure) { - echo $override($e->getMessage()); - } elseif (is_array($override)) { - $this->benchmark->start('controller'); - $this->benchmark->start('controller_constructor'); - - $this->controller = $override[0]; - $this->method = $override[1]; - - $controller = $this->createController(); - $returned = $this->runController($controller); - } - - unset($override); - - $cacheConfig = config(Cache::class); - $this->gatherOutput($cacheConfig, $returned); - - return $this->response; - } - - // Display 404 Errors - $this->response->setStatusCode($e->getCode()); - - $this->outputBufferingEnd(); - - // Throws new PageNotFoundException and remove exception message on production. - throw PageNotFoundException::forPageNotFound( - (ENVIRONMENT !== 'production' || ! $this->isWeb()) ? $e->getMessage() : null - ); - } - - /** - * Gathers the script output from the buffer, replaces some execution - * time tag in the output and displays the debug toolbar, if required. - * - * @param Cache|null $cacheConfig Deprecated. No longer used. - * @param ResponseInterface|string|null $returned - * - * @deprecated $cacheConfig is deprecated. - * - * @return void - */ - protected function gatherOutput(?Cache $cacheConfig = null, $returned = null) - { - $this->output = $this->outputBufferingEnd(); - - if ($returned instanceof DownloadResponse) { - $this->response = $returned; - - return; - } - // If the controller returned a response object, - // we need to grab the body from it so it can - // be added to anything else that might have been - // echoed already. - // We also need to save the instance locally - // so that any status code changes, etc, take place. - if ($returned instanceof ResponseInterface) { - $this->response = $returned; - $returned = $returned->getBody(); - } - - if (is_string($returned)) { - $this->output .= $returned; - } - - $this->response->setBody($this->output); - } - - /** - * If we have a session object to use, store the current URI - * as the previous URI. This is called just prior to sending the - * response to the client, and will make it available next request. - * - * This helps provider safer, more reliable previous_url() detection. - * - * @param string|URI $uri - * - * @return void - */ - public function storePreviousURL($uri) - { - // Ignore CLI requests - if (! $this->isWeb()) { - return; - } - // Ignore AJAX requests - if (method_exists($this->request, 'isAJAX') && $this->request->isAJAX()) { - return; - } - - // Ignore unroutable responses - if ($this->response instanceof DownloadResponse || $this->response instanceof RedirectResponse) { - return; - } - - // Ignore non-HTML responses - if (strpos($this->response->getHeaderLine('Content-Type'), 'text/html') === false) { - return; - } - - // This is mainly needed during testing... - if (is_string($uri)) { - $uri = new URI($uri); - } - - if (isset($_SESSION)) { - session()->set('_ci_previous_url', URI::createURIString( - $uri->getScheme(), - $uri->getAuthority(), - $uri->getPath(), - $uri->getQuery(), - $uri->getFragment() - )); - } - } - - /** - * Modifies the Request Object to use a different method if a POST - * variable called _method is found. - * - * @return void - */ - public function spoofRequestMethod() - { - // Only works with POSTED forms - if (strtolower($this->request->getMethod()) !== 'post') { - return; - } - - $method = $this->request->getPost('_method'); - - if ($method === null) { - return; - } - - // Only allows PUT, PATCH, DELETE - if (in_array(strtoupper($method), ['PUT', 'PATCH', 'DELETE'], true)) { - $this->request = $this->request->setMethod($method); - } - } - - /** - * Sends the output of this request back to the client. - * This is what they've been waiting for! - * - * @return void - */ - protected function sendResponse() - { - $this->response->send(); - } - - /** - * Exits the application, setting the exit code for CLI-based applications - * that might be watching. - * - * Made into a separate method so that it can be mocked during testing - * without actually stopping script execution. - * - * @param int $code - * - * @deprecated 4.4.0 No longer Used. Moved to index.php. - * - * @return void - */ - protected function callExit($code) - { - exit($code); // @codeCoverageIgnore - } - - /** - * Sets the app context. - * - * @phpstan-param 'php-cli'|'web' $context - * - * @return $this - */ - public function setContext(string $context) - { - $this->context = $context; - - return $this; - } - - protected function outputBufferingStart(): void - { - $this->bufferLevel = ob_get_level(); - ob_start(); - } - - protected function outputBufferingEnd(): string - { - $buffer = ''; - - while (ob_get_level() > $this->bufferLevel) { - $buffer .= ob_get_contents(); - ob_end_clean(); - } - - return $buffer; - } -} diff --git a/system4.4.6/Commands/Cache/ClearCache.php b/system4.4.6/Commands/Cache/ClearCache.php deleted file mode 100644 index 79fab9df..00000000 --- a/system4.4.6/Commands/Cache/ClearCache.php +++ /dev/null @@ -1,88 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Cache; - -use CodeIgniter\Cache\CacheFactory; -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; -use Config\Cache; - -/** - * Clears current cache. - */ -class ClearCache extends BaseCommand -{ - /** - * Command grouping. - * - * @var string - */ - protected $group = 'Cache'; - - /** - * The Command's name - * - * @var string - */ - protected $name = 'cache:clear'; - - /** - * the Command's short description - * - * @var string - */ - protected $description = 'Clears the current system caches.'; - - /** - * the Command's usage - * - * @var string - */ - protected $usage = 'cache:clear [<driver>]'; - - /** - * the Command's Arguments - * - * @var array<string, string> - */ - protected $arguments = [ - 'driver' => 'The cache driver to use', - ]; - - /** - * Clears the cache - */ - public function run(array $params) - { - $config = config(Cache::class); - $handler = $params[0] ?? $config->handler; - - if (! array_key_exists($handler, $config->validHandlers)) { - CLI::error($handler . ' is not a valid cache handler.'); - - return; - } - - $config->handler = $handler; - $cache = CacheFactory::getHandler($config); - - if (! $cache->clean()) { - // @codeCoverageIgnoreStart - CLI::error('Error while clearing the cache.'); - - return; - // @codeCoverageIgnoreEnd - } - - CLI::write(CLI::color('Cache cleared.', 'green')); - } -} diff --git a/system4.4.6/Commands/Cache/InfoCache.php b/system4.4.6/Commands/Cache/InfoCache.php deleted file mode 100644 index 1dc2504b..00000000 --- a/system4.4.6/Commands/Cache/InfoCache.php +++ /dev/null @@ -1,89 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Cache; - -use CodeIgniter\Cache\CacheFactory; -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; -use CodeIgniter\I18n\Time; -use Config\Cache; - -/** - * Shows information on the cache. - */ -class InfoCache extends BaseCommand -{ - /** - * Command grouping. - * - * @var string - */ - protected $group = 'Cache'; - - /** - * The Command's name - * - * @var string - */ - protected $name = 'cache:info'; - - /** - * the Command's short description - * - * @var string - */ - protected $description = 'Shows file cache information in the current system.'; - - /** - * the Command's usage - * - * @var string - */ - protected $usage = 'cache:info'; - - /** - * Clears the cache - */ - public function run(array $params) - { - $config = config(Cache::class); - helper('number'); - - if ($config->handler !== 'file') { - CLI::error('This command only supports the file cache handler.'); - - return; - } - - $cache = CacheFactory::getHandler($config); - $caches = $cache->getCacheInfo(); - $tbody = []; - - foreach ($caches as $key => $field) { - $tbody[] = [ - $key, - clean_path($field['server_path']), - number_to_size($field['size']), - Time::createFromTimestamp($field['date']), - ]; - } - - $thead = [ - CLI::color('Name', 'green'), - CLI::color('Server Path', 'green'), - CLI::color('Size', 'green'), - CLI::color('Date', 'green'), - ]; - - CLI::table($tbody, $thead); - } -} diff --git a/system4.4.6/Commands/Database/CreateDatabase.php b/system4.4.6/Commands/Database/CreateDatabase.php deleted file mode 100644 index d103d97f..00000000 --- a/system4.4.6/Commands/Database/CreateDatabase.php +++ /dev/null @@ -1,152 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Database; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; -use CodeIgniter\Config\Factories; -use CodeIgniter\Database\SQLite3\Connection; -use Config\Database; -use Throwable; - -/** - * Creates a new database. - */ -class CreateDatabase extends BaseCommand -{ - /** - * The group the command is lumped under - * when listing commands. - * - * @var string - */ - protected $group = 'Database'; - - /** - * The Command's name - * - * @var string - */ - protected $name = 'db:create'; - - /** - * the Command's short description - * - * @var string - */ - protected $description = 'Create a new database schema.'; - - /** - * the Command's usage - * - * @var string - */ - protected $usage = 'db:create <db_name> [options]'; - - /** - * The Command's arguments - * - * @var array<string, string> - */ - protected $arguments = [ - 'db_name' => 'The database name to use', - ]; - - /** - * The Command's options - * - * @var array<string, string> - */ - protected $options = [ - '--ext' => 'File extension of the database file for SQLite3. Can be `db` or `sqlite`. Defaults to `db`.', - ]; - - /** - * Creates a new database. - */ - public function run(array $params) - { - $name = array_shift($params); - - if (empty($name)) { - $name = CLI::prompt('Database name', null, 'required'); // @codeCoverageIgnore - } - - try { - $config = config(Database::class); - - // Set to an empty database to prevent connection errors. - $group = ENVIRONMENT === 'testing' ? 'tests' : $config->defaultGroup; - - $config->{$group}['database'] = ''; - - $db = Database::connect(); - - // Special SQLite3 handling - if ($db instanceof Connection) { - $ext = $params['ext'] ?? CLI::getOption('ext') ?? 'db'; - - if (! in_array($ext, ['db', 'sqlite'], true)) { - $ext = CLI::prompt('Please choose a valid file extension', ['db', 'sqlite']); // @codeCoverageIgnore - } - - if ($name !== ':memory:') { - $name = str_replace(['.db', '.sqlite'], '', $name) . ".{$ext}"; - } - - $config->{$group}['DBDriver'] = 'SQLite3'; - $config->{$group}['database'] = $name; - - if ($name !== ':memory:') { - $dbName = strpos($name, DIRECTORY_SEPARATOR) === false ? WRITEPATH . $name : $name; - - if (is_file($dbName)) { - CLI::error("Database \"{$dbName}\" already exists.", 'light_gray', 'red'); - CLI::newLine(); - - return; - } - - unset($dbName); - } - - // Connect to new SQLite3 to create new database - $db = Database::connect(null, false); - $db->connect(); - - if (! is_file($db->getDatabase()) && $name !== ':memory:') { - // @codeCoverageIgnoreStart - CLI::error('Database creation failed.', 'light_gray', 'red'); - CLI::newLine(); - - return; - // @codeCoverageIgnoreEnd - } - } elseif (! Database::forge()->createDatabase($name)) { - // @codeCoverageIgnoreStart - CLI::error('Database creation failed.', 'light_gray', 'red'); - CLI::newLine(); - - return; - // @codeCoverageIgnoreEnd - } - - CLI::write("Database \"{$name}\" successfully created.", 'green'); - CLI::newLine(); - } catch (Throwable $e) { - $this->showError($e); - } finally { - Factories::reset('config'); - Database::connect(null, false); - } - } -} diff --git a/system4.4.6/Commands/Database/Migrate.php b/system4.4.6/Commands/Database/Migrate.php deleted file mode 100644 index 11933517..00000000 --- a/system4.4.6/Commands/Database/Migrate.php +++ /dev/null @@ -1,102 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Database; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; -use Config\Services; -use Throwable; - -/** - * Runs all new migrations. - */ -class Migrate extends BaseCommand -{ - /** - * The group the command is lumped under - * when listing commands. - * - * @var string - */ - protected $group = 'Database'; - - /** - * The Command's name - * - * @var string - */ - protected $name = 'migrate'; - - /** - * the Command's short description - * - * @var string - */ - protected $description = 'Locates and runs all new migrations against the database.'; - - /** - * the Command's usage - * - * @var string - */ - protected $usage = 'migrate [options]'; - - /** - * the Command's Options - * - * @var array<string, string> - */ - protected $options = [ - '-n' => 'Set migration namespace', - '-g' => 'Set database group', - '--all' => 'Set for all namespaces, will ignore (-n) option', - ]; - - /** - * Ensures that all migrations have been run. - */ - public function run(array $params) - { - $runner = Services::migrations(); - $runner->clearCliMessages(); - - CLI::write(lang('Migrations.latest'), 'yellow'); - - $namespace = $params['n'] ?? CLI::getOption('n'); - $group = $params['g'] ?? CLI::getOption('g'); - - try { - if (array_key_exists('all', $params) || CLI::getOption('all')) { - $runner->setNamespace(null); - } elseif ($namespace) { - $runner->setNamespace($namespace); - } - - if (! $runner->latest($group)) { - CLI::error(lang('Migrations.generalFault'), 'light_gray', 'red'); // @codeCoverageIgnore - } - - $messages = $runner->getCliMessages(); - - foreach ($messages as $message) { - CLI::write($message); - } - - CLI::write(lang('Migrations.migrated'), 'green'); - - // @codeCoverageIgnoreStart - } catch (Throwable $e) { - $this->showError($e); - // @codeCoverageIgnoreEnd - } - } -} diff --git a/system4.4.6/Commands/Database/MigrateRefresh.php b/system4.4.6/Commands/Database/MigrateRefresh.php deleted file mode 100644 index f683219e..00000000 --- a/system4.4.6/Commands/Database/MigrateRefresh.php +++ /dev/null @@ -1,87 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Database; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; - -/** - * Does a rollback followed by a latest to refresh the current state - * of the database. - */ -class MigrateRefresh extends BaseCommand -{ - /** - * The group the command is lumped under - * when listing commands. - * - * @var string - */ - protected $group = 'Database'; - - /** - * The Command's name - * - * @var string - */ - protected $name = 'migrate:refresh'; - - /** - * the Command's short description - * - * @var string - */ - protected $description = 'Does a rollback followed by a latest to refresh the current state of the database.'; - - /** - * the Command's usage - * - * @var string - */ - protected $usage = 'migrate:refresh [options]'; - - /** - * the Command's Options - * - * @var array<string, string> - */ - protected $options = [ - '-n' => 'Set migration namespace', - '-g' => 'Set database group', - '--all' => 'Set latest for all namespace, will ignore (-n) option', - '-f' => 'Force command - this option allows you to bypass the confirmation question when running this command in a production environment', - ]; - - /** - * Does a rollback followed by a latest to refresh the current state - * of the database. - */ - public function run(array $params) - { - $params['b'] = 0; - - if (ENVIRONMENT === 'production') { - // @codeCoverageIgnoreStart - $force = array_key_exists('f', $params) || CLI::getOption('f'); - - if (! $force && CLI::prompt(lang('Migrations.refreshConfirm'), ['y', 'n']) === 'n') { - return; - } - - $params['f'] = null; - // @codeCoverageIgnoreEnd - } - - $this->call('migrate:rollback', $params); - $this->call('migrate', $params); - } -} diff --git a/system4.4.6/Commands/Database/MigrateRollback.php b/system4.4.6/Commands/Database/MigrateRollback.php deleted file mode 100644 index 2df223c0..00000000 --- a/system4.4.6/Commands/Database/MigrateRollback.php +++ /dev/null @@ -1,104 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Database; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; -use Config\Services; -use Throwable; - -/** - * Runs all of the migrations in reverse order, until they have - * all been unapplied. - */ -class MigrateRollback extends BaseCommand -{ - /** - * The group the command is lumped under - * when listing commands. - * - * @var string - */ - protected $group = 'Database'; - - /** - * The Command's name - * - * @var string - */ - protected $name = 'migrate:rollback'; - - /** - * the Command's short description - * - * @var string - */ - protected $description = 'Runs the "down" method for all migrations in the last batch.'; - - /** - * the Command's usage - * - * @var string - */ - protected $usage = 'migrate:rollback [options]'; - - /** - * the Command's Options - * - * @var array<string, string> - */ - protected $options = [ - '-b' => 'Specify a batch to roll back to; e.g. "3" to return to batch #3', - '-f' => 'Force command - this option allows you to bypass the confirmation question when running this command in a production environment', - ]; - - /** - * Runs all of the migrations in reverse order, until they have - * all been unapplied. - */ - public function run(array $params) - { - if (ENVIRONMENT === 'production') { - // @codeCoverageIgnoreStart - $force = array_key_exists('f', $params) || CLI::getOption('f'); - - if (! $force && CLI::prompt(lang('Migrations.rollBackConfirm'), ['y', 'n']) === 'n') { - return; - } - // @codeCoverageIgnoreEnd - } - - $runner = Services::migrations(); - - try { - $batch = $params['b'] ?? CLI::getOption('b') ?? $runner->getLastBatch() - 1; - CLI::write(lang('Migrations.rollingBack') . ' ' . $batch, 'yellow'); - - if (! $runner->regress($batch)) { - CLI::error(lang('Migrations.generalFault'), 'light_gray', 'red'); // @codeCoverageIgnore - } - - $messages = $runner->getCliMessages(); - - foreach ($messages as $message) { - CLI::write($message); - } - - CLI::write('Done rolling back migrations.', 'green'); - - // @codeCoverageIgnoreStart - } catch (Throwable $e) { - $this->showError($e); - // @codeCoverageIgnoreEnd - } - } -} diff --git a/system4.4.6/Commands/Database/MigrateStatus.php b/system4.4.6/Commands/Database/MigrateStatus.php deleted file mode 100644 index af3cbacf..00000000 --- a/system4.4.6/Commands/Database/MigrateStatus.php +++ /dev/null @@ -1,167 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Database; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; -use Config\Services; - -/** - * Displays a list of all migrations and whether they've been run or not. - * - * @see \CodeIgniter\Commands\Database\MigrateStatusTest - */ -class MigrateStatus extends BaseCommand -{ - /** - * The group the command is lumped under - * when listing commands. - * - * @var string - */ - protected $group = 'Database'; - - /** - * The Command's name - * - * @var string - */ - protected $name = 'migrate:status'; - - /** - * the Command's short description - * - * @var string - */ - protected $description = 'Displays a list of all migrations and whether they\'ve been run or not.'; - - /** - * the Command's usage - * - * @var string - */ - protected $usage = 'migrate:status [options]'; - - /** - * the Command's Options - * - * @var array<string, string> - */ - protected $options = [ - '-g' => 'Set database group', - ]; - - /** - * Namespaces to ignore when looking for migrations. - * - * @var string[] - */ - protected $ignoredNamespaces = [ - 'CodeIgniter', - 'Config', - 'Kint', - 'Laminas\ZendFrameworkBridge', - 'Laminas\Escaper', - 'Psr\Log', - ]; - - /** - * Displays a list of all migrations and whether they've been run or not. - * - * @param array<string, mixed> $params - */ - public function run(array $params) - { - $runner = Services::migrations(); - $paramGroup = $params['g'] ?? CLI::getOption('g'); - - // Get all namespaces - $namespaces = Services::autoloader()->getNamespace(); - - // Collection of migration status - $status = []; - - foreach (array_keys($namespaces) as $namespace) { - if (ENVIRONMENT !== 'testing') { - // Make Tests\\Support discoverable for testing - $this->ignoredNamespaces[] = 'Tests\Support'; // @codeCoverageIgnore - } - - if (in_array($namespace, $this->ignoredNamespaces, true)) { - continue; - } - - if (APP_NAMESPACE !== 'App' && $namespace === 'App') { - continue; // @codeCoverageIgnore - } - - $migrations = $runner->findNamespaceMigrations($namespace); - - if (empty($migrations)) { - continue; - } - - $runner->setNamespace($namespace); - $history = $runner->getHistory((string) $paramGroup); - ksort($migrations); - - foreach ($migrations as $uid => $migration) { - $migrations[$uid]->name = mb_substr($migration->name, mb_strpos($migration->name, $uid . '_')); - - $date = '---'; - $group = '---'; - $batch = '---'; - - foreach ($history as $row) { - // @codeCoverageIgnoreStart - if ($runner->getObjectUid($row) !== $migration->uid) { - continue; - } - - $date = date('Y-m-d H:i:s', $row->time); - $group = $row->group; - $batch = $row->batch; - // @codeCoverageIgnoreEnd - } - - $status[] = [ - $namespace, - $migration->version, - $migration->name, - $group, - $date, - $batch, - ]; - } - } - - if (! $status) { - // @codeCoverageIgnoreStart - CLI::error(lang('Migrations.noneFound'), 'light_gray', 'red'); - CLI::newLine(); - - return; - // @codeCoverageIgnoreEnd - } - - $headers = [ - CLI::color(lang('Migrations.namespace'), 'yellow'), - CLI::color(lang('Migrations.version'), 'yellow'), - CLI::color(lang('Migrations.filename'), 'yellow'), - CLI::color(lang('Migrations.group'), 'yellow'), - CLI::color(str_replace(': ', '', lang('Migrations.on')), 'yellow'), - CLI::color(lang('Migrations.batch'), 'yellow'), - ]; - - CLI::table($status, $headers); - } -} diff --git a/system4.4.6/Commands/Database/Seed.php b/system4.4.6/Commands/Database/Seed.php deleted file mode 100644 index adfdd0a5..00000000 --- a/system4.4.6/Commands/Database/Seed.php +++ /dev/null @@ -1,82 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Database; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; -use CodeIgniter\Database\Seeder; -use Config\Database; -use Throwable; - -/** - * Runs the specified Seeder file to populate the database - * with some data. - */ -class Seed extends BaseCommand -{ - /** - * The group the command is lumped under - * when listing commands. - * - * @var string - */ - protected $group = 'Database'; - - /** - * The Command's name - * - * @var string - */ - protected $name = 'db:seed'; - - /** - * the Command's short description - * - * @var string - */ - protected $description = 'Runs the specified seeder to populate known data into the database.'; - - /** - * the Command's usage - * - * @var string - */ - protected $usage = 'db:seed <seeder_name>'; - - /** - * the Command's Arguments - * - * @var array<string, string> - */ - protected $arguments = [ - 'seeder_name' => 'The seeder name to run', - ]; - - /** - * Passes to Seeder to populate the database. - */ - public function run(array $params) - { - $seeder = new Seeder(new Database()); - $seedName = array_shift($params); - - if (empty($seedName)) { - $seedName = CLI::prompt(lang('Migrations.migSeeder'), null, 'required'); // @codeCoverageIgnore - } - - try { - $seeder->call($seedName); - } catch (Throwable $e) { - $this->showError($e); - } - } -} diff --git a/system4.4.6/Commands/Database/ShowTableInfo.php b/system4.4.6/Commands/Database/ShowTableInfo.php deleted file mode 100644 index 4c8f1bfd..00000000 --- a/system4.4.6/Commands/Database/ShowTableInfo.php +++ /dev/null @@ -1,285 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Database; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; -use CodeIgniter\Database\BaseConnection; -use Config\Database; - -/** - * Get table data if it exists in the database. - * - * @see \CodeIgniter\Commands\Database\ShowTableInfoTest - */ -class ShowTableInfo extends BaseCommand -{ - /** - * The group the command is lumped under - * when listing commands. - * - * @var string - */ - protected $group = 'Database'; - - /** - * The Command's name - * - * @var string - */ - protected $name = 'db:table'; - - /** - * the Command's short description - * - * @var string - */ - protected $description = 'Retrieves information on the selected table.'; - - /** - * the Command's usage - * - * @var string - */ - protected $usage = <<<'EOL' - db:table [<table_name>] [options] - - Examples: - db:table --show - db:table --metadata - db:table my_table --metadata - db:table my_table - db:table my_table --limit-rows 5 --limit-field-value 10 --desc - EOL; - - /** - * The Command's arguments - * - * @var array<string, string> - */ - protected $arguments = [ - 'table_name' => 'The table name to show info', - ]; - - /** - * The Command's options - * - * @var array<string, string> - */ - protected $options = [ - '--show' => 'Lists the names of all database tables.', - '--metadata' => 'Retrieves list containing field information.', - '--desc' => 'Sorts the table rows in DESC order.', - '--limit-rows' => 'Limits the number of rows. Default: 10.', - '--limit-field-value' => 'Limits the length of field values. Default: 15.', - ]; - - /** - * @var list<list<int|string>> Table Data. - */ - private array $tbody; - - private BaseConnection $db; - - /** - * @var bool Sort the table rows in DESC order or not. - */ - private bool $sortDesc = false; - - private string $DBPrefix; - - public function run(array $params) - { - $this->db = Database::connect(); - $this->DBPrefix = $this->db->getPrefix(); - - $tables = $this->db->listTables(); - - if (array_key_exists('desc', $params)) { - $this->sortDesc = true; - } - - if ($tables === []) { - CLI::error('Database has no tables!', 'light_gray', 'red'); - CLI::newLine(); - - return; - } - - if (array_key_exists('show', $params)) { - $this->showAllTables($tables); - - return; - } - - $tableName = $params[0] ?? null; - $limitRows = (int) ($params['limit-rows'] ?? 10); - $limitFieldValue = (int) ($params['limit-field-value'] ?? 15); - - while (! in_array($tableName, $tables, true)) { - $tableNameNo = CLI::promptByKey( - ['Here is the list of your database tables:', 'Which table do you want to see?'], - $tables, - 'required' - ); - CLI::newLine(); - - $tableName = $tables[$tableNameNo] ?? null; - } - - if (array_key_exists('metadata', $params)) { - $this->showFieldMetaData($tableName); - - return; - } - - $this->showDataOfTable($tableName, $limitRows, $limitFieldValue); - } - - private function removeDBPrefix(): void - { - $this->db->setPrefix(''); - } - - private function restoreDBPrefix(): void - { - $this->db->setPrefix($this->DBPrefix); - } - - private function showDataOfTable(string $tableName, int $limitRows, int $limitFieldValue) - { - CLI::write("Data of Table \"{$tableName}\":", 'black', 'yellow'); - CLI::newLine(); - - $this->removeDBPrefix(); - $thead = $this->db->getFieldNames($tableName); - $this->restoreDBPrefix(); - - // If there is a field named `id`, sort by it. - $sortField = null; - if (in_array('id', $thead, true)) { - $sortField = 'id'; - } - - $this->tbody = $this->makeTableRows($tableName, $limitRows, $limitFieldValue, $sortField); - CLI::table($this->tbody, $thead); - } - - private function showAllTables(array $tables) - { - CLI::write('The following is a list of the names of all database tables:', 'black', 'yellow'); - CLI::newLine(); - - $thead = ['ID', 'Table Name', 'Num of Rows', 'Num of Fields']; - $this->tbody = $this->makeTbodyForShowAllTables($tables); - - CLI::table($this->tbody, $thead); - CLI::newLine(); - } - - private function makeTbodyForShowAllTables(array $tables): array - { - $this->removeDBPrefix(); - - foreach ($tables as $id => $tableName) { - $table = $this->db->protectIdentifiers($tableName); - $db = $this->db->query("SELECT * FROM {$table}"); - - $this->tbody[] = [ - $id + 1, - $tableName, - $db->getNumRows(), - $db->getFieldCount(), - ]; - } - - $this->restoreDBPrefix(); - - if ($this->sortDesc) { - krsort($this->tbody); - } - - return $this->tbody; - } - - private function makeTableRows( - string $tableName, - int $limitRows, - int $limitFieldValue, - ?string $sortField = null - ): array { - $this->tbody = []; - - $this->removeDBPrefix(); - $builder = $this->db->table($tableName); - $builder->limit($limitRows); - if ($sortField !== null) { - $builder->orderBy($sortField, $this->sortDesc ? 'DESC' : 'ASC'); - } - $rows = $builder->get()->getResultArray(); - $this->restoreDBPrefix(); - - foreach ($rows as $row) { - $row = array_map( - static fn ($item): string => mb_strlen((string) $item) > $limitFieldValue - ? mb_substr((string) $item, 0, $limitFieldValue) . '...' - : (string) $item, - $row - ); - $this->tbody[] = $row; - } - - if ($sortField === null && $this->sortDesc) { - krsort($this->tbody); - } - - return $this->tbody; - } - - private function showFieldMetaData(string $tableName): void - { - CLI::write("List of Metadata Information in Table \"{$tableName}\":", 'black', 'yellow'); - CLI::newLine(); - - $thead = ['Field Name', 'Type', 'Max Length', 'Nullable', 'Default', 'Primary Key']; - - $this->removeDBPrefix(); - $fields = $this->db->getFieldData($tableName); - $this->restoreDBPrefix(); - - foreach ($fields as $row) { - $this->tbody[] = [ - $row->name, - $row->type, - $row->max_length, - isset($row->nullable) ? $this->setYesOrNo($row->nullable) : 'n/a', - $row->default, - isset($row->primary_key) ? $this->setYesOrNo($row->primary_key) : 'n/a', - ]; - } - - if ($this->sortDesc) { - krsort($this->tbody); - } - - CLI::table($this->tbody, $thead); - } - - private function setYesOrNo(bool $fieldValue): string - { - if ($fieldValue) { - return CLI::color('Yes', 'green'); - } - - return CLI::color('No', 'red'); - } -} diff --git a/system4.4.6/Commands/Encryption/GenerateKey.php b/system4.4.6/Commands/Encryption/GenerateKey.php deleted file mode 100644 index 419ae6ef..00000000 --- a/system4.4.6/Commands/Encryption/GenerateKey.php +++ /dev/null @@ -1,199 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Encryption; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; -use CodeIgniter\Config\DotEnv; -use CodeIgniter\Encryption\Encryption; - -/** - * Generates a new encryption key. - */ -class GenerateKey extends BaseCommand -{ - /** - * The Command's group. - * - * @var string - */ - protected $group = 'Encryption'; - - /** - * The Command's name. - * - * @var string - */ - protected $name = 'key:generate'; - - /** - * The Command's usage. - * - * @var string - */ - protected $usage = 'key:generate [options]'; - - /** - * The Command's short description. - * - * @var string - */ - protected $description = 'Generates a new encryption key and writes it in an `.env` file.'; - - /** - * The command's options - * - * @var array<string, string> - */ - protected $options = [ - '--force' => 'Force overwrite existing key in `.env` file.', - '--length' => 'The length of the random string that should be returned in bytes. Defaults to 32.', - '--prefix' => 'Prefix to prepend to encoded key (either hex2bin or base64). Defaults to hex2bin.', - '--show' => 'Shows the generated key in the terminal instead of storing in the `.env` file.', - ]; - - /** - * Actually execute the command. - */ - public function run(array $params) - { - $prefix = $params['prefix'] ?? CLI::getOption('prefix'); - - if (in_array($prefix, [null, true], true)) { - $prefix = 'hex2bin'; - } elseif (! in_array($prefix, ['hex2bin', 'base64'], true)) { - $prefix = CLI::prompt('Please provide a valid prefix to use.', ['hex2bin', 'base64'], 'required'); // @codeCoverageIgnore - } - - $length = $params['length'] ?? CLI::getOption('length'); - - if (in_array($length, [null, true], true)) { - $length = 32; - } - - $encodedKey = $this->generateRandomKey($prefix, $length); - - if (array_key_exists('show', $params) || (bool) CLI::getOption('show')) { - CLI::write($encodedKey, 'yellow'); - CLI::newLine(); - - return; - } - - if (! $this->setNewEncryptionKey($encodedKey, $params)) { - CLI::write('Error in setting new encryption key to .env file.', 'light_gray', 'red'); - CLI::newLine(); - - return; - } - - // force DotEnv to reload the new env vars - putenv('encryption.key'); - unset($_ENV['encryption.key'], $_SERVER['encryption.key']); - $dotenv = new DotEnv(ROOTPATH); - $dotenv->load(); - - CLI::write('Application\'s new encryption key was successfully set.', 'green'); - CLI::newLine(); - } - - /** - * Generates a key and encodes it. - */ - protected function generateRandomKey(string $prefix, int $length): string - { - $key = Encryption::createKey($length); - - if ($prefix === 'hex2bin') { - return 'hex2bin:' . bin2hex($key); - } - - return 'base64:' . base64_encode($key); - } - - /** - * Sets the new encryption key in your .env file. - */ - protected function setNewEncryptionKey(string $key, array $params): bool - { - $currentKey = env('encryption.key', ''); - - if ($currentKey !== '' && ! $this->confirmOverwrite($params)) { - // Not yet testable since it requires keyboard input - return false; // @codeCoverageIgnore - } - - return $this->writeNewEncryptionKeyToFile($currentKey, $key); - } - - /** - * Checks whether to overwrite existing encryption key. - */ - protected function confirmOverwrite(array $params): bool - { - return (array_key_exists('force', $params) || CLI::getOption('force')) || CLI::prompt('Overwrite existing key?', ['n', 'y']) === 'y'; - } - - /** - * Writes the new encryption key to .env file. - */ - protected function writeNewEncryptionKeyToFile(string $oldKey, string $newKey): bool - { - $baseEnv = ROOTPATH . 'env'; - $envFile = ROOTPATH . '.env'; - - if (! is_file($envFile)) { - if (! is_file($baseEnv)) { - CLI::write('Both default shipped `env` file and custom `.env` are missing.', 'yellow'); - CLI::write('Here\'s your new key instead: ' . CLI::color($newKey, 'yellow')); - CLI::newLine(); - - return false; - } - - copy($baseEnv, $envFile); - } - - $oldFileContents = (string) file_get_contents($envFile); - $replacementKey = "\nencryption.key = {$newKey}"; - - if (strpos($oldFileContents, 'encryption.key') === false) { - return file_put_contents($envFile, $replacementKey, FILE_APPEND) !== false; - } - - $newFileContents = preg_replace($this->keyPattern($oldKey), $replacementKey, $oldFileContents); - - if ($newFileContents === $oldFileContents) { - $newFileContents = preg_replace( - '/^[#\s]*encryption.key[=\s]*(?:hex2bin\:[a-f0-9]{64}|base64\:(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?)$/m', - $replacementKey, - $oldFileContents - ); - } - - return file_put_contents($envFile, $newFileContents) !== false; - } - - /** - * Get the regex of the current encryption key. - */ - protected function keyPattern(string $oldKey): string - { - $escaped = preg_quote($oldKey, '/'); - - if ($escaped !== '') { - $escaped = "[{$escaped}]*"; - } - - return "/^[#\\s]*encryption.key[=\\s]*{$escaped}$/m"; - } -} diff --git a/system4.4.6/Commands/Generators/CellGenerator.php b/system4.4.6/Commands/Generators/CellGenerator.php deleted file mode 100644 index 358bacc0..00000000 --- a/system4.4.6/Commands/Generators/CellGenerator.php +++ /dev/null @@ -1,98 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Generators; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\GeneratorTrait; - -/** - * Generates a skeleton Cell and its view. - */ -class CellGenerator extends BaseCommand -{ - use GeneratorTrait; - - /** - * The Command's Group - * - * @var string - */ - protected $group = 'Generators'; - - /** - * The Command's Name - * - * @var string - */ - protected $name = 'make:cell'; - - /** - * The Command's Description - * - * @var string - */ - protected $description = 'Generates a new Controlled Cell file and its view.'; - - /** - * The Command's Usage - * - * @var string - */ - protected $usage = 'make:cell <name> [options]'; - - /** - * The Command's Arguments - * - * @var array<string, string> - */ - protected $arguments = [ - 'name' => 'The Controlled Cell class name.', - ]; - - /** - * The Command's Options - * - * @var array<string, string> - */ - protected $options = [ - '--namespace' => 'Set root namespace. Default: "APP_NAMESPACE".', - '--force' => 'Force overwrite existing file.', - ]; - - /** - * Actually execute a command. - */ - public function run(array $params) - { - $this->component = 'Cell'; - $this->directory = 'Cells'; - - $params = array_merge($params, ['suffix' => null]); - - $this->template = 'cell.tpl.php'; - $this->classNameLang = 'CLI.generator.className.cell'; - $this->generateClass($params); - - $this->name = 'make:cell_view'; - $this->template = 'cell_view.tpl.php'; - $this->classNameLang = 'CLI.generator.viewName.cell'; - - $className = $this->qualifyClassName(); - $viewName = decamelize(class_basename($className)); - $viewName = preg_replace('/([a-z][a-z0-9_\/\\\\]+)(_cell)$/i', '$1', $viewName) ?? $viewName; - $namespace = substr($className, 0, strrpos($className, '\\') + 1); - - $this->generateView($namespace . $viewName, $params); - - return 0; - } -} diff --git a/system4.4.6/Commands/Generators/CommandGenerator.php b/system4.4.6/Commands/Generators/CommandGenerator.php deleted file mode 100644 index b844666a..00000000 --- a/system4.4.6/Commands/Generators/CommandGenerator.php +++ /dev/null @@ -1,119 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Generators; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; -use CodeIgniter\CLI\GeneratorTrait; - -/** - * Generates a skeleton command file. - */ -class CommandGenerator extends BaseCommand -{ - use GeneratorTrait; - - /** - * The Command's Group - * - * @var string - */ - protected $group = 'Generators'; - - /** - * The Command's Name - * - * @var string - */ - protected $name = 'make:command'; - - /** - * The Command's Description - * - * @var string - */ - protected $description = 'Generates a new spark command.'; - - /** - * The Command's Usage - * - * @var string - */ - protected $usage = 'make:command <name> [options]'; - - /** - * The Command's Arguments - * - * @var array<string, string> - */ - protected $arguments = [ - 'name' => 'The command class name.', - ]; - - /** - * The Command's Options - * - * @var array<string, string> - */ - protected $options = [ - '--command' => 'The command name. Default: "command:name"', - '--type' => 'The command type. Options [basic, generator]. Default: "basic".', - '--group' => 'The command group. Default: [basic -> "App", generator -> "Generators"].', - '--namespace' => 'Set root namespace. Default: "APP_NAMESPACE".', - '--suffix' => 'Append the component title to the class name (e.g. User => UserCommand).', - '--force' => 'Force overwrite existing file.', - ]; - - /** - * Actually execute a command. - */ - public function run(array $params) - { - $this->component = 'Command'; - $this->directory = 'Commands'; - $this->template = 'command.tpl.php'; - - $this->classNameLang = 'CLI.generator.className.command'; - $this->execute($params); - } - - /** - * Prepare options and do the necessary replacements. - */ - protected function prepare(string $class): string - { - $command = $this->getOption('command'); - $group = $this->getOption('group'); - $type = $this->getOption('type'); - - $command = is_string($command) ? $command : 'command:name'; - $type = is_string($type) ? $type : 'basic'; - - if (! in_array($type, ['basic', 'generator'], true)) { - // @codeCoverageIgnoreStart - $type = CLI::prompt(lang('CLI.generator.commandType'), ['basic', 'generator'], 'required'); - CLI::newLine(); - // @codeCoverageIgnoreEnd - } - - if (! is_string($group)) { - $group = $type === 'generator' ? 'Generators' : 'App'; - } - - return $this->parseTemplate( - $class, - ['{group}', '{command}'], - [$group, $command], - ['type' => $type] - ); - } -} diff --git a/system4.4.6/Commands/Generators/ConfigGenerator.php b/system4.4.6/Commands/Generators/ConfigGenerator.php deleted file mode 100644 index a83a9671..00000000 --- a/system4.4.6/Commands/Generators/ConfigGenerator.php +++ /dev/null @@ -1,98 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Generators; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\GeneratorTrait; - -/** - * Generates a skeleton config file. - */ -class ConfigGenerator extends BaseCommand -{ - use GeneratorTrait; - - /** - * The Command's Group - * - * @var string - */ - protected $group = 'Generators'; - - /** - * The Command's Name - * - * @var string - */ - protected $name = 'make:config'; - - /** - * The Command's Description - * - * @var string - */ - protected $description = 'Generates a new config file.'; - - /** - * The Command's Usage - * - * @var string - */ - protected $usage = 'make:config <name> [options]'; - - /** - * The Command's Arguments - * - * @var array<string, string> - */ - protected $arguments = [ - 'name' => 'The config class name.', - ]; - - /** - * The Command's Options - * - * @var array<string, string> - */ - protected $options = [ - '--namespace' => 'Set root namespace. Default: "APP_NAMESPACE".', - '--suffix' => 'Append the component title to the class name (e.g. User => UserConfig).', - '--force' => 'Force overwrite existing file.', - ]; - - /** - * Actually execute a command. - */ - public function run(array $params) - { - $this->component = 'Config'; - $this->directory = 'Config'; - $this->template = 'config.tpl.php'; - - $this->classNameLang = 'CLI.generator.className.config'; - $this->execute($params); - } - - /** - * Prepare options and do the necessary replacements. - */ - protected function prepare(string $class): string - { - $namespace = $this->getOption('namespace') ?? APP_NAMESPACE; - - if ($namespace === APP_NAMESPACE) { - $class = substr($class, strlen($namespace . '\\')); - } - - return $this->parseTemplate($class); - } -} diff --git a/system4.4.6/Commands/Generators/ControllerGenerator.php b/system4.4.6/Commands/Generators/ControllerGenerator.php deleted file mode 100644 index 2cf912b1..00000000 --- a/system4.4.6/Commands/Generators/ControllerGenerator.php +++ /dev/null @@ -1,134 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Generators; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; -use CodeIgniter\CLI\GeneratorTrait; -use CodeIgniter\Controller; -use CodeIgniter\RESTful\ResourceController; -use CodeIgniter\RESTful\ResourcePresenter; - -/** - * Generates a skeleton controller file. - */ -class ControllerGenerator extends BaseCommand -{ - use GeneratorTrait; - - /** - * The Command's Group - * - * @var string - */ - protected $group = 'Generators'; - - /** - * The Command's Name - * - * @var string - */ - protected $name = 'make:controller'; - - /** - * The Command's Description - * - * @var string - */ - protected $description = 'Generates a new controller file.'; - - /** - * The Command's Usage - * - * @var string - */ - protected $usage = 'make:controller <name> [options]'; - - /** - * The Command's Arguments - * - * @var array<string, string> - */ - protected $arguments = [ - 'name' => 'The controller class name.', - ]; - - /** - * The Command's Options - * - * @var array<string, string> - */ - protected $options = [ - '--bare' => 'Extends from CodeIgniter\Controller instead of BaseController.', - '--restful' => 'Extends from a RESTful resource, Options: [controller, presenter]. Default: "controller".', - '--namespace' => 'Set root namespace. Default: "APP_NAMESPACE".', - '--suffix' => 'Append the component title to the class name (e.g. User => UserController).', - '--force' => 'Force overwrite existing file.', - ]; - - /** - * Actually execute a command. - */ - public function run(array $params) - { - $this->component = 'Controller'; - $this->directory = 'Controllers'; - $this->template = 'controller.tpl.php'; - - $this->classNameLang = 'CLI.generator.className.controller'; - $this->execute($params); - } - - /** - * Prepare options and do the necessary replacements. - */ - protected function prepare(string $class): string - { - $bare = $this->getOption('bare'); - $rest = $this->getOption('restful'); - - $useStatement = trim(APP_NAMESPACE, '\\') . '\Controllers\BaseController'; - $extends = 'BaseController'; - - // Gets the appropriate parent class to extend. - if ($bare || $rest) { - if ($bare) { - $useStatement = Controller::class; - $extends = 'Controller'; - } elseif ($rest) { - $rest = is_string($rest) ? $rest : 'controller'; - - if (! in_array($rest, ['controller', 'presenter'], true)) { - // @codeCoverageIgnoreStart - $rest = CLI::prompt(lang('CLI.generator.parentClass'), ['controller', 'presenter'], 'required'); - CLI::newLine(); - // @codeCoverageIgnoreEnd - } - - if ($rest === 'controller') { - $useStatement = ResourceController::class; - $extends = 'ResourceController'; - } elseif ($rest === 'presenter') { - $useStatement = ResourcePresenter::class; - $extends = 'ResourcePresenter'; - } - } - } - - return $this->parseTemplate( - $class, - ['{useStatement}', '{extends}'], - [$useStatement, $extends], - ['type' => $rest] - ); - } -} diff --git a/system4.4.6/Commands/Generators/EntityGenerator.php b/system4.4.6/Commands/Generators/EntityGenerator.php deleted file mode 100644 index bd20daf5..00000000 --- a/system4.4.6/Commands/Generators/EntityGenerator.php +++ /dev/null @@ -1,84 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Generators; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\GeneratorTrait; - -/** - * Generates a skeleton Entity file. - */ -class EntityGenerator extends BaseCommand -{ - use GeneratorTrait; - - /** - * The Command's Group - * - * @var string - */ - protected $group = 'Generators'; - - /** - * The Command's Name - * - * @var string - */ - protected $name = 'make:entity'; - - /** - * The Command's Description - * - * @var string - */ - protected $description = 'Generates a new entity file.'; - - /** - * The Command's Usage - * - * @var string - */ - protected $usage = 'make:entity <name> [options]'; - - /** - * The Command's Arguments - * - * @var array<string, string> - */ - protected $arguments = [ - 'name' => 'The entity class name.', - ]; - - /** - * The Command's Options - * - * @var array<string, string> - */ - protected $options = [ - '--namespace' => 'Set root namespace. Default: "APP_NAMESPACE".', - '--suffix' => 'Append the component title to the class name (e.g. User => UserEntity).', - '--force' => 'Force overwrite existing file.', - ]; - - /** - * Actually execute a command. - */ - public function run(array $params) - { - $this->component = 'Entity'; - $this->directory = 'Entities'; - $this->template = 'entity.tpl.php'; - - $this->classNameLang = 'CLI.generator.className.entity'; - $this->execute($params); - } -} diff --git a/system4.4.6/Commands/Generators/FilterGenerator.php b/system4.4.6/Commands/Generators/FilterGenerator.php deleted file mode 100644 index 620bee5a..00000000 --- a/system4.4.6/Commands/Generators/FilterGenerator.php +++ /dev/null @@ -1,84 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Generators; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\GeneratorTrait; - -/** - * Generates a skeleton Filter file. - */ -class FilterGenerator extends BaseCommand -{ - use GeneratorTrait; - - /** - * The Command's Group - * - * @var string - */ - protected $group = 'Generators'; - - /** - * The Command's Name - * - * @var string - */ - protected $name = 'make:filter'; - - /** - * The Command's Description - * - * @var string - */ - protected $description = 'Generates a new filter file.'; - - /** - * The Command's Usage - * - * @var string - */ - protected $usage = 'make:filter <name> [options]'; - - /** - * The Command's Arguments - * - * @var array<string, string> - */ - protected $arguments = [ - 'name' => 'The filter class name.', - ]; - - /** - * The Command's Options - * - * @var array<string, string> - */ - protected $options = [ - '--namespace' => 'Set root namespace. Default: "APP_NAMESPACE".', - '--suffix' => 'Append the component title to the class name (e.g. User => UserFilter).', - '--force' => 'Force overwrite existing file.', - ]; - - /** - * Actually execute a command. - */ - public function run(array $params) - { - $this->component = 'Filter'; - $this->directory = 'Filters'; - $this->template = 'filter.tpl.php'; - - $this->classNameLang = 'CLI.generator.className.filter'; - $this->execute($params); - } -} diff --git a/system4.4.6/Commands/Generators/MigrateCreate.php b/system4.4.6/Commands/Generators/MigrateCreate.php deleted file mode 100644 index a2fa6bf7..00000000 --- a/system4.4.6/Commands/Generators/MigrateCreate.php +++ /dev/null @@ -1,90 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Generators; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; - -/** - * Deprecated class for the migration creation command. - * - * @deprecated Use make:migration instead. - * - * @codeCoverageIgnore - */ -class MigrateCreate extends BaseCommand -{ - /** - * The group the command is lumped under - * when listing commands. - * - * @var string - */ - protected $group = 'Generators'; - - /** - * The Command's name - * - * @var string - */ - protected $name = 'migrate:create'; - - /** - * The Command's short description - * - * @var string - */ - protected $description = '[DEPRECATED] Creates a new migration file. Please use "make:migration" instead.'; - - /** - * The Command's usage - * - * @var string - */ - protected $usage = 'migrate:create <name> [options]'; - - /** - * The Command's arguments. - * - * @var array<string, string> - */ - protected $arguments = [ - 'name' => 'The migration file name.', - ]; - - /** - * The Command's options. - * - * @var array<string, string> - */ - protected $options = [ - '--namespace' => 'Set root namespace. Defaults to APP_NAMESPACE', - '--force' => 'Force overwrite existing files.', - ]; - - /** - * Actually execute a command. - */ - public function run(array $params) - { - // Resolve arguments before passing to make:migration - $params[0] ??= CLI::getSegment(2); - - $params['namespace'] ??= CLI::getOption('namespace') ?? APP_NAMESPACE; - - if (array_key_exists('force', $params) || CLI::getOption('force')) { - $params['force'] = null; - } - - $this->call('make:migration', $params); - } -} diff --git a/system4.4.6/Commands/Generators/MigrationGenerator.php b/system4.4.6/Commands/Generators/MigrationGenerator.php deleted file mode 100644 index 52f9e6e5..00000000 --- a/system4.4.6/Commands/Generators/MigrationGenerator.php +++ /dev/null @@ -1,129 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Generators; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; -use CodeIgniter\CLI\GeneratorTrait; -use Config\Database; -use Config\Migrations; -use Config\Session as SessionConfig; - -/** - * Generates a skeleton migration file. - */ -class MigrationGenerator extends BaseCommand -{ - use GeneratorTrait; - - /** - * The Command's Group - * - * @var string - */ - protected $group = 'Generators'; - - /** - * The Command's Name - * - * @var string - */ - protected $name = 'make:migration'; - - /** - * The Command's Description - * - * @var string - */ - protected $description = 'Generates a new migration file.'; - - /** - * The Command's Usage - * - * @var string - */ - protected $usage = 'make:migration <name> [options]'; - - /** - * The Command's Arguments - * - * @var array<string, string> - */ - protected $arguments = [ - 'name' => 'The migration class name.', - ]; - - /** - * The Command's Options - * - * @var array<string, string> - */ - protected $options = [ - '--session' => 'Generates the migration file for database sessions.', - '--table' => 'Table name to use for database sessions. Default: "ci_sessions".', - '--dbgroup' => 'Database group to use for database sessions. Default: "default".', - '--namespace' => 'Set root namespace. Default: "APP_NAMESPACE".', - '--suffix' => 'Append the component title to the class name (e.g. User => UserMigration).', - ]; - - /** - * Actually execute a command. - */ - public function run(array $params) - { - $this->component = 'Migration'; - $this->directory = 'Database\Migrations'; - $this->template = 'migration.tpl.php'; - - if (array_key_exists('session', $params) || CLI::getOption('session')) { - $table = $params['table'] ?? CLI::getOption('table') ?? 'ci_sessions'; - $params[0] = "_create_{$table}_table"; - } - - $this->classNameLang = 'CLI.generator.className.migration'; - $this->execute($params); - } - - /** - * Prepare options and do the necessary replacements. - */ - protected function prepare(string $class): string - { - $data = []; - $data['session'] = false; - - if ($this->getOption('session')) { - $table = $this->getOption('table'); - $DBGroup = $this->getOption('dbgroup'); - - $data['session'] = true; - $data['table'] = is_string($table) ? $table : 'ci_sessions'; - $data['DBGroup'] = is_string($DBGroup) ? $DBGroup : 'default'; - $data['DBDriver'] = config(Database::class)->{$data['DBGroup']}['DBDriver']; - - /** @var SessionConfig|null $session */ - $session = config(SessionConfig::class); - - $data['matchIP'] = $session->matchIP; - } - - return $this->parseTemplate($class, [], [], $data); - } - - /** - * Change file basename before saving. - */ - protected function basename(string $filename): string - { - return gmdate(config(Migrations::class)->timestampFormat) . basename($filename); - } -} diff --git a/system4.4.6/Commands/Generators/ModelGenerator.php b/system4.4.6/Commands/Generators/ModelGenerator.php deleted file mode 100644 index f4946a94..00000000 --- a/system4.4.6/Commands/Generators/ModelGenerator.php +++ /dev/null @@ -1,133 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Generators; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; -use CodeIgniter\CLI\GeneratorTrait; - -/** - * Generates a skeleton Model file. - */ -class ModelGenerator extends BaseCommand -{ - use GeneratorTrait; - - /** - * The Command's Group - * - * @var string - */ - protected $group = 'Generators'; - - /** - * The Command's Name - * - * @var string - */ - protected $name = 'make:model'; - - /** - * The Command's Description - * - * @var string - */ - protected $description = 'Generates a new model file.'; - - /** - * The Command's Usage - * - * @var string - */ - protected $usage = 'make:model <name> [options]'; - - /** - * The Command's Arguments - * - * @var array<string, string> - */ - protected $arguments = [ - 'name' => 'The model class name.', - ]; - - /** - * The Command's Options - * - * @var array<string, string> - */ - protected $options = [ - '--table' => 'Supply a table name. Default: "the lowercased plural of the class name".', - '--dbgroup' => 'Database group to use. Default: "default".', - '--return' => 'Return type, Options: [array, object, entity]. Default: "array".', - '--namespace' => 'Set root namespace. Default: "APP_NAMESPACE".', - '--suffix' => 'Append the component title to the class name (e.g. User => UserModel).', - '--force' => 'Force overwrite existing file.', - ]; - - /** - * Actually execute a command. - */ - public function run(array $params) - { - $this->component = 'Model'; - $this->directory = 'Models'; - $this->template = 'model.tpl.php'; - - $this->classNameLang = 'CLI.generator.className.model'; - $this->execute($params); - } - - /** - * Prepare options and do the necessary replacements. - */ - protected function prepare(string $class): string - { - $table = $this->getOption('table'); - $dbGroup = $this->getOption('dbgroup'); - $return = $this->getOption('return'); - - $baseClass = class_basename($class); - - if (preg_match('/^(\S+)Model$/i', $baseClass, $match) === 1) { - $baseClass = $match[1]; - } - - $table = is_string($table) ? $table : plural(strtolower($baseClass)); - $return = is_string($return) ? $return : 'array'; - - if (! in_array($return, ['array', 'object', 'entity'], true)) { - // @codeCoverageIgnoreStart - $return = CLI::prompt(lang('CLI.generator.returnType'), ['array', 'object', 'entity'], 'required'); - CLI::newLine(); - // @codeCoverageIgnoreEnd - } - - if ($return === 'entity') { - $return = str_replace('Models', 'Entities', $class); - - if (preg_match('/^(\S+)Model$/i', $return, $match) === 1) { - $return = $match[1]; - - if ($this->getOption('suffix')) { - $return .= 'Entity'; - } - } - - $return = '\\' . trim($return, '\\') . '::class'; - $this->call('make:entity', array_merge([$baseClass], $this->params)); - } else { - $return = "'{$return}'"; - } - - return $this->parseTemplate($class, ['{dbGroup}', '{table}', '{return}'], [$dbGroup, $table, $return], compact('dbGroup')); - } -} diff --git a/system4.4.6/Commands/Generators/ScaffoldGenerator.php b/system4.4.6/Commands/Generators/ScaffoldGenerator.php deleted file mode 100644 index ef34b92e..00000000 --- a/system4.4.6/Commands/Generators/ScaffoldGenerator.php +++ /dev/null @@ -1,121 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Generators; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; -use CodeIgniter\CLI\GeneratorTrait; - -/** - * Generates a complete set of scaffold files. - */ -class ScaffoldGenerator extends BaseCommand -{ - use GeneratorTrait; - - /** - * The Command's Group - * - * @var string - */ - protected $group = 'Generators'; - - /** - * The Command's Name - * - * @var string - */ - protected $name = 'make:scaffold'; - - /** - * The Command's Description - * - * @var string - */ - protected $description = 'Generates a complete set of scaffold files.'; - - /** - * The Command's Usage - * - * @var string - */ - protected $usage = 'make:scaffold <name> [options]'; - - /** - * The Command's Arguments - * - * @var array<string, string> - */ - protected $arguments = [ - 'name' => 'The class name', - ]; - - /** - * The Command's Options - * - * @var array<string, string> - */ - protected $options = [ - '--bare' => 'Add the "--bare" option to controller component.', - '--restful' => 'Add the "--restful" option to controller component.', - '--table' => 'Add the "--table" option to the model component.', - '--dbgroup' => 'Add the "--dbgroup" option to model component.', - '--return' => 'Add the "--return" option to the model component.', - '--namespace' => 'Set root namespace. Default: "APP_NAMESPACE".', - '--suffix' => 'Append the component title to the class name.', - '--force' => 'Force overwrite existing file.', - ]; - - /** - * Actually execute a command. - */ - public function run(array $params) - { - $this->params = $params; - - $options = []; - - if ($this->getOption('namespace')) { - $options['namespace'] = $this->getOption('namespace'); - } - - if ($this->getOption('suffix')) { - $options['suffix'] = null; - } - - if ($this->getOption('force')) { - $options['force'] = null; - } - - $controllerOpts = []; - - if ($this->getOption('bare')) { - $controllerOpts['bare'] = null; - } elseif ($this->getOption('restful')) { - $controllerOpts['restful'] = $this->getOption('restful'); - } - - $modelOpts = [ - 'table' => $this->getOption('table'), - 'dbgroup' => $this->getOption('dbgroup'), - 'return' => $this->getOption('return'), - ]; - - $class = $params[0] ?? CLI::getSegment(2); - - // Call those commands! - $this->call('make:controller', array_merge([$class], $controllerOpts, $options)); - $this->call('make:model', array_merge([$class], $modelOpts, $options)); - $this->call('make:migration', array_merge([$class], $options)); - $this->call('make:seeder', array_merge([$class], $options)); - } -} diff --git a/system4.4.6/Commands/Generators/SeederGenerator.php b/system4.4.6/Commands/Generators/SeederGenerator.php deleted file mode 100644 index e60525ae..00000000 --- a/system4.4.6/Commands/Generators/SeederGenerator.php +++ /dev/null @@ -1,84 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Generators; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\GeneratorTrait; - -/** - * Generates a skeleton seeder file. - */ -class SeederGenerator extends BaseCommand -{ - use GeneratorTrait; - - /** - * The Command's Group - * - * @var string - */ - protected $group = 'Generators'; - - /** - * The Command's Name - * - * @var string - */ - protected $name = 'make:seeder'; - - /** - * The Command's Description - * - * @var string - */ - protected $description = 'Generates a new seeder file.'; - - /** - * The Command's Usage - * - * @var string - */ - protected $usage = 'make:seeder <name> [options]'; - - /** - * The Command's Arguments - * - * @var array<string, string> - */ - protected $arguments = [ - 'name' => 'The seeder class name.', - ]; - - /** - * The Command's Options - * - * @var array<string, string> - */ - protected $options = [ - '--namespace' => 'Set root namespace. Default: "APP_NAMESPACE".', - '--suffix' => 'Append the component title to the class name (e.g. User => UserSeeder).', - '--force' => 'Force overwrite existing file.', - ]; - - /** - * Actually execute a command. - */ - public function run(array $params) - { - $this->component = 'Seeder'; - $this->directory = 'Database\Seeds'; - $this->template = 'seeder.tpl.php'; - - $this->classNameLang = 'CLI.generator.className.seeder'; - $this->execute($params); - } -} diff --git a/system4.4.6/Commands/Generators/SessionMigrationGenerator.php b/system4.4.6/Commands/Generators/SessionMigrationGenerator.php deleted file mode 100644 index cb7da589..00000000 --- a/system4.4.6/Commands/Generators/SessionMigrationGenerator.php +++ /dev/null @@ -1,113 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Generators; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; -use CodeIgniter\CLI\GeneratorTrait; -use Config\App; -use Config\Migrations; - -/** - * Generates a migration file for database sessions. - * - * @deprecated Use `make:migration --session` instead. - * - * @codeCoverageIgnore - */ -class SessionMigrationGenerator extends BaseCommand -{ - use GeneratorTrait; - - /** - * The Command's Group - * - * @var string - */ - protected $group = 'Generators'; - - /** - * The Command's Name - * - * @var string - */ - protected $name = 'session:migration'; - - /** - * The Command's Description - * - * @var string - */ - protected $description = '[DEPRECATED] Generates the migration file for database sessions, Please use "make:migration --session" instead.'; - - /** - * The Command's Usage - * - * @var string - */ - protected $usage = 'session:migration [options]'; - - /** - * The Command's Options - * - * @var array<string, string> - */ - protected $options = [ - '-t' => 'Supply a table name.', - '-g' => 'Database group to use. Default: "default".', - ]; - - /** - * Actually execute a command. - */ - public function run(array $params) - { - $this->component = 'Migration'; - $this->directory = 'Database\Migrations'; - $this->template = 'migration.tpl.php'; - - $table = 'ci_sessions'; - - if (array_key_exists('t', $params) || CLI::getOption('t')) { - $table = $params['t'] ?? CLI::getOption('t'); - } - - $params[0] = "_create_{$table}_table"; - - $this->execute($params); - } - - /** - * Performs the necessary replacements. - */ - protected function prepare(string $class): string - { - $data = []; - $data['session'] = true; - $data['table'] = $this->getOption('t'); - $data['DBGroup'] = $this->getOption('g'); - $data['matchIP'] = config(App::class)->sessionMatchIP ?? false; - - $data['table'] = is_string($data['table']) ? $data['table'] : 'ci_sessions'; - $data['DBGroup'] = is_string($data['DBGroup']) ? $data['DBGroup'] : 'default'; - - return $this->parseTemplate($class, [], [], $data); - } - - /** - * Change file basename before saving. - */ - protected function basename(string $filename): string - { - return gmdate(config(Migrations::class)->timestampFormat) . basename($filename); - } -} diff --git a/system4.4.6/Commands/Generators/ValidationGenerator.php b/system4.4.6/Commands/Generators/ValidationGenerator.php deleted file mode 100644 index 1b2efb8d..00000000 --- a/system4.4.6/Commands/Generators/ValidationGenerator.php +++ /dev/null @@ -1,84 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Generators; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\GeneratorTrait; - -/** - * Generates a skeleton Validation file. - */ -class ValidationGenerator extends BaseCommand -{ - use GeneratorTrait; - - /** - * The Command's Group - * - * @var string - */ - protected $group = 'Generators'; - - /** - * The Command's Name - * - * @var string - */ - protected $name = 'make:validation'; - - /** - * The Command's Description - * - * @var string - */ - protected $description = 'Generates a new validation file.'; - - /** - * The Command's Usage - * - * @var string - */ - protected $usage = 'make:validation <name> [options]'; - - /** - * The Command's Arguments - * - * @var array<string, string> - */ - protected $arguments = [ - 'name' => 'The validation class name.', - ]; - - /** - * The Command's Options - * - * @var array<string, string> - */ - protected $options = [ - '--namespace' => 'Set root namespace. Default: "APP_NAMESPACE".', - '--suffix' => 'Append the component title to the class name (e.g. User => UserValidation).', - '--force' => 'Force overwrite existing file.', - ]; - - /** - * Actually execute a command. - */ - public function run(array $params) - { - $this->component = 'Validation'; - $this->directory = 'Validation'; - $this->template = 'validation.tpl.php'; - - $this->classNameLang = 'CLI.generator.className.validation'; - $this->execute($params); - } -} diff --git a/system4.4.6/Commands/Generators/Views/cell.tpl.php b/system4.4.6/Commands/Generators/Views/cell.tpl.php deleted file mode 100644 index f20c0785..00000000 --- a/system4.4.6/Commands/Generators/Views/cell.tpl.php +++ /dev/null @@ -1,10 +0,0 @@ -<@php - -namespace {namespace}; - -use CodeIgniter\View\Cells\Cell; - -class {class} extends Cell -{ - // -} diff --git a/system4.4.6/Commands/Generators/Views/cell_view.tpl.php b/system4.4.6/Commands/Generators/Views/cell_view.tpl.php deleted file mode 100644 index 9866dc2e..00000000 --- a/system4.4.6/Commands/Generators/Views/cell_view.tpl.php +++ /dev/null @@ -1,3 +0,0 @@ -<div> - <!-- Your HTML here --> -</div> diff --git a/system4.4.6/Commands/Generators/Views/command.tpl.php b/system4.4.6/Commands/Generators/Views/command.tpl.php deleted file mode 100644 index bfbdcc4a..00000000 --- a/system4.4.6/Commands/Generators/Views/command.tpl.php +++ /dev/null @@ -1,76 +0,0 @@ -<@php - -namespace {namespace}; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; -<?php if ($type === 'generator'): ?> -use CodeIgniter\CLI\GeneratorTrait; -<?php endif ?> - -class {class} extends BaseCommand -{ -<?php if ($type === 'generator'): ?> - use GeneratorTrait; - -<?php endif ?> - /** - * The Command's Group - * - * @var string - */ - protected $group = '{group}'; - - /** - * The Command's Name - * - * @var string - */ - protected $name = '{command}'; - - /** - * The Command's Description - * - * @var string - */ - protected $description = ''; - - /** - * The Command's Usage - * - * @var string - */ - protected $usage = '{command} [arguments] [options]'; - - /** - * The Command's Arguments - * - * @var array - */ - protected $arguments = []; - - /** - * The Command's Options - * - * @var array - */ - protected $options = []; - - /** - * Actually execute a command. - * - * @param array $params - */ - public function run(array $params) - { -<?php if ($type === 'generator'): ?> - $this->component = 'Command'; - $this->directory = 'Commands'; - $this->template = 'command.tpl.php'; - - $this->execute($params); -<?php else: ?> - // -<?php endif ?> - } -} diff --git a/system4.4.6/Commands/Generators/Views/config.tpl.php b/system4.4.6/Commands/Generators/Views/config.tpl.php deleted file mode 100644 index 31c60cb5..00000000 --- a/system4.4.6/Commands/Generators/Views/config.tpl.php +++ /dev/null @@ -1,10 +0,0 @@ -<@php - -namespace {namespace}; - -use CodeIgniter\Config\BaseConfig; - -class {class} extends BaseConfig -{ - // -} diff --git a/system4.4.6/Commands/Generators/Views/controller.tpl.php b/system4.4.6/Commands/Generators/Views/controller.tpl.php deleted file mode 100644 index 514de05b..00000000 --- a/system4.4.6/Commands/Generators/Views/controller.tpl.php +++ /dev/null @@ -1,186 +0,0 @@ -<@php - -namespace {namespace}; - -use {useStatement}; -use CodeIgniter\HTTP\ResponseInterface; - -class {class} extends {extends} -{ -<?php if ($type === 'controller'): ?> - /** - * Return an array of resource objects, themselves in array format. - * - * @return ResponseInterface - */ - public function index() - { - // - } - - /** - * Return the properties of a resource object. - * - * @param int|string|null $id - * - * @return ResponseInterface - */ - public function show($id = null) - { - // - } - - /** - * Return a new resource object, with default properties. - * - * @return ResponseInterface - */ - public function new() - { - // - } - - /** - * Create a new resource object, from "posted" parameters. - * - * @return ResponseInterface - */ - public function create() - { - // - } - - /** - * Return the editable properties of a resource object. - * - * @param int|string|null $id - * - * @return ResponseInterface - */ - public function edit($id = null) - { - // - } - - /** - * Add or update a model resource, from "posted" properties. - * - * @param int|string|null $id - * - * @return ResponseInterface - */ - public function update($id = null) - { - // - } - - /** - * Delete the designated resource object from the model. - * - * @param int|string|null $id - * - * @return ResponseInterface - */ - public function delete($id = null) - { - // - } -<?php elseif ($type === 'presenter'): ?> - /** - * Present a view of resource objects. - * - * @return ResponseInterface - */ - public function index() - { - // - } - - /** - * Present a view to present a specific resource object. - * - * @param int|string|null $id - * - * @return ResponseInterface - */ - public function show($id = null) - { - // - } - - /** - * Present a view to present a new single resource object. - * - * @return ResponseInterface - */ - public function new() - { - // - } - - /** - * Process the creation/insertion of a new resource object. - * This should be a POST. - * - * @return ResponseInterface - */ - public function create() - { - // - } - - /** - * Present a view to edit the properties of a specific resource object. - * - * @param int|string|null $id - * - * @return ResponseInterface - */ - public function edit($id = null) - { - // - } - - /** - * Process the updating, full or partial, of a specific resource object. - * This should be a POST. - * - * @param int|string|null $id - * - * @return ResponseInterface - */ - public function update($id = null) - { - // - } - - /** - * Present a view to confirm the deletion of a specific resource object. - * - * @param int|string|null $id - * - * @return ResponseInterface - */ - public function remove($id = null) - { - // - } - - /** - * Process the deletion of a specific resource object. - * - * @param int|string|null $id - * - * @return ResponseInterface - */ - public function delete($id = null) - { - // - } -<?php else: ?> - public function index() - { - // - } -<?php endif ?> -} diff --git a/system4.4.6/Commands/Generators/Views/entity.tpl.php b/system4.4.6/Commands/Generators/Views/entity.tpl.php deleted file mode 100644 index c74c776f..00000000 --- a/system4.4.6/Commands/Generators/Views/entity.tpl.php +++ /dev/null @@ -1,12 +0,0 @@ -<@php - -namespace {namespace}; - -use CodeIgniter\Entity\Entity; - -class {class} extends Entity -{ - protected $datamap = []; - protected $dates = ['created_at', 'updated_at', 'deleted_at']; - protected $casts = []; -} diff --git a/system4.4.6/Commands/Generators/Views/filter.tpl.php b/system4.4.6/Commands/Generators/Views/filter.tpl.php deleted file mode 100644 index 767ac0bd..00000000 --- a/system4.4.6/Commands/Generators/Views/filter.tpl.php +++ /dev/null @@ -1,47 +0,0 @@ -<@php - -namespace {namespace}; - -use CodeIgniter\Filters\FilterInterface; -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\ResponseInterface; - -class {class} implements FilterInterface -{ - /** - * Do whatever processing this filter needs to do. - * By default it should not return anything during - * normal execution. However, when an abnormal state - * is found, it should return an instance of - * CodeIgniter\HTTP\Response. If it does, script - * execution will end and that Response will be - * sent back to the client, allowing for error pages, - * redirects, etc. - * - * @param RequestInterface $request - * @param array|null $arguments - * - * @return RequestInterface|ResponseInterface|string|void - */ - public function before(RequestInterface $request, $arguments = null) - { - // - } - - /** - * Allows After filters to inspect and modify the response - * object as needed. This method does not allow any way - * to stop execution of other after filters, short of - * throwing an Exception or Error. - * - * @param RequestInterface $request - * @param ResponseInterface $response - * @param array|null $arguments - * - * @return ResponseInterface|void - */ - public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) - { - // - } -} diff --git a/system4.4.6/Commands/Generators/Views/migration.tpl.php b/system4.4.6/Commands/Generators/Views/migration.tpl.php deleted file mode 100644 index 321895e6..00000000 --- a/system4.4.6/Commands/Generators/Views/migration.tpl.php +++ /dev/null @@ -1,50 +0,0 @@ -<@php - -namespace {namespace}; - -use CodeIgniter\Database\Migration; - -class {class} extends Migration -{ -<?php if ($session): ?> - protected $DBGroup = '<?= $DBGroup ?>'; - - public function up() - { - $this->forge->addField([ - 'id' => ['type' => 'VARCHAR', 'constraint' => 128, 'null' => false], -<?php if ($DBDriver === 'MySQLi'): ?> - 'ip_address' => ['type' => 'VARCHAR', 'constraint' => 45, 'null' => false], - 'timestamp timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL', - 'data' => ['type' => 'BLOB', 'null' => false], - <?php elseif ($DBDriver === 'Postgre'): ?> - 'ip_address inet NOT NULL', - 'timestamp timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL', - "data bytea DEFAULT '' NOT NULL", -<?php endif; ?> - ]); -<?php if ($matchIP) : ?> - $this->forge->addKey(['id', 'ip_address'], true); -<?php else: ?> - $this->forge->addKey('id', true); -<?php endif ?> - $this->forge->addKey('timestamp'); - $this->forge->createTable('<?= $table ?>', true); - } - - public function down() - { - $this->forge->dropTable('<?= $table ?>', true); - } -<?php else: ?> - public function up() - { - // - } - - public function down() - { - // - } -<?php endif ?> -} diff --git a/system4.4.6/Commands/Generators/Views/model.tpl.php b/system4.4.6/Commands/Generators/Views/model.tpl.php deleted file mode 100644 index 72509cdb..00000000 --- a/system4.4.6/Commands/Generators/Views/model.tpl.php +++ /dev/null @@ -1,45 +0,0 @@ -<@php - -namespace {namespace}; - -use CodeIgniter\Model; - -class {class} extends Model -{ -<?php if (is_string($dbGroup)): ?> - protected $DBGroup = '{dbGroup}'; -<?php endif; ?> - protected $table = '{table}'; - protected $primaryKey = 'id'; - protected $useAutoIncrement = true; - protected $returnType = {return}; - protected $useSoftDeletes = false; - protected $protectFields = true; - protected $allowedFields = []; - - protected bool $allowEmptyInserts = false; - - // Dates - protected $useTimestamps = false; - protected $dateFormat = 'datetime'; - protected $createdField = 'created_at'; - protected $updatedField = 'updated_at'; - protected $deletedField = 'deleted_at'; - - // Validation - protected $validationRules = []; - protected $validationMessages = []; - protected $skipValidation = false; - protected $cleanValidationRules = true; - - // Callbacks - protected $allowCallbacks = true; - protected $beforeInsert = []; - protected $afterInsert = []; - protected $beforeUpdate = []; - protected $afterUpdate = []; - protected $beforeFind = []; - protected $afterFind = []; - protected $beforeDelete = []; - protected $afterDelete = []; -} diff --git a/system4.4.6/Commands/Generators/Views/seeder.tpl.php b/system4.4.6/Commands/Generators/Views/seeder.tpl.php deleted file mode 100644 index 6f216280..00000000 --- a/system4.4.6/Commands/Generators/Views/seeder.tpl.php +++ /dev/null @@ -1,13 +0,0 @@ -<@php - -namespace {namespace}; - -use CodeIgniter\Database\Seeder; - -class {class} extends Seeder -{ - public function run() - { - // - } -} diff --git a/system4.4.6/Commands/Generators/Views/validation.tpl.php b/system4.4.6/Commands/Generators/Views/validation.tpl.php deleted file mode 100644 index e040a748..00000000 --- a/system4.4.6/Commands/Generators/Views/validation.tpl.php +++ /dev/null @@ -1,11 +0,0 @@ -<@php - -namespace {namespace}; - -class {class} -{ - // public function custom_rule(): bool - // { - // return true; - // } -} diff --git a/system4.4.6/Commands/Help.php b/system4.4.6/Commands/Help.php deleted file mode 100644 index 338a5c86..00000000 --- a/system4.4.6/Commands/Help.php +++ /dev/null @@ -1,85 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands; - -use CodeIgniter\CLI\BaseCommand; - -/** - * CI Help command for the spark script. - * - * Lists the basic usage information for the spark script, - * and provides a way to list help for other commands. - */ -class Help extends BaseCommand -{ - /** - * The group the command is lumped under - * when listing commands. - * - * @var string - */ - protected $group = 'CodeIgniter'; - - /** - * The Command's name - * - * @var string - */ - protected $name = 'help'; - - /** - * the Command's short description - * - * @var string - */ - protected $description = 'Displays basic usage information.'; - - /** - * the Command's usage - * - * @var string - */ - protected $usage = 'help [<command_name>]'; - - /** - * the Command's Arguments - * - * @var array<string, string> - */ - protected $arguments = [ - 'command_name' => 'The command name [default: "help"]', - ]; - - /** - * the Command's Options - * - * @var array<string, string> - */ - protected $options = []; - - /** - * Displays the help for spark commands. - */ - public function run(array $params) - { - $command = array_shift($params); - $command ??= 'help'; - $commands = $this->commands->getCommands(); - - if (! $this->commands->verifyCommand($command, $commands)) { - return; - } - - $class = new $commands[$command]['class']($this->logger, $this->commands); - $class->showHelp(); - } -} diff --git a/system4.4.6/Commands/Housekeeping/ClearDebugbar.php b/system4.4.6/Commands/Housekeeping/ClearDebugbar.php deleted file mode 100644 index da6f76a4..00000000 --- a/system4.4.6/Commands/Housekeeping/ClearDebugbar.php +++ /dev/null @@ -1,70 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Housekeeping; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; - -/** - * ClearDebugbar Command - */ -class ClearDebugbar extends BaseCommand -{ - /** - * The group the command is lumped under - * when listing commands. - * - * @var string - */ - protected $group = 'Housekeeping'; - - /** - * The Command's name - * - * @var string - */ - protected $name = 'debugbar:clear'; - - /** - * The Command's usage - * - * @var string - */ - protected $usage = 'debugbar:clear'; - - /** - * The Command's short description. - * - * @var string - */ - protected $description = 'Clears all debugbar JSON files.'; - - /** - * Actually runs the command. - */ - public function run(array $params) - { - helper('filesystem'); - - if (! delete_files(WRITEPATH . 'debugbar')) { - // @codeCoverageIgnoreStart - CLI::error('Error deleting the debugbar JSON files.'); - CLI::newLine(); - - return; - // @codeCoverageIgnoreEnd - } - - CLI::write('Debugbar cleared.', 'green'); - CLI::newLine(); - } -} diff --git a/system4.4.6/Commands/Housekeeping/ClearLogs.php b/system4.4.6/Commands/Housekeeping/ClearLogs.php deleted file mode 100644 index 56cfeab3..00000000 --- a/system4.4.6/Commands/Housekeeping/ClearLogs.php +++ /dev/null @@ -1,91 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Housekeeping; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; - -/** - * ClearLogs command. - */ -class ClearLogs extends BaseCommand -{ - /** - * The group the command is lumped under - * when listing commands. - * - * @var string - */ - protected $group = 'Housekeeping'; - - /** - * The Command's name - * - * @var string - */ - protected $name = 'logs:clear'; - - /** - * The Command's short description - * - * @var string - */ - protected $description = 'Clears all log files.'; - - /** - * The Command's usage - * - * @var string - */ - protected $usage = 'logs:clear [option'; - - /** - * The Command's options - * - * @var array<string, string> - */ - protected $options = [ - '--force' => 'Force delete of all logs files without prompting.', - ]; - - /** - * Actually execute a command. - */ - public function run(array $params) - { - $force = array_key_exists('force', $params) || CLI::getOption('force'); - - if (! $force && CLI::prompt('Are you sure you want to delete the logs?', ['n', 'y']) === 'n') { - // @codeCoverageIgnoreStart - CLI::error('Deleting logs aborted.', 'light_gray', 'red'); - CLI::error('If you want, use the "-force" option to force delete all log files.', 'light_gray', 'red'); - CLI::newLine(); - - return; - // @codeCoverageIgnoreEnd - } - - helper('filesystem'); - - if (! delete_files(WRITEPATH . 'logs', false, true)) { - // @codeCoverageIgnoreStart - CLI::error('Error in deleting the logs files.', 'light_gray', 'red'); - CLI::newLine(); - - return; - // @codeCoverageIgnoreEnd - } - - CLI::write('Logs cleared.', 'green'); - CLI::newLine(); - } -} diff --git a/system4.4.6/Commands/ListCommands.php b/system4.4.6/Commands/ListCommands.php deleted file mode 100644 index 9accecf0..00000000 --- a/system4.4.6/Commands/ListCommands.php +++ /dev/null @@ -1,134 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; - -/** - * CI Help command for the spark script. - * - * Lists the basic usage information for the spark script, - * and provides a way to list help for other commands. - */ -class ListCommands extends BaseCommand -{ - /** - * The group the command is lumped under - * when listing commands. - * - * @var string - */ - protected $group = 'CodeIgniter'; - - /** - * The Command's name - * - * @var string - */ - protected $name = 'list'; - - /** - * the Command's short description - * - * @var string - */ - protected $description = 'Lists the available commands.'; - - /** - * the Command's usage - * - * @var string - */ - protected $usage = 'list'; - - /** - * the Command's Arguments - * - * @var array<string, string> - */ - protected $arguments = []; - - /** - * the Command's Options - * - * @var array<string, string> - */ - protected $options = [ - '--simple' => 'Prints a list of the commands with no other info', - ]; - - /** - * Displays the help for the spark cli script itself. - */ - public function run(array $params) - { - $commands = $this->commands->getCommands(); - ksort($commands); - - // Check for 'simple' format - return array_key_exists('simple', $params) || CLI::getOption('simple') - ? $this->listSimple($commands) - : $this->listFull($commands); - } - - /** - * Lists the commands with accompanying info. - */ - protected function listFull(array $commands) - { - // Sort into buckets by group - $groups = []; - - foreach ($commands as $title => $command) { - if (! isset($groups[$command['group']])) { - $groups[$command['group']] = []; - } - - $groups[$command['group']][$title] = $command; - } - - $length = max(array_map('strlen', array_keys($commands))); - - ksort($groups); - - // Display it all... - foreach ($groups as $group => $commands) { - CLI::write($group, 'yellow'); - - foreach ($commands as $name => $command) { - $name = $this->setPad($name, $length, 2, 2); - $output = CLI::color($name, 'green'); - - if (isset($command['description'])) { - $output .= CLI::wrap($command['description'], 125, strlen($name)); - } - - CLI::write($output); - } - - if ($group !== array_key_last($groups)) { - CLI::newLine(); - } - } - } - - /** - * Lists the commands only. - */ - protected function listSimple(array $commands) - { - foreach (array_keys($commands) as $title) { - CLI::write($title); - } - } -} diff --git a/system4.4.6/Commands/Server/Serve.php b/system4.4.6/Commands/Server/Serve.php deleted file mode 100644 index b5382020..00000000 --- a/system4.4.6/Commands/Server/Serve.php +++ /dev/null @@ -1,117 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Server; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; - -/** - * Launch the PHP development server - * - * Not testable, as it throws phpunit for a loop :-/ - * - * @codeCoverageIgnore - */ -class Serve extends BaseCommand -{ - /** - * Group - * - * @var string - */ - protected $group = 'CodeIgniter'; - - /** - * Name - * - * @var string - */ - protected $name = 'serve'; - - /** - * Description - * - * @var string - */ - protected $description = 'Launches the CodeIgniter PHP-Development Server.'; - - /** - * Usage - * - * @var string - */ - protected $usage = 'serve'; - - /** - * Arguments - * - * @var array<string, string> - */ - protected $arguments = []; - - /** - * The current port offset. - * - * @var int - */ - protected $portOffset = 0; - - /** - * The max number of ports to attempt to serve from - * - * @var int - */ - protected $tries = 10; - - /** - * Options - * - * @var array<string, string> - */ - protected $options = [ - '--php' => 'The PHP Binary [default: "PHP_BINARY"]', - '--host' => 'The HTTP Host [default: "localhost"]', - '--port' => 'The HTTP Host Port [default: "8080"]', - ]; - - /** - * Run the server - */ - public function run(array $params) - { - // Collect any user-supplied options and apply them. - $php = escapeshellarg(CLI::getOption('php') ?? PHP_BINARY); - $host = CLI::getOption('host') ?? 'localhost'; - $port = (int) (CLI::getOption('port') ?? 8080) + $this->portOffset; - - // Get the party started. - CLI::write('CodeIgniter development server started on http://' . $host . ':' . $port, 'green'); - CLI::write('Press Control-C to stop.'); - - // Set the Front Controller path as Document Root. - $docroot = escapeshellarg(FCPATH); - - // Mimic Apache's mod_rewrite functionality with user settings. - $rewrite = escapeshellarg(__DIR__ . '/rewrite.php'); - - // Call PHP's built-in webserver, making sure to set our - // base path to the public folder, and to use the rewrite file - // to ensure our environment is set and it simulates basic mod_rewrite. - passthru($php . ' -S ' . $host . ':' . $port . ' -t ' . $docroot . ' ' . $rewrite, $status); - - if ($status && $this->portOffset < $this->tries) { - $this->portOffset++; - - $this->run($params); - } - } -} diff --git a/system4.4.6/Commands/Server/rewrite.php b/system4.4.6/Commands/Server/rewrite.php deleted file mode 100644 index 45a10936..00000000 --- a/system4.4.6/Commands/Server/rewrite.php +++ /dev/null @@ -1,48 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -/* - * CodeIgniter PHP-Development Server Rewrite Rules - * - * This script works with the CLI serve command to help run a seamless - * development server based around PHP's built-in development - * server. This file simply tries to mimic Apache's mod_rewrite - * functionality so the site will operate as normal. - */ - -// @codeCoverageIgnoreStart -// Avoid this file run when listing commands -if (PHP_SAPI === 'cli') { - return; -} - -$uri = urldecode( - parse_url('https://codeigniter.com' . $_SERVER['REQUEST_URI'], PHP_URL_PATH) ?? '' -); - -// All request handle by index.php file. -$_SERVER['SCRIPT_NAME'] = '/index.php'; - -// Full path -$path = $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . ltrim($uri, '/'); - -// If $path is an existing file or folder within the public folder -// then let the request handle it like normal. -if ($uri !== '/' && (is_file($path) || is_dir($path))) { - return false; -} - -unset($uri, $path); - -// Otherwise, we'll load the index file and let -// the framework handle the request from here. -require_once $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'index.php'; -// @codeCoverageIgnoreEnd diff --git a/system4.4.6/Commands/Utilities/Environment.php b/system4.4.6/Commands/Utilities/Environment.php deleted file mode 100644 index fd8f68fa..00000000 --- a/system4.4.6/Commands/Utilities/Environment.php +++ /dev/null @@ -1,155 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Utilities; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; -use CodeIgniter\Config\DotEnv; - -/** - * Command to display the current environment, - * or set a new one in the `.env` file. - */ -final class Environment extends BaseCommand -{ - /** - * The group the command is lumped under - * when listing commands. - * - * @var string - */ - protected $group = 'CodeIgniter'; - - /** - * The Command's name - * - * @var string - */ - protected $name = 'env'; - - /** - * The Command's short description - * - * @var string - */ - protected $description = 'Retrieves the current environment, or set a new one.'; - - /** - * The Command's usage - * - * @var string - */ - protected $usage = 'env [<environment>]'; - - /** - * The Command's arguments - * - * @var array<string, string> - */ - protected $arguments = [ - 'environment' => '[Optional] The new environment to set. If none is provided, this will print the current environment.', - ]; - - /** - * The Command's options - * - * @var array<string, string> - */ - protected $options = []; - - /** - * Allowed values for environment. `testing` is excluded - * since spark won't work on it. - * - * @var array<int, string> - */ - private static array $knownTypes = [ - 'production', - 'development', - ]; - - /** - * {@inheritDoc} - */ - public function run(array $params) - { - if ($params === []) { - CLI::write(sprintf('Your environment is currently set as %s.', CLI::color($_SERVER['CI_ENVIRONMENT'] ?? ENVIRONMENT, 'green'))); - CLI::newLine(); - - return; - } - - $env = strtolower(array_shift($params)); - - if ($env === 'testing') { - CLI::error('The "testing" environment is reserved for PHPUnit testing.', 'light_gray', 'red'); - CLI::error('You will not be able to run spark under a "testing" environment.', 'light_gray', 'red'); - CLI::newLine(); - - return; - } - - if (! in_array($env, self::$knownTypes, true)) { - CLI::error(sprintf('Invalid environment type "%s". Expected one of "%s".', $env, implode('" and "', self::$knownTypes)), 'light_gray', 'red'); - CLI::newLine(); - - return; - } - - if (! $this->writeNewEnvironmentToEnvFile($env)) { - CLI::error('Error in writing new environment to .env file.', 'light_gray', 'red'); - CLI::newLine(); - - return; - } - - // force DotEnv to reload the new environment - // however we cannot redefine the ENVIRONMENT constant - putenv('CI_ENVIRONMENT'); - unset($_ENV['CI_ENVIRONMENT'], $_SERVER['CI_ENVIRONMENT']); - (new DotEnv(ROOTPATH))->load(); - - CLI::write(sprintf('Environment is successfully changed to "%s".', $env), 'green'); - CLI::write('The ENVIRONMENT constant will be changed in the next script execution.'); - CLI::newLine(); - } - - /** - * @see https://regex101.com/r/4sSORp/1 for the regex in action - */ - private function writeNewEnvironmentToEnvFile(string $newEnv): bool - { - $baseEnv = ROOTPATH . 'env'; - $envFile = ROOTPATH . '.env'; - - if (! is_file($envFile)) { - if (! is_file($baseEnv)) { - CLI::write('Both default shipped `env` file and custom `.env` are missing.', 'yellow'); - CLI::write('It is impossible to write the new environment type.', 'yellow'); - CLI::newLine(); - - return false; - } - - copy($baseEnv, $envFile); - } - - $pattern = preg_quote($_SERVER['CI_ENVIRONMENT'] ?? ENVIRONMENT, '/'); - $pattern = sprintf('/^[#\s]*CI_ENVIRONMENT[=\s]+%s$/m', $pattern); - - return file_put_contents( - $envFile, - preg_replace($pattern, "\nCI_ENVIRONMENT = {$newEnv}", file_get_contents($envFile), -1, $count) - ) !== false && $count > 0; - } -} diff --git a/system4.4.6/Commands/Utilities/FilterCheck.php b/system4.4.6/Commands/Utilities/FilterCheck.php deleted file mode 100644 index 1b9937d2..00000000 --- a/system4.4.6/Commands/Utilities/FilterCheck.php +++ /dev/null @@ -1,127 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Utilities; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; -use CodeIgniter\Commands\Utilities\Routes\FilterCollector; -use Config\Services; - -/** - * Check filters for a route. - */ -class FilterCheck extends BaseCommand -{ - /** - * The group the command is lumped under - * when listing commands. - * - * @var string - */ - protected $group = 'CodeIgniter'; - - /** - * The Command's name - * - * @var string - */ - protected $name = 'filter:check'; - - /** - * the Command's short description - * - * @var string - */ - protected $description = 'Check filters for a route.'; - - /** - * the Command's usage - * - * @var string - */ - protected $usage = 'filter:check <HTTP method> <route>'; - - /** - * the Command's Arguments - * - * @var array<string, string> - */ - protected $arguments = [ - 'method' => 'The HTTP method. get, post, put, etc.', - 'route' => 'The route (URI path) to check filters.', - ]; - - /** - * the Command's Options - * - * @var array<string, string> - */ - protected $options = []; - - /** - * @return int exit code - */ - public function run(array $params) - { - $tbody = []; - if (! isset($params[0], $params[1])) { - CLI::error('You must specify a HTTP verb and a route.'); - CLI::write(' Usage: ' . $this->usage); - CLI::write('Example: filter:check get /'); - CLI::write(' filter:check put products/1'); - - return EXIT_ERROR; - } - - $method = strtolower($params[0]); - $route = $params[1]; - - // Load Routes - Services::routes()->loadRoutes(); - - $filterCollector = new FilterCollector(); - - $filters = $filterCollector->get($method, $route); - - // PageNotFoundException - if ($filters['before'] === ['<unknown>']) { - CLI::error( - "Can't find a route: " . - CLI::color( - '"' . strtoupper($method) . ' ' . $route . '"', - 'black', - 'light_gray' - ), - ); - - return EXIT_ERROR; - } - - $tbody[] = [ - strtoupper($method), - $route, - implode(' ', $filters['before']), - implode(' ', $filters['after']), - ]; - - $thead = [ - 'Method', - 'Route', - 'Before Filters', - 'After Filters', - ]; - - CLI::table($tbody, $thead); - - return EXIT_SUCCESS; - } -} diff --git a/system4.4.6/Commands/Utilities/Namespaces.php b/system4.4.6/Commands/Utilities/Namespaces.php deleted file mode 100644 index 71461933..00000000 --- a/system4.4.6/Commands/Utilities/Namespaces.php +++ /dev/null @@ -1,159 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Utilities; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; -use Config\Autoload; -use Config\Services; - -/** - * Lists namespaces set in Config\Autoload with their - * full server path. Helps you to verify that you have - * the namespaces setup correctly. - * - * @see \CodeIgniter\Commands\Utilities\NamespacesTest - */ -class Namespaces extends BaseCommand -{ - /** - * The group the command is lumped under - * when listing commands. - * - * @var string - */ - protected $group = 'CodeIgniter'; - - /** - * The Command's name - * - * @var string - */ - protected $name = 'namespaces'; - - /** - * the Command's short description - * - * @var string - */ - protected $description = 'Verifies your namespaces are setup correctly.'; - - /** - * the Command's usage - * - * @var string - */ - protected $usage = 'namespaces'; - - /** - * the Command's Arguments - * - * @var array<string, string> - */ - protected $arguments = []; - - /** - * the Command's Options - * - * @var array<string, string> - */ - protected $options = [ - '-c' => 'Show only CodeIgniter config namespaces.', - '-r' => 'Show raw path strings.', - '-m' => 'Specify max length of the path strings to output. Default: 60.', - ]; - - /** - * Displays the help for the spark cli script itself. - */ - public function run(array $params) - { - $params['m'] = (int) ($params['m'] ?? 60); - - $tbody = array_key_exists('c', $params) ? $this->outputCINamespaces($params) : $this->outputAllNamespaces($params); - - $thead = [ - 'Namespace', - 'Path', - 'Found?', - ]; - - CLI::table($tbody, $thead); - } - - private function outputAllNamespaces(array $params): array - { - $maxLength = $params['m']; - - $autoloader = Services::autoloader(); - - $tbody = []; - - foreach ($autoloader->getNamespace() as $ns => $paths) { - foreach ($paths as $path) { - if (array_key_exists('r', $params)) { - $pathOutput = $this->truncate($path, $maxLength); - } else { - $pathOutput = $this->truncate(clean_path($path), $maxLength); - } - - $tbody[] = [ - $ns, - $pathOutput, - is_dir($path) ? 'Yes' : 'MISSING', - ]; - } - } - - return $tbody; - } - - private function truncate(string $string, int $max): string - { - $length = strlen($string); - - if ($length > $max) { - return substr($string, 0, $max - 3) . '...'; - } - - return $string; - } - - private function outputCINamespaces(array $params): array - { - $maxLength = $params['m']; - - $config = new Autoload(); - - $tbody = []; - - foreach ($config->psr4 as $ns => $paths) { - if (array_key_exists('r', $params)) { - $pathOutput = $this->truncate($paths, $maxLength); - } else { - $pathOutput = $this->truncate(clean_path($paths), $maxLength); - } - - foreach ((array) $paths as $path) { - $path = realpath($path) ?: $path; - - $tbody[] = [ - $ns, - $pathOutput, - is_dir($path) ? 'Yes' : 'MISSING', - ]; - } - } - - return $tbody; - } -} diff --git a/system4.4.6/Commands/Utilities/Publish.php b/system4.4.6/Commands/Utilities/Publish.php deleted file mode 100644 index 1e4103c1..00000000 --- a/system4.4.6/Commands/Utilities/Publish.php +++ /dev/null @@ -1,104 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Utilities; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; -use CodeIgniter\Publisher\Publisher; - -/** - * Discovers all Publisher classes from the "Publishers/" directory - * across namespaces. Executes `publish()` from each instance, parsing - * each result. - */ -class Publish extends BaseCommand -{ - /** - * The group the command is lumped under - * when listing commands. - * - * @var string - */ - protected $group = 'CodeIgniter'; - - /** - * The Command's name - * - * @var string - */ - protected $name = 'publish'; - - /** - * The Command's short description - * - * @var string - */ - protected $description = 'Discovers and executes all predefined Publisher classes.'; - - /** - * The Command's usage - * - * @var string - */ - protected $usage = 'publish [<directory>]'; - - /** - * The Command's arguments - * - * @var array<string, string> - */ - protected $arguments = [ - 'directory' => '[Optional] The directory to scan within each namespace. Default: "Publishers".', - ]; - - /** - * the Command's Options - * - * @var array<string, string> - */ - protected $options = []; - - /** - * Displays the help for the spark cli script itself. - */ - public function run(array $params) - { - $directory = array_shift($params) ?? 'Publishers'; - - if ([] === $publishers = Publisher::discover($directory)) { - CLI::write(lang('Publisher.publishMissing', [$directory])); - - return; - } - - foreach ($publishers as $publisher) { - if ($publisher->publish()) { - CLI::write(lang('Publisher.publishSuccess', [ - get_class($publisher), - count($publisher->getPublished()), - $publisher->getDestination(), - ]), 'green'); - } else { - CLI::error(lang('Publisher.publishFailure', [ - get_class($publisher), - $publisher->getDestination(), - ]), 'light_gray', 'red'); - - foreach ($publisher->getErrors() as $file => $exception) { - CLI::write($file); - CLI::error($exception->getMessage()); - CLI::newLine(); - } - } - } - } -} diff --git a/system4.4.6/Commands/Utilities/Routes.php b/system4.4.6/Commands/Utilities/Routes.php deleted file mode 100644 index 5d20da07..00000000 --- a/system4.4.6/Commands/Utilities/Routes.php +++ /dev/null @@ -1,206 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Utilities; - -use CodeIgniter\CLI\BaseCommand; -use CodeIgniter\CLI\CLI; -use CodeIgniter\Commands\Utilities\Routes\AutoRouteCollector; -use CodeIgniter\Commands\Utilities\Routes\AutoRouterImproved\AutoRouteCollector as AutoRouteCollectorImproved; -use CodeIgniter\Commands\Utilities\Routes\FilterCollector; -use CodeIgniter\Commands\Utilities\Routes\SampleURIGenerator; -use CodeIgniter\Router\DefinedRouteCollector; -use Config\Feature; -use Config\Routing; -use Config\Services; - -/** - * Lists all the routes. This will include any Routes files - * that can be discovered, and will include routes that are not defined - * in routes files, but are instead discovered through auto-routing. - */ -class Routes extends BaseCommand -{ - /** - * The group the command is lumped under - * when listing commands. - * - * @var string - */ - protected $group = 'CodeIgniter'; - - /** - * The Command's name - * - * @var string - */ - protected $name = 'routes'; - - /** - * the Command's short description - * - * @var string - */ - protected $description = 'Displays all routes.'; - - /** - * the Command's usage - * - * @var string - */ - protected $usage = 'routes'; - - /** - * the Command's Arguments - * - * @var array<string, string> - */ - protected $arguments = []; - - /** - * the Command's Options - * - * @var array<string, string> - */ - protected $options = [ - '-h' => 'Sort by Handler.', - '--host' => 'Specify hostname in request URI.', - ]; - - /** - * Displays the help for the spark cli script itself. - */ - public function run(array $params) - { - $sortByHandler = array_key_exists('h', $params); - $host = $params['host'] ?? null; - - // Set HTTP_HOST - if ($host) { - $request = Services::request(); - $_SERVER = $request->getServer(); - $_SERVER['HTTP_HOST'] = $host; - $request->setGlobal('server', $_SERVER); - } - - $collection = Services::routes()->loadRoutes(); - - // Reset HTTP_HOST - if ($host) { - unset($_SERVER['HTTP_HOST']); - } - - $methods = [ - 'get', - 'head', - 'post', - 'patch', - 'put', - 'delete', - 'options', - 'trace', - 'connect', - 'cli', - ]; - - $tbody = []; - $uriGenerator = new SampleURIGenerator(); - $filterCollector = new FilterCollector(); - - $definedRouteCollector = new DefinedRouteCollector($collection); - - foreach ($definedRouteCollector->collect() as $route) { - $sampleUri = $uriGenerator->get($route['route']); - $filters = $filterCollector->get($route['method'], $sampleUri); - - $routeName = ($route['route'] === $route['name']) ? '»' : $route['name']; - - $tbody[] = [ - strtoupper($route['method']), - $route['route'], - $routeName, - $route['handler'], - implode(' ', array_map('class_basename', $filters['before'])), - implode(' ', array_map('class_basename', $filters['after'])), - ]; - } - - if ($collection->shouldAutoRoute()) { - $autoRoutesImproved = config(Feature::class)->autoRoutesImproved ?? false; - - if ($autoRoutesImproved) { - $autoRouteCollector = new AutoRouteCollectorImproved( - $collection->getDefaultNamespace(), - $collection->getDefaultController(), - $collection->getDefaultMethod(), - $methods, - $collection->getRegisteredControllers('*') - ); - - $autoRoutes = $autoRouteCollector->get(); - - // Check for Module Routes. - if ($routingConfig = config(Routing::class)) { - foreach ($routingConfig->moduleRoutes as $uri => $namespace) { - $autoRouteCollector = new AutoRouteCollectorImproved( - $namespace, - $collection->getDefaultController(), - $collection->getDefaultMethod(), - $methods, - $collection->getRegisteredControllers('*'), - $uri - ); - - $autoRoutes = [...$autoRoutes, ...$autoRouteCollector->get()]; - } - } - } else { - $autoRouteCollector = new AutoRouteCollector( - $collection->getDefaultNamespace(), - $collection->getDefaultController(), - $collection->getDefaultMethod() - ); - - $autoRoutes = $autoRouteCollector->get(); - - foreach ($autoRoutes as &$routes) { - // There is no `auto` method, but it is intentional not to get route filters. - $filters = $filterCollector->get('auto', $uriGenerator->get($routes[1])); - - $routes[] = implode(' ', array_map('class_basename', $filters['before'])); - $routes[] = implode(' ', array_map('class_basename', $filters['after'])); - } - } - - $tbody = [...$tbody, ...$autoRoutes]; - } - - $thead = [ - 'Method', - 'Route', - 'Name', - $sortByHandler ? 'Handler ↓' : 'Handler', - 'Before Filters', - 'After Filters', - ]; - - // Sort by Handler. - if ($sortByHandler) { - usort($tbody, static fn ($handler1, $handler2) => strcmp($handler1[3], $handler2[3])); - } - - if ($host) { - CLI::write('Host: ' . $host); - } - - CLI::table($tbody, $thead); - } -} diff --git a/system4.4.6/Commands/Utilities/Routes/AutoRouteCollector.php b/system4.4.6/Commands/Utilities/Routes/AutoRouteCollector.php deleted file mode 100644 index cc45608f..00000000 --- a/system4.4.6/Commands/Utilities/Routes/AutoRouteCollector.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Utilities\Routes; - -/** - * Collects data for auto route listing. - * - * @see \CodeIgniter\Commands\Utilities\Routes\AutoRouteCollectorTest - */ -final class AutoRouteCollector -{ - /** - * @var string namespace to search - */ - private string $namespace; - - private string $defaultController; - private string $defaultMethod; - - /** - * @param string $namespace namespace to search - */ - public function __construct(string $namespace, string $defaultController, string $defaultMethod) - { - $this->namespace = $namespace; - $this->defaultController = $defaultController; - $this->defaultMethod = $defaultMethod; - } - - /** - * @return list<list<string>> - */ - public function get(): array - { - $finder = new ControllerFinder($this->namespace); - $reader = new ControllerMethodReader($this->namespace); - - $tbody = []; - - foreach ($finder->find() as $class) { - $output = $reader->read( - $class, - $this->defaultController, - $this->defaultMethod - ); - - foreach ($output as $item) { - $tbody[] = [ - 'auto', - $item['route'], - '', - $item['handler'], - ]; - } - } - - return $tbody; - } -} diff --git a/system4.4.6/Commands/Utilities/Routes/AutoRouterImproved/AutoRouteCollector.php b/system4.4.6/Commands/Utilities/Routes/AutoRouterImproved/AutoRouteCollector.php deleted file mode 100644 index 18a158cf..00000000 --- a/system4.4.6/Commands/Utilities/Routes/AutoRouterImproved/AutoRouteCollector.php +++ /dev/null @@ -1,165 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Utilities\Routes\AutoRouterImproved; - -use CodeIgniter\Commands\Utilities\Routes\ControllerFinder; -use CodeIgniter\Commands\Utilities\Routes\FilterCollector; - -/** - * Collects data for Auto Routing Improved. - * - * @see \CodeIgniter\Commands\Utilities\Routes\AutoRouterImproved\AutoRouteCollectorTest - */ -final class AutoRouteCollector -{ - /** - * @var string namespace to search - */ - private string $namespace; - - private string $defaultController; - private string $defaultMethod; - private array $httpMethods; - - /** - * List of controllers in Defined Routes that should not be accessed via Auto-Routing. - * - * @var class-string[] - */ - private array $protectedControllers; - - /** - * @var string URI prefix for Module Routing - */ - private string $prefix; - - /** - * @param string $namespace namespace to search - */ - public function __construct( - string $namespace, - string $defaultController, - string $defaultMethod, - array $httpMethods, - array $protectedControllers, - string $prefix = '' - ) { - $this->namespace = $namespace; - $this->defaultController = $defaultController; - $this->defaultMethod = $defaultMethod; - $this->httpMethods = $httpMethods; - $this->protectedControllers = $protectedControllers; - $this->prefix = $prefix; - } - - /** - * @return list<list<string>> - */ - public function get(): array - { - $finder = new ControllerFinder($this->namespace); - $reader = new ControllerMethodReader($this->namespace, $this->httpMethods); - - $tbody = []; - - foreach ($finder->find() as $class) { - // Exclude controllers in Defined Routes. - if (in_array('\\' . $class, $this->protectedControllers, true)) { - continue; - } - - $routes = $reader->read( - $class, - $this->defaultController, - $this->defaultMethod - ); - - if ($routes === []) { - continue; - } - - $routes = $this->addFilters($routes); - - foreach ($routes as $item) { - $route = $item['route'] . $item['route_params']; - - // For module routing - if ($this->prefix !== '' && $route === '/') { - $route = $this->prefix; - } elseif ($this->prefix !== '') { - $route = $this->prefix . '/' . $route; - } - - $tbody[] = [ - strtoupper($item['method']) . '(auto)', - $route, - '', - $item['handler'], - $item['before'], - $item['after'], - ]; - } - } - - return $tbody; - } - - private function addFilters($routes) - { - $filterCollector = new FilterCollector(true); - - foreach ($routes as &$route) { - $routePath = $route['route']; - - // For module routing - if ($this->prefix !== '' && $route === '/') { - $routePath = $this->prefix; - } elseif ($this->prefix !== '') { - $routePath = $this->prefix . '/' . $routePath; - } - - // Search filters for the URI with all params - $sampleUri = $this->generateSampleUri($route); - $filtersLongest = $filterCollector->get($route['method'], $routePath . $sampleUri); - - // Search filters for the URI without optional params - $sampleUri = $this->generateSampleUri($route, false); - $filtersShortest = $filterCollector->get($route['method'], $routePath . $sampleUri); - - // Get common array elements - $filters['before'] = array_intersect($filtersLongest['before'], $filtersShortest['before']); - $filters['after'] = array_intersect($filtersLongest['after'], $filtersShortest['after']); - - $route['before'] = implode(' ', array_map('class_basename', $filters['before'])); - $route['after'] = implode(' ', array_map('class_basename', $filters['after'])); - } - - return $routes; - } - - private function generateSampleUri(array $route, bool $longest = true): string - { - $sampleUri = ''; - - if (isset($route['params'])) { - $i = 1; - - foreach ($route['params'] as $required) { - if ($longest && ! $required) { - $sampleUri .= '/' . $i++; - } - } - } - - return $sampleUri; - } -} diff --git a/system4.4.6/Commands/Utilities/Routes/AutoRouterImproved/ControllerMethodReader.php b/system4.4.6/Commands/Utilities/Routes/AutoRouterImproved/ControllerMethodReader.php deleted file mode 100644 index a077633f..00000000 --- a/system4.4.6/Commands/Utilities/Routes/AutoRouterImproved/ControllerMethodReader.php +++ /dev/null @@ -1,241 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Utilities\Routes\AutoRouterImproved; - -use Config\Routing; -use ReflectionClass; -use ReflectionMethod; - -/** - * Reads a controller and returns a list of auto route listing. - * - * @see \CodeIgniter\Commands\Utilities\Routes\AutoRouterImproved\ControllerMethodReaderTest - */ -final class ControllerMethodReader -{ - /** - * @var string the default namespace - */ - private string $namespace; - - /** - * @var list<string> - */ - private array $httpMethods; - - private bool $translateURIDashes; - - /** - * @param string $namespace the default namespace - */ - public function __construct(string $namespace, array $httpMethods) - { - $this->namespace = $namespace; - $this->httpMethods = $httpMethods; - - $config = config(Routing::class); - $this->translateURIDashes = $config->translateURIDashes; - } - - /** - * Returns found route info in the controller. - * - * @param class-string $class - * - * @return list<array<string, array|string>> - */ - public function read(string $class, string $defaultController = 'Home', string $defaultMethod = 'index'): array - { - $reflection = new ReflectionClass($class); - - if ($reflection->isAbstract()) { - return []; - } - - $classname = $reflection->getName(); - $classShortname = $reflection->getShortName(); - - $output = []; - $classInUri = $this->getUriByClass($classname); - - foreach ($reflection->getMethods(ReflectionMethod::IS_PUBLIC) as $method) { - $methodName = $method->getName(); - - foreach ($this->httpMethods as $httpVerb) { - if (strpos($methodName, $httpVerb) === 0) { - // Remove HTTP verb prefix. - $methodInUri = $this->getUriByMethod($httpVerb, $methodName); - - // Check if it is the default method. - if ($methodInUri === $defaultMethod) { - $routeForDefaultController = $this->getRouteForDefaultController( - $classShortname, - $defaultController, - $classInUri, - $classname, - $methodName, - $httpVerb, - $method - ); - - if ($routeForDefaultController !== []) { - // The controller is the default controller. It only - // has a route for the default method. Other methods - // will not be routed even if they exist. - $output = [...$output, ...$routeForDefaultController]; - - continue; - } - - [$params, $routeParams] = $this->getParameters($method); - - // Route for the default method. - $output[] = [ - 'method' => $httpVerb, - 'route' => $classInUri, - 'route_params' => $routeParams, - 'handler' => '\\' . $classname . '::' . $methodName, - 'params' => $params, - ]; - - continue; - } - - $route = $classInUri . '/' . $methodInUri; - - [$params, $routeParams] = $this->getParameters($method); - - // If it is the default controller, the method will not be - // routed. - if ($classShortname === $defaultController) { - $route = 'x ' . $route; - } - - $output[] = [ - 'method' => $httpVerb, - 'route' => $route, - 'route_params' => $routeParams, - 'handler' => '\\' . $classname . '::' . $methodName, - 'params' => $params, - ]; - } - } - } - - return $output; - } - - private function getParameters(ReflectionMethod $method): array - { - $params = []; - $routeParams = ''; - $refParams = $method->getParameters(); - - foreach ($refParams as $param) { - $required = true; - if ($param->isOptional()) { - $required = false; - - $routeParams .= '[/..]'; - } else { - $routeParams .= '/..'; - } - - // [variable_name => required?] - $params[$param->getName()] = $required; - } - - return [$params, $routeParams]; - } - - /** - * @param class-string $classname - * - * @return string URI path part from the folder(s) and controller - */ - private function getUriByClass(string $classname): string - { - // remove the namespace - $pattern = '/' . preg_quote($this->namespace, '/') . '/'; - $class = ltrim(preg_replace($pattern, '', $classname), '\\'); - - $classParts = explode('\\', $class); - $classPath = ''; - - foreach ($classParts as $part) { - // make the first letter lowercase, because auto routing makes - // the URI path's first letter uppercase and search the controller - $classPath .= lcfirst($part) . '/'; - } - - $classUri = rtrim($classPath, '/'); - - if ($this->translateURIDashes) { - $classUri = str_replace('_', '-', $classUri); - } - - return $classUri; - } - - /** - * @return string URI path part from the method - */ - private function getUriByMethod(string $httpVerb, string $methodName): string - { - $methodUri = lcfirst(substr($methodName, strlen($httpVerb))); - - if ($this->translateURIDashes) { - $methodUri = str_replace('_', '-', $methodUri); - } - - return $methodUri; - } - - /** - * Gets a route for the default controller. - * - * @return list<array> - */ - private function getRouteForDefaultController( - string $classShortname, - string $defaultController, - string $uriByClass, - string $classname, - string $methodName, - string $httpVerb, - ReflectionMethod $method - ): array { - $output = []; - - if ($classShortname === $defaultController) { - $pattern = '#' . preg_quote(lcfirst($defaultController), '#') . '\z#'; - $routeWithoutController = rtrim(preg_replace($pattern, '', $uriByClass), '/'); - $routeWithoutController = $routeWithoutController ?: '/'; - - [$params, $routeParams] = $this->getParameters($method); - - if ($routeWithoutController === '/' && $routeParams !== '') { - $routeWithoutController = ''; - } - - $output[] = [ - 'method' => $httpVerb, - 'route' => $routeWithoutController, - 'route_params' => $routeParams, - 'handler' => '\\' . $classname . '::' . $methodName, - 'params' => $params, - ]; - } - - return $output; - } -} diff --git a/system4.4.6/Commands/Utilities/Routes/ControllerFinder.php b/system4.4.6/Commands/Utilities/Routes/ControllerFinder.php deleted file mode 100644 index 3982c454..00000000 --- a/system4.4.6/Commands/Utilities/Routes/ControllerFinder.php +++ /dev/null @@ -1,78 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Utilities\Routes; - -use CodeIgniter\Autoloader\FileLocator; -use CodeIgniter\Config\Services; - -/** - * Finds all controllers in a namespace for auto route listing. - * - * @see \CodeIgniter\Commands\Utilities\Routes\ControllerFinderTest - */ -final class ControllerFinder -{ - /** - * @var string namespace to search - */ - private string $namespace; - - private FileLocator $locator; - - /** - * @param string $namespace namespace to search - */ - public function __construct(string $namespace) - { - $this->namespace = $namespace; - $this->locator = Services::locator(); - } - - /** - * @return class-string[] - */ - public function find(): array - { - $nsArray = explode('\\', trim($this->namespace, '\\')); - $count = count($nsArray); - $ns = ''; - $files = []; - - for ($i = 0; $i < $count; $i++) { - $ns .= '\\' . array_shift($nsArray); - $path = implode('\\', $nsArray); - - $files = $this->locator->listNamespaceFiles($ns, $path); - - if ($files !== []) { - break; - } - } - - $classes = []; - - foreach ($files as $file) { - if (\is_file($file)) { - $classnameOrEmpty = $this->locator->getClassname($file); - - if ($classnameOrEmpty !== '') { - /** @var class-string $classname */ - $classname = $classnameOrEmpty; - - $classes[] = $classname; - } - } - } - - return $classes; - } -} diff --git a/system4.4.6/Commands/Utilities/Routes/ControllerMethodReader.php b/system4.4.6/Commands/Utilities/Routes/ControllerMethodReader.php deleted file mode 100644 index 31bcde12..00000000 --- a/system4.4.6/Commands/Utilities/Routes/ControllerMethodReader.php +++ /dev/null @@ -1,177 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Utilities\Routes; - -use ReflectionClass; -use ReflectionMethod; - -/** - * Reads a controller and returns a list of auto route listing. - * - * @see \CodeIgniter\Commands\Utilities\Routes\ControllerMethodReaderTest - */ -final class ControllerMethodReader -{ - /** - * @var string the default namespace - */ - private string $namespace; - - /** - * @param string $namespace the default namespace - */ - public function __construct(string $namespace) - { - $this->namespace = $namespace; - } - - /** - * @param class-string $class - * - * @return list<array{route: string, handler: string}> - */ - public function read(string $class, string $defaultController = 'Home', string $defaultMethod = 'index'): array - { - $reflection = new ReflectionClass($class); - - if ($reflection->isAbstract()) { - return []; - } - - $classname = $reflection->getName(); - $classShortname = $reflection->getShortName(); - - $output = []; - $uriByClass = $this->getUriByClass($classname); - - if ($this->hasRemap($reflection)) { - $methodName = '_remap'; - - $routeWithoutController = $this->getRouteWithoutController( - $classShortname, - $defaultController, - $uriByClass, - $classname, - $methodName - ); - $output = [...$output, ...$routeWithoutController]; - - $output[] = [ - 'route' => $uriByClass . '[/...]', - 'handler' => '\\' . $classname . '::' . $methodName, - ]; - - return $output; - } - - foreach ($reflection->getMethods(ReflectionMethod::IS_PUBLIC) as $method) { - $methodName = $method->getName(); - - $route = $uriByClass . '/' . $methodName; - - // Exclude BaseController and initController - // See system/Config/Routes.php - if (preg_match('#\AbaseController.*#', $route) === 1) { - continue; - } - if (preg_match('#.*/initController\z#', $route) === 1) { - continue; - } - - if ($methodName === $defaultMethod) { - $routeWithoutController = $this->getRouteWithoutController( - $classShortname, - $defaultController, - $uriByClass, - $classname, - $methodName - ); - $output = [...$output, ...$routeWithoutController]; - - $output[] = [ - 'route' => $uriByClass, - 'handler' => '\\' . $classname . '::' . $methodName, - ]; - } - - $output[] = [ - 'route' => $route . '[/...]', - 'handler' => '\\' . $classname . '::' . $methodName, - ]; - } - - return $output; - } - - /** - * Whether the class has a _remap() method. - */ - private function hasRemap(ReflectionClass $class): bool - { - if ($class->hasMethod('_remap')) { - $remap = $class->getMethod('_remap'); - - return $remap->isPublic(); - } - - return false; - } - - /** - * @param class-string $classname - * - * @return string URI path part from the folder(s) and controller - */ - private function getUriByClass(string $classname): string - { - // remove the namespace - $pattern = '/' . preg_quote($this->namespace, '/') . '/'; - $class = ltrim(preg_replace($pattern, '', $classname), '\\'); - - $classParts = explode('\\', $class); - $classPath = ''; - - foreach ($classParts as $part) { - // make the first letter lowercase, because auto routing makes - // the URI path's first letter uppercase and search the controller - $classPath .= lcfirst($part) . '/'; - } - - return rtrim($classPath, '/'); - } - - /** - * Gets a route without default controller. - */ - private function getRouteWithoutController( - string $classShortname, - string $defaultController, - string $uriByClass, - string $classname, - string $methodName - ): array { - $output = []; - - if ($classShortname === $defaultController) { - $pattern = '#' . preg_quote(lcfirst($defaultController), '#') . '\z#'; - $routeWithoutController = rtrim(preg_replace($pattern, '', $uriByClass), '/'); - $routeWithoutController = $routeWithoutController ?: '/'; - - $output[] = [ - 'route' => $routeWithoutController, - 'handler' => '\\' . $classname . '::' . $methodName, - ]; - } - - return $output; - } -} diff --git a/system4.4.6/Commands/Utilities/Routes/FilterCollector.php b/system4.4.6/Commands/Utilities/Routes/FilterCollector.php deleted file mode 100644 index 01d228a4..00000000 --- a/system4.4.6/Commands/Utilities/Routes/FilterCollector.php +++ /dev/null @@ -1,82 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Utilities\Routes; - -use CodeIgniter\Config\Services; -use CodeIgniter\Filters\Filters; -use CodeIgniter\HTTP\Request; -use CodeIgniter\Router\Router; -use Config\Filters as FiltersConfig; - -/** - * Collects filters for a route. - * - * @see \CodeIgniter\Commands\Utilities\Routes\FilterCollectorTest - */ -final class FilterCollector -{ - /** - * Whether to reset Defined Routes. - * - * If set to true, route filters are not found. - */ - private bool $resetRoutes; - - public function __construct(bool $resetRoutes = false) - { - $this->resetRoutes = $resetRoutes; - } - - /** - * @param string $method HTTP method - * @param string $uri URI path to find filters for - * - * @return array{before: list<string>, after: list<string>} array of filter alias or classname - */ - public function get(string $method, string $uri): array - { - if ($method === 'cli') { - return [ - 'before' => [], - 'after' => [], - ]; - } - - $request = Services::incomingrequest(null, false); - $request->setMethod($method); - - $router = $this->createRouter($request); - $filters = $this->createFilters($request); - - $finder = new FilterFinder($router, $filters); - - return $finder->find($uri); - } - - private function createRouter(Request $request): Router - { - $routes = Services::routes(); - - if ($this->resetRoutes) { - $routes->resetRoutes(); - } - - return new Router($routes, $request); - } - - private function createFilters(Request $request): Filters - { - $config = config(FiltersConfig::class); - - return new Filters($config, $request, Services::response()); - } -} diff --git a/system4.4.6/Commands/Utilities/Routes/FilterFinder.php b/system4.4.6/Commands/Utilities/Routes/FilterFinder.php deleted file mode 100644 index 2e5da617..00000000 --- a/system4.4.6/Commands/Utilities/Routes/FilterFinder.php +++ /dev/null @@ -1,81 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Utilities\Routes; - -use CodeIgniter\Exceptions\PageNotFoundException; -use CodeIgniter\Filters\Filters; -use CodeIgniter\HTTP\Exceptions\RedirectException; -use CodeIgniter\Router\Router; -use Config\Feature; -use Config\Services; - -/** - * Finds filters. - * - * @see \CodeIgniter\Commands\Utilities\Routes\FilterFinderTest - */ -final class FilterFinder -{ - private Router $router; - private Filters $filters; - - public function __construct(?Router $router = null, ?Filters $filters = null) - { - $this->router = $router ?? Services::router(); - $this->filters = $filters ?? Services::filters(); - } - - private function getRouteFilters(string $uri): array - { - $this->router->handle($uri); - - $multipleFiltersEnabled = config(Feature::class)->multipleFilters ?? false; - if (! $multipleFiltersEnabled) { - $filter = $this->router->getFilter(); - - return $filter === null ? [] : [$filter]; - } - - return $this->router->getFilters(); - } - - /** - * @param string $uri URI path to find filters for - * - * @return array{before: list<string>, after: list<string>} array of filter alias or classname - */ - public function find(string $uri): array - { - $this->filters->reset(); - - // Add route filters - try { - $routeFilters = $this->getRouteFilters($uri); - $this->filters->enableFilters($routeFilters, 'before'); - $this->filters->enableFilters($routeFilters, 'after'); - - $this->filters->initialize($uri); - - return $this->filters->getFilters(); - } catch (RedirectException $e) { - return [ - 'before' => [], - 'after' => [], - ]; - } catch (PageNotFoundException $e) { - return [ - 'before' => ['<unknown>'], - 'after' => ['<unknown>'], - ]; - } - } -} diff --git a/system4.4.6/Commands/Utilities/Routes/SampleURIGenerator.php b/system4.4.6/Commands/Utilities/Routes/SampleURIGenerator.php deleted file mode 100644 index 43d19344..00000000 --- a/system4.4.6/Commands/Utilities/Routes/SampleURIGenerator.php +++ /dev/null @@ -1,72 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Commands\Utilities\Routes; - -use CodeIgniter\Config\Services; -use CodeIgniter\Router\RouteCollection; -use Config\App; - -/** - * Generate a sample URI path from route key regex. - * - * @see \CodeIgniter\Commands\Utilities\Routes\SampleURIGeneratorTest - */ -final class SampleURIGenerator -{ - private RouteCollection $routes; - - /** - * Sample URI path for placeholder. - * - * @var array<string, string> - */ - private array $samples = [ - 'any' => '123/abc', - 'segment' => 'abc_123', - 'alphanum' => 'abc123', - 'num' => '123', - 'alpha' => 'abc', - 'hash' => 'abc_123', - ]; - - public function __construct(?RouteCollection $routes = null) - { - $this->routes = $routes ?? Services::routes(); - } - - /** - * @param string $routeKey route key regex - * - * @return string sample URI path - */ - public function get(string $routeKey): string - { - $sampleUri = $routeKey; - - if (strpos($routeKey, '{locale}') !== false) { - $sampleUri = str_replace( - '{locale}', - config(App::class)->defaultLocale, - $routeKey - ); - } - - foreach ($this->routes->getPlaceholders() as $placeholder => $regex) { - $sample = $this->samples[$placeholder] ?? '::unknown::'; - - $sampleUri = str_replace('(' . $regex . ')', $sample, $sampleUri); - } - - // auto route - return str_replace('[/...]', '/1/2/3/4/5', $sampleUri); - } -} diff --git a/system4.4.6/Common.php b/system4.4.6/Common.php deleted file mode 100644 index e5524c03..00000000 --- a/system4.4.6/Common.php +++ /dev/null @@ -1,1268 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -use CodeIgniter\Cache\CacheInterface; -use CodeIgniter\Config\BaseConfig; -use CodeIgniter\Config\Factories; -use CodeIgniter\Cookie\Cookie; -use CodeIgniter\Cookie\CookieStore; -use CodeIgniter\Cookie\Exceptions\CookieException; -use CodeIgniter\Database\BaseConnection; -use CodeIgniter\Database\ConnectionInterface; -use CodeIgniter\Debug\Timer; -use CodeIgniter\Files\Exceptions\FileNotFoundException; -use CodeIgniter\HTTP\CLIRequest; -use CodeIgniter\HTTP\Exceptions\HTTPException; -use CodeIgniter\HTTP\Exceptions\RedirectException; -use CodeIgniter\HTTP\IncomingRequest; -use CodeIgniter\HTTP\RedirectResponse; -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\ResponseInterface; -use CodeIgniter\Model; -use CodeIgniter\Session\Session; -use CodeIgniter\Test\TestLogger; -use Config\App; -use Config\Database; -use Config\DocTypes; -use Config\Logger; -use Config\Services; -use Config\View; -use Laminas\Escaper\Escaper; - -// Services Convenience Functions - -if (! function_exists('app_timezone')) { - /** - * Returns the timezone the application has been set to display - * dates in. This might be different than the timezone set - * at the server level, as you often want to stores dates in UTC - * and convert them on the fly for the user. - */ - function app_timezone(): string - { - $config = config(App::class); - - return $config->appTimezone; - } -} - -if (! function_exists('cache')) { - /** - * A convenience method that provides access to the Cache - * object. If no parameter is provided, will return the object, - * otherwise, will attempt to return the cached value. - * - * Examples: - * cache()->save('foo', 'bar'); - * $foo = cache('bar'); - * - * @return array|bool|CacheInterface|float|int|object|string|null - * @phpstan-return ($key is null ? CacheInterface : array|bool|float|int|object|string|null) - */ - function cache(?string $key = null) - { - $cache = Services::cache(); - - // No params - return cache object - if ($key === null) { - return $cache; - } - - // Still here? Retrieve the value. - return $cache->get($key); - } -} - -if (! function_exists('clean_path')) { - /** - * A convenience method to clean paths for - * a nicer looking output. Useful for exception - * handling, error logging, etc. - */ - function clean_path(string $path): string - { - // Resolve relative paths - try { - $path = realpath($path) ?: $path; - } catch (ErrorException|ValueError $e) { - $path = 'error file path: ' . urlencode($path); - } - - switch (true) { - case strpos($path, APPPATH) === 0: - return 'APPPATH' . DIRECTORY_SEPARATOR . substr($path, strlen(APPPATH)); - - case strpos($path, SYSTEMPATH) === 0: - return 'SYSTEMPATH' . DIRECTORY_SEPARATOR . substr($path, strlen(SYSTEMPATH)); - - case strpos($path, FCPATH) === 0: - return 'FCPATH' . DIRECTORY_SEPARATOR . substr($path, strlen(FCPATH)); - - case defined('VENDORPATH') && strpos($path, VENDORPATH) === 0: - return 'VENDORPATH' . DIRECTORY_SEPARATOR . substr($path, strlen(VENDORPATH)); - - case strpos($path, ROOTPATH) === 0: - return 'ROOTPATH' . DIRECTORY_SEPARATOR . substr($path, strlen(ROOTPATH)); - - default: - return $path; - } - } -} - -if (! function_exists('command')) { - /** - * Runs a single command. - * Input expected in a single string as would - * be used on the command line itself: - * - * > command('migrate:create SomeMigration'); - * - * @return false|string - */ - function command(string $command) - { - $runner = service('commands'); - $regexString = '([^\s]+?)(?:\s|(?<!\\\\)"|(?<!\\\\)\'|$)'; - $regexQuoted = '(?:"([^"\\\\]*(?:\\\\.[^"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\')'; - - $args = []; - $length = strlen($command); - $cursor = 0; - - /** - * Adopted from Symfony's `StringInput::tokenize()` with few changes. - * - * @see https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Console/Input/StringInput.php - */ - while ($cursor < $length) { - if (preg_match('/\s+/A', $command, $match, 0, $cursor)) { - // nothing to do - } elseif (preg_match('/' . $regexQuoted . '/A', $command, $match, 0, $cursor)) { - $args[] = stripcslashes(substr($match[0], 1, strlen($match[0]) - 2)); - } elseif (preg_match('/' . $regexString . '/A', $command, $match, 0, $cursor)) { - $args[] = stripcslashes($match[1]); - } else { - // @codeCoverageIgnoreStart - throw new InvalidArgumentException(sprintf( - 'Unable to parse input near "... %s ...".', - substr($command, $cursor, 10) - )); - // @codeCoverageIgnoreEnd - } - - $cursor += strlen($match[0]); - } - - $command = array_shift($args); - $params = []; - $optionValue = false; - - foreach ($args as $i => $arg) { - if (mb_strpos($arg, '-') !== 0) { - if ($optionValue) { - // if this was an option value, it was already - // included in the previous iteration - $optionValue = false; - } else { - // add to segments if not starting with '-' - // and not an option value - $params[] = $arg; - } - - continue; - } - - $arg = ltrim($arg, '-'); - $value = null; - - if (isset($args[$i + 1]) && mb_strpos($args[$i + 1], '-') !== 0) { - $value = $args[$i + 1]; - $optionValue = true; - } - - $params[$arg] = $value; - } - - ob_start(); - $runner->run($command, $params); - - return ob_get_clean(); - } -} - -if (! function_exists('config')) { - /** - * More simple way of getting config instances from Factories - * - * @template ConfigTemplate of BaseConfig - * - * @param class-string<ConfigTemplate>|string $name - * - * @return ConfigTemplate|null - * @phpstan-return ($name is class-string<ConfigTemplate> ? ConfigTemplate : object|null) - */ - function config(string $name, bool $getShared = true) - { - return Factories::config($name, ['getShared' => $getShared]); - } -} - -if (! function_exists('cookie')) { - /** - * Simpler way to create a new Cookie instance. - * - * @param string $name Name of the cookie - * @param string $value Value of the cookie - * @param array $options Array of options to be passed to the cookie - * - * @throws CookieException - */ - function cookie(string $name, string $value = '', array $options = []): Cookie - { - return new Cookie($name, $value, $options); - } -} - -if (! function_exists('cookies')) { - /** - * Fetches the global `CookieStore` instance held by `Response`. - * - * @param Cookie[] $cookies If `getGlobal` is false, this is passed to CookieStore's constructor - * @param bool $getGlobal If false, creates a new instance of CookieStore - */ - function cookies(array $cookies = [], bool $getGlobal = true): CookieStore - { - if ($getGlobal) { - return Services::response()->getCookieStore(); - } - - return new CookieStore($cookies); - } -} - -if (! function_exists('csrf_token')) { - /** - * Returns the CSRF token name. - * Can be used in Views when building hidden inputs manually, - * or used in javascript vars when using APIs. - */ - function csrf_token(): string - { - return Services::security()->getTokenName(); - } -} - -if (! function_exists('csrf_header')) { - /** - * Returns the CSRF header name. - * Can be used in Views by adding it to the meta tag - * or used in javascript to define a header name when using APIs. - */ - function csrf_header(): string - { - return Services::security()->getHeaderName(); - } -} - -if (! function_exists('csrf_hash')) { - /** - * Returns the current hash value for the CSRF protection. - * Can be used in Views when building hidden inputs manually, - * or used in javascript vars for API usage. - */ - function csrf_hash(): string - { - return Services::security()->getHash(); - } -} - -if (! function_exists('csrf_field')) { - /** - * Generates a hidden input field for use within manually generated forms. - * - * @param non-empty-string|null $id - */ - function csrf_field(?string $id = null): string - { - return '<input type="hidden"' . ($id !== null ? ' id="' . esc($id, 'attr') . '"' : '') . ' name="' . csrf_token() . '" value="' . csrf_hash() . '"' . _solidus() . '>'; - } -} - -if (! function_exists('csrf_meta')) { - /** - * Generates a meta tag for use within javascript calls. - * - * @param non-empty-string|null $id - */ - function csrf_meta(?string $id = null): string - { - return '<meta' . ($id !== null ? ' id="' . esc($id, 'attr') . '"' : '') . ' name="' . csrf_header() . '" content="' . csrf_hash() . '"' . _solidus() . '>'; - } -} - -if (! function_exists('csp_style_nonce')) { - /** - * Generates a nonce attribute for style tag. - */ - function csp_style_nonce(): string - { - $csp = Services::csp(); - - if (! $csp->enabled()) { - return ''; - } - - return 'nonce="' . $csp->getStyleNonce() . '"'; - } -} - -if (! function_exists('csp_script_nonce')) { - /** - * Generates a nonce attribute for script tag. - */ - function csp_script_nonce(): string - { - $csp = Services::csp(); - - if (! $csp->enabled()) { - return ''; - } - - return 'nonce="' . $csp->getScriptNonce() . '"'; - } -} - -if (! function_exists('db_connect')) { - /** - * Grabs a database connection and returns it to the user. - * - * This is a convenience wrapper for \Config\Database::connect() - * and supports the same parameters. Namely: - * - * When passing in $db, you may pass any of the following to connect: - * - group name - * - existing connection instance - * - array of database configuration values - * - * If $getShared === false then a new connection instance will be provided, - * otherwise it will all calls will return the same instance. - * - * @param array|ConnectionInterface|string|null $db - * - * @return BaseConnection - */ - function db_connect($db = null, bool $getShared = true) - { - return Database::connect($db, $getShared); - } -} - -if (! function_exists('env')) { - /** - * Allows user to retrieve values from the environment - * variables that have been set. Especially useful for - * retrieving values set from the .env file for - * use in config files. - * - * @param string|null $default - * - * @return bool|string|null - */ - function env(string $key, $default = null) - { - $value = $_ENV[$key] ?? $_SERVER[$key] ?? getenv($key); - - // Not found? Return the default value - if ($value === false) { - return $default; - } - - // Handle any boolean values - switch (strtolower($value)) { - case 'true': - return true; - - case 'false': - return false; - - case 'empty': - return ''; - - case 'null': - return null; - } - - return $value; - } -} - -if (! function_exists('esc')) { - /** - * Performs simple auto-escaping of data for security reasons. - * Might consider making this more complex at a later date. - * - * If $data is a string, then it simply escapes and returns it. - * If $data is an array, then it loops over it, escaping each - * 'value' of the key/value pairs. - * - * @param array|string $data - * @phpstan-param 'html'|'js'|'css'|'url'|'attr'|'raw' $context - * @param string|null $encoding Current encoding for escaping. - * If not UTF-8, we convert strings from this encoding - * pre-escaping and back to this encoding post-escaping. - * - * @return array|string - * - * @throws InvalidArgumentException - */ - function esc($data, string $context = 'html', ?string $encoding = null) - { - if (is_array($data)) { - foreach ($data as &$value) { - $value = esc($value, $context); - } - } - - if (is_string($data)) { - $context = strtolower($context); - - // Provide a way to NOT escape data since - // this could be called automatically by - // the View library. - if ($context === 'raw') { - return $data; - } - - if (! in_array($context, ['html', 'js', 'css', 'url', 'attr'], true)) { - throw new InvalidArgumentException('Invalid escape context provided.'); - } - - $method = $context === 'attr' ? 'escapeHtmlAttr' : 'escape' . ucfirst($context); - - static $escaper; - if (! $escaper) { - $escaper = new Escaper($encoding); - } - - if ($encoding && $escaper->getEncoding() !== $encoding) { - $escaper = new Escaper($encoding); - } - - $data = $escaper->{$method}($data); - } - - return $data; - } -} - -if (! function_exists('force_https')) { - /** - * Used to force a page to be accessed in via HTTPS. - * Uses a standard redirect, plus will set the HSTS header - * for modern browsers that support, which gives best - * protection against man-in-the-middle attacks. - * - * @see https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security - * - * @param int $duration How long should the SSL header be set for? (in seconds) - * Defaults to 1 year. - * - * @throws HTTPException - * @throws RedirectException - */ - function force_https( - int $duration = 31_536_000, - ?RequestInterface $request = null, - ?ResponseInterface $response = null - ): void { - $request ??= Services::request(); - - if (! $request instanceof IncomingRequest) { - return; - } - - $response ??= Services::response(); - - if ((ENVIRONMENT !== 'testing' && (is_cli() || $request->isSecure())) - || $request->getServer('HTTPS') === 'test' - ) { - return; // @codeCoverageIgnore - } - - // If the session status is active, we should regenerate - // the session ID for safety sake. - if (ENVIRONMENT !== 'testing' && session_status() === PHP_SESSION_ACTIVE) { - Services::session()->regenerate(); // @codeCoverageIgnore - } - - $uri = $request->getUri()->withScheme('https'); - - // Set an HSTS header - $response->setHeader('Strict-Transport-Security', 'max-age=' . $duration) - ->redirect((string) $uri) - ->setStatusCode(307) - ->setBody('') - ->getCookieStore() - ->clear(); - - throw new RedirectException($response); - } -} - -if (! function_exists('function_usable')) { - /** - * Function usable - * - * Executes a function_exists() check, and if the Suhosin PHP - * extension is loaded - checks whether the function that is - * checked might be disabled in there as well. - * - * This is useful as function_exists() will return FALSE for - * functions disabled via the *disable_functions* php.ini - * setting, but not for *suhosin.executor.func.blacklist* and - * *suhosin.executor.disable_eval*. These settings will just - * terminate script execution if a disabled function is executed. - * - * The above described behavior turned out to be a bug in Suhosin, - * but even though a fix was committed for 0.9.34 on 2012-02-12, - * that version is yet to be released. This function will therefore - * be just temporary, but would probably be kept for a few years. - * - * @see http://www.hardened-php.net/suhosin/ - * - * @param string $functionName Function to check for - * - * @return bool TRUE if the function exists and is safe to call, - * FALSE otherwise. - * - * @codeCoverageIgnore This is too exotic - */ - function function_usable(string $functionName): bool - { - static $_suhosin_func_blacklist; - - if (function_exists($functionName)) { - if (! isset($_suhosin_func_blacklist)) { - $_suhosin_func_blacklist = extension_loaded('suhosin') ? explode(',', trim(ini_get('suhosin.executor.func.blacklist'))) : []; - } - - return ! in_array($functionName, $_suhosin_func_blacklist, true); - } - - return false; - } -} - -if (! function_exists('helper')) { - /** - * Loads a helper file into memory. Supports namespaced helpers, - * both in and out of the 'Helpers' directory of a namespaced directory. - * - * Will load ALL helpers of the matching name, in the following order: - * 1. app/Helpers - * 2. {namespace}/Helpers - * 3. system/Helpers - * - * @param array|string $filenames - * - * @throws FileNotFoundException - */ - function helper($filenames): void - { - static $loaded = []; - - $loader = Services::locator(); - - if (! is_array($filenames)) { - $filenames = [$filenames]; - } - - // Store a list of all files to include... - $includes = []; - - foreach ($filenames as $filename) { - // Store our system and application helper - // versions so that we can control the load ordering. - $systemHelper = null; - $appHelper = null; - $localIncludes = []; - - if (strpos($filename, '_helper') === false) { - $filename .= '_helper'; - } - - // Check if this helper has already been loaded - if (in_array($filename, $loaded, true)) { - continue; - } - - // If the file is namespaced, we'll just grab that - // file and not search for any others - if (strpos($filename, '\\') !== false) { - $path = $loader->locateFile($filename, 'Helpers'); - - if (empty($path)) { - throw FileNotFoundException::forFileNotFound($filename); - } - - $includes[] = $path; - $loaded[] = $filename; - } else { - // No namespaces, so search in all available locations - $paths = $loader->search('Helpers/' . $filename); - - foreach ($paths as $path) { - if (strpos($path, APPPATH . 'Helpers' . DIRECTORY_SEPARATOR) === 0) { - $appHelper = $path; - } elseif (strpos($path, SYSTEMPATH . 'Helpers' . DIRECTORY_SEPARATOR) === 0) { - $systemHelper = $path; - } else { - $localIncludes[] = $path; - $loaded[] = $filename; - } - } - - // App-level helpers should override all others - if (! empty($appHelper)) { - $includes[] = $appHelper; - $loaded[] = $filename; - } - - // All namespaced files get added in next - $includes = [...$includes, ...$localIncludes]; - - // And the system default one should be added in last. - if (! empty($systemHelper)) { - $includes[] = $systemHelper; - $loaded[] = $filename; - } - } - } - - // Now actually include all of the files - foreach ($includes as $path) { - include_once $path; - } - } -} - -if (! function_exists('is_cli')) { - /** - * Check if PHP was invoked from the command line. - * - * @codeCoverageIgnore Cannot be tested fully as PHPUnit always run in php-cli - */ - function is_cli(): bool - { - if (in_array(PHP_SAPI, ['cli', 'phpdbg'], true)) { - return true; - } - - // PHP_SAPI could be 'cgi-fcgi', 'fpm-fcgi'. - // See https://github.com/codeigniter4/CodeIgniter4/pull/5393 - return ! isset($_SERVER['REMOTE_ADDR']) && ! isset($_SERVER['REQUEST_METHOD']); - } -} - -if (! function_exists('is_really_writable')) { - /** - * Tests for file writability - * - * is_writable() returns TRUE on Windows servers when you really can't write to - * the file, based on the read-only attribute. is_writable() is also unreliable - * on Unix servers if safe_mode is on. - * - * @see https://bugs.php.net/bug.php?id=54709 - * - * @throws Exception - * - * @codeCoverageIgnore Not practical to test, as travis runs on linux - */ - function is_really_writable(string $file): bool - { - // If we're on a Unix server we call is_writable - if (! is_windows()) { - return is_writable($file); - } - - /* For Windows servers and safe_mode "on" installations we'll actually - * write a file then read it. Bah... - */ - if (is_dir($file)) { - $file = rtrim($file, '/') . '/' . bin2hex(random_bytes(16)); - if (($fp = @fopen($file, 'ab')) === false) { - return false; - } - - fclose($fp); - @chmod($file, 0777); - @unlink($file); - - return true; - } - - if (! is_file($file) || ($fp = @fopen($file, 'ab')) === false) { - return false; - } - - fclose($fp); - - return true; - } -} - -if (! function_exists('is_windows')) { - /** - * Detect if platform is running in Windows. - */ - function is_windows(?bool $mock = null): bool - { - static $mocked; - - if (func_num_args() === 1) { - $mocked = $mock; - } - - return $mocked ?? DIRECTORY_SEPARATOR === '\\'; - } -} - -if (! function_exists('lang')) { - /** - * A convenience method to translate a string or array of them and format - * the result with the intl extension's MessageFormatter. - * - * @return list<string>|string - */ - function lang(string $line, array $args = [], ?string $locale = null) - { - $language = Services::language(); - - // Get active locale - $activeLocale = $language->getLocale(); - - if ($locale && $locale !== $activeLocale) { - $language->setLocale($locale); - } - - $line = $language->getLine($line, $args); - - if ($locale && $locale !== $activeLocale) { - // Reset to active locale - $language->setLocale($activeLocale); - } - - return $line; - } -} - -if (! function_exists('log_message')) { - /** - * A convenience/compatibility method for logging events through - * the Log system. - * - * Allowed log levels are: - * - emergency - * - alert - * - critical - * - error - * - warning - * - notice - * - info - * - debug - * - * @return bool - */ - function log_message(string $level, string $message, array $context = []) - { - // When running tests, we want to always ensure that the - // TestLogger is running, which provides utilities for - // for asserting that logs were called in the test code. - if (ENVIRONMENT === 'testing') { - $logger = new TestLogger(new Logger()); - - return $logger->log($level, $message, $context); - } - - return Services::logger(true)->log($level, $message, $context); // @codeCoverageIgnore - } -} - -if (! function_exists('model')) { - /** - * More simple way of getting model instances from Factories - * - * @template ModelTemplate of Model - * - * @param class-string<ModelTemplate>|string $name - * - * @return ModelTemplate|null - * @phpstan-return ($name is class-string<ModelTemplate> ? ModelTemplate : object|null) - */ - function model(string $name, bool $getShared = true, ?ConnectionInterface &$conn = null) - { - return Factories::models($name, ['getShared' => $getShared], $conn); - } -} - -if (! function_exists('old')) { - /** - * Provides access to "old input" that was set in the session - * during a redirect()->withInput(). - * - * @param string|null $default - * @param false|string $escape - * @phpstan-param false|'attr'|'css'|'html'|'js'|'raw'|'url' $escape - * - * @return array|string|null - */ - function old(string $key, $default = null, $escape = 'html') - { - // Ensure the session is loaded - if (session_status() === PHP_SESSION_NONE && ENVIRONMENT !== 'testing') { - session(); // @codeCoverageIgnore - } - - $request = Services::request(); - - $value = $request->getOldInput($key); - - // Return the default value if nothing - // found in the old input. - if ($value === null) { - return $default; - } - - return $escape === false ? $value : esc($value, $escape); - } -} - -if (! function_exists('redirect')) { - /** - * Convenience method that works with the current global $request and - * $router instances to redirect using named/reverse-routed routes - * to determine the URL to go to. - * - * If more control is needed, you must use $response->redirect explicitly. - * - * @param non-empty-string|null $route Route name or Controller::method - */ - function redirect(?string $route = null): RedirectResponse - { - $response = Services::redirectresponse(null, true); - - if ($route !== null) { - return $response->route($route); - } - - return $response; - } -} - -if (! function_exists('_solidus')) { - /** - * Generates the solidus character (`/`) depending on the HTML5 compatibility flag in `Config\DocTypes` - * - * @param DocTypes|null $docTypesConfig New config. For testing purpose only. - * - * @internal - */ - function _solidus(?DocTypes $docTypesConfig = null): string - { - static $docTypes = null; - - if ($docTypesConfig !== null) { - $docTypes = $docTypesConfig; - } - - $docTypes ??= new DocTypes(); - - if ($docTypes->html5 ?? false) { - return ''; - } - - return ' /'; - } -} - -if (! function_exists('remove_invisible_characters')) { - /** - * Remove Invisible Characters - * - * This prevents sandwiching null characters - * between ascii characters, like Java\0script. - */ - function remove_invisible_characters(string $str, bool $urlEncoded = true): string - { - $nonDisplayables = []; - - // every control character except newline (dec 10), - // carriage return (dec 13) and horizontal tab (dec 09) - if ($urlEncoded) { - $nonDisplayables[] = '/%0[0-8bcef]/'; // url encoded 00-08, 11, 12, 14, 15 - $nonDisplayables[] = '/%1[0-9a-f]/'; // url encoded 16-31 - } - - $nonDisplayables[] = '/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S'; // 00-08, 11, 12, 14-31, 127 - - do { - $str = preg_replace($nonDisplayables, '', $str, -1, $count); - } while ($count); - - return $str; - } -} - -if (! function_exists('request')) { - /** - * Returns the shared Request. - * - * @return CLIRequest|IncomingRequest - */ - function request() - { - return Services::request(); - } -} - -if (! function_exists('response')) { - /** - * Returns the shared Response. - */ - function response(): ResponseInterface - { - return Services::response(); - } -} - -if (! function_exists('route_to')) { - /** - * Given a route name or controller/method string and any params, - * will attempt to build the relative URL to the - * matching route. - * - * NOTE: This requires the controller/method to - * have a route defined in the routes Config file. - * - * @param string $method Route name or Controller::method - * @param int|string ...$params One or more parameters to be passed to the route. - * The last parameter allows you to set the locale. - * - * @return false|string The route (URI path relative to baseURL) or false if not found. - */ - function route_to(string $method, ...$params) - { - return Services::routes()->reverseRoute($method, ...$params); - } -} - -if (! function_exists('session')) { - /** - * A convenience method for accessing the session instance, - * or an item that has been set in the session. - * - * Examples: - * session()->set('foo', 'bar'); - * $foo = session('bar'); - * - * @return array|bool|float|int|object|Session|string|null - * @phpstan-return ($val is null ? Session : array|bool|float|int|object|string|null) - */ - function session(?string $val = null) - { - $session = Services::session(); - - // Returning a single item? - if (is_string($val)) { - return $session->get($val); - } - - return $session; - } -} - -if (! function_exists('service')) { - /** - * Allows cleaner access to the Services Config file. - * Always returns a SHARED instance of the class, so - * calling the function multiple times should always - * return the same instance. - * - * These are equal: - * - $timer = service('timer') - * - $timer = \CodeIgniter\Config\Services::timer(); - * - * @param array|bool|float|int|object|string|null ...$params - */ - function service(string $name, ...$params): ?object - { - return Services::$name(...$params); - } -} - -if (! function_exists('single_service')) { - /** - * Always returns a new instance of the class. - * - * @param array|bool|float|int|object|string|null ...$params - */ - function single_service(string $name, ...$params): ?object - { - $service = Services::serviceExists($name); - - if ($service === null) { - // The service is not defined anywhere so just return. - return null; - } - - $method = new ReflectionMethod($service, $name); - $count = $method->getNumberOfParameters(); - $mParam = $method->getParameters(); - - if ($count === 1) { - // This service needs only one argument, which is the shared - // instance flag, so let's wrap up and pass false here. - return $service::$name(false); - } - - // Fill in the params with the defaults, but stop before the last - for ($startIndex = count($params); $startIndex <= $count - 2; $startIndex++) { - $params[$startIndex] = $mParam[$startIndex]->getDefaultValue(); - } - - // Ensure the last argument will not create a shared instance - $params[$count - 1] = false; - - return $service::$name(...$params); - } -} - -if (! function_exists('slash_item')) { - // Unlike CI3, this function is placed here because - // it's not a config, or part of a config. - /** - * Fetch a config file item with slash appended (if not empty) - * - * @param string $item Config item name - * - * @return string|null The configuration item or NULL if - * the item doesn't exist - */ - function slash_item(string $item): ?string - { - $config = config(App::class); - - if (! property_exists($config, $item)) { - return null; - } - - $configItem = $config->{$item}; - - if (! is_scalar($configItem)) { - throw new RuntimeException(sprintf( - 'Cannot convert "%s::$%s" of type "%s" to type "string".', - App::class, - $item, - gettype($configItem) - )); - } - - $configItem = trim((string) $configItem); - - if ($configItem === '') { - return $configItem; - } - - return rtrim($configItem, '/') . '/'; - } -} - -if (! function_exists('stringify_attributes')) { - /** - * Stringify attributes for use in HTML tags. - * - * Helper function used to convert a string, array, or object - * of attributes to a string. - * - * @param array|object|string $attributes string, array, object that can be cast to array - */ - function stringify_attributes($attributes, bool $js = false): string - { - $atts = ''; - - if (empty($attributes)) { - return $atts; - } - - if (is_string($attributes)) { - return ' ' . $attributes; - } - - $attributes = (array) $attributes; - - foreach ($attributes as $key => $val) { - $atts .= ($js) ? $key . '=' . esc($val, 'js') . ',' : ' ' . $key . '="' . esc($val) . '"'; - } - - return rtrim($atts, ','); - } -} - -if (! function_exists('timer')) { - /** - * A convenience method for working with the timer. - * If no parameter is passed, it will return the timer instance. - * If callable is passed, it measures time of callable and - * returns its return value if any. - * Otherwise will start or stop the timer intelligently. - * - * @param non-empty-string|null $name - * @param (callable(): mixed)|null $callable - * - * @return mixed|Timer - * @phpstan-return ($name is null ? Timer : ($callable is (callable(): mixed) ? mixed : Timer)) - */ - function timer(?string $name = null, ?callable $callable = null) - { - $timer = Services::timer(); - - if ($name === null) { - return $timer; - } - - if ($callable !== null) { - return $timer->record($name, $callable); - } - - if ($timer->has($name)) { - return $timer->stop($name); - } - - return $timer->start($name); - } -} - -if (! function_exists('view')) { - /** - * Grabs the current RendererInterface-compatible class - * and tells it to render the specified view. Simply provides - * a convenience method that can be used in Controllers, - * libraries, and routed closures. - * - * NOTE: Does not provide any escaping of the data, so that must - * all be handled manually by the developer. - * - * @param array $options Options for saveData or third-party extensions. - */ - function view(string $name, array $data = [], array $options = []): string - { - $renderer = Services::renderer(); - - $config = config(View::class); - $saveData = $config->saveData; - - if (array_key_exists('saveData', $options)) { - $saveData = (bool) $options['saveData']; - unset($options['saveData']); - } - - return $renderer->setData($data, 'raw')->render($name, $options, $saveData); - } -} - -if (! function_exists('view_cell')) { - /** - * View cells are used within views to insert HTML chunks that are managed - * by other classes. - * - * @param array|string|null $params - * - * @throws ReflectionException - */ - function view_cell(string $library, $params = null, int $ttl = 0, ?string $cacheName = null): string - { - return Services::viewcell() - ->render($library, $params, $ttl, $cacheName); - } -} - -/** - * These helpers come from Laravel so will not be - * re-tested and can be ignored safely. - * - * @see https://github.com/laravel/framework/blob/8.x/src/Illuminate/Support/helpers.php - */ -if (! function_exists('class_basename')) { - /** - * Get the class "basename" of the given object / class. - * - * @param object|string $class - * - * @return string - * - * @codeCoverageIgnore - */ - function class_basename($class) - { - $class = is_object($class) ? get_class($class) : $class; - - return basename(str_replace('\\', '/', $class)); - } -} - -if (! function_exists('class_uses_recursive')) { - /** - * Returns all traits used by a class, its parent classes and trait of their traits. - * - * @param object|string $class - * - * @return array - * - * @codeCoverageIgnore - */ - function class_uses_recursive($class) - { - if (is_object($class)) { - $class = get_class($class); - } - - $results = []; - - foreach (array_reverse(class_parents($class)) + [$class => $class] as $class) { - $results += trait_uses_recursive($class); - } - - return array_unique($results); - } -} - -if (! function_exists('trait_uses_recursive')) { - /** - * Returns all traits used by a trait and its traits. - * - * @param string $trait - * - * @return array - * - * @codeCoverageIgnore - */ - function trait_uses_recursive($trait) - { - $traits = class_uses($trait) ?: []; - - foreach ($traits as $trait) { - $traits += trait_uses_recursive($trait); - } - - return $traits; - } -} diff --git a/system4.4.6/ComposerScripts.php b/system4.4.6/ComposerScripts.php deleted file mode 100644 index b95bdf54..00000000 --- a/system4.4.6/ComposerScripts.php +++ /dev/null @@ -1,173 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter; - -use FilesystemIterator; -use RecursiveDirectoryIterator; -use RecursiveIteratorIterator; -use SplFileInfo; - -/** - * This class is used by Composer during installs and updates - * to move files to locations within the system folder so that end-users - * do not need to use Composer to install a package, but can simply - * download. - * - * @codeCoverageIgnore - * - * @internal - */ -final class ComposerScripts -{ - /** - * Path to the ThirdParty directory. - */ - private static string $path = __DIR__ . '/ThirdParty/'; - - /** - * Direct dependencies of CodeIgniter to copy - * contents to `system/ThirdParty/`. - * - * @var array<string, array<string, string>> - */ - private static array $dependencies = [ - 'kint-src' => [ - 'license' => __DIR__ . '/../vendor/kint-php/kint/LICENSE', - 'from' => __DIR__ . '/../vendor/kint-php/kint/src/', - 'to' => __DIR__ . '/ThirdParty/Kint/', - ], - 'kint-resources' => [ - 'from' => __DIR__ . '/../vendor/kint-php/kint/resources/', - 'to' => __DIR__ . '/ThirdParty/Kint/resources/', - ], - 'escaper' => [ - 'license' => __DIR__ . '/../vendor/laminas/laminas-escaper/LICENSE.md', - 'from' => __DIR__ . '/../vendor/laminas/laminas-escaper/src/', - 'to' => __DIR__ . '/ThirdParty/Escaper/', - ], - 'psr-log' => [ - 'license' => __DIR__ . '/../vendor/psr/log/LICENSE', - 'from' => __DIR__ . '/../vendor/psr/log/Psr/Log/', - 'to' => __DIR__ . '/ThirdParty/PSR/Log/', - ], - ]; - - /** - * This static method is called by Composer after every update event, - * i.e., `composer install`, `composer update`, `composer remove`. - */ - public static function postUpdate() - { - self::recursiveDelete(self::$path); - - foreach (self::$dependencies as $key => $dependency) { - // Kint may be removed. - if (! is_dir($dependency['from']) && strpos($key, 'kint') === 0) { - continue; - } - - self::recursiveMirror($dependency['from'], $dependency['to']); - - if (isset($dependency['license'])) { - $license = basename($dependency['license']); - copy($dependency['license'], $dependency['to'] . '/' . $license); - } - } - - self::copyKintInitFiles(); - self::recursiveDelete(self::$dependencies['psr-log']['to'] . 'Test/'); - } - - /** - * Recursively remove the contents of the previous `system/ThirdParty`. - */ - private static function recursiveDelete(string $directory): void - { - if (! is_dir($directory)) { - echo sprintf('Cannot recursively delete "%s" as it does not exist.', $directory) . PHP_EOL; - - return; - } - - /** @var SplFileInfo $file */ - foreach (new RecursiveIteratorIterator( - new RecursiveDirectoryIterator(rtrim($directory, '\\/'), FilesystemIterator::SKIP_DOTS), - RecursiveIteratorIterator::CHILD_FIRST - ) as $file) { - $path = $file->getPathname(); - - if ($file->isDir()) { - @rmdir($path); - } else { - @unlink($path); - } - } - } - - /** - * Recursively copy the files and directories of the origin directory - * into the target directory, i.e. "mirror" its contents. - */ - private static function recursiveMirror(string $originDir, string $targetDir): void - { - $originDir = rtrim($originDir, '\\/'); - $targetDir = rtrim($targetDir, '\\/'); - - if (! is_dir($originDir)) { - echo sprintf('The origin directory "%s" was not found.', $originDir); - - exit(1); - } - - if (is_dir($targetDir)) { - echo sprintf('The target directory "%s" is existing. Run %s::recursiveDelete(\'%s\') first.', $targetDir, self::class, $targetDir); - - exit(1); - } - - if (! @mkdir($targetDir, 0755, true)) { - echo sprintf('Cannot create the target directory: "%s"', $targetDir) . PHP_EOL; - - exit(1); - } - - $dirLen = strlen($originDir); - - /** @var SplFileInfo $file */ - foreach (new RecursiveIteratorIterator( - new RecursiveDirectoryIterator($originDir, FilesystemIterator::SKIP_DOTS), - RecursiveIteratorIterator::SELF_FIRST - ) as $file) { - $origin = $file->getPathname(); - $target = $targetDir . substr($origin, $dirLen); - - if ($file->isDir()) { - @mkdir($target, 0755); - } else { - @copy($origin, $target); - } - } - } - - /** - * Copy Kint's init files into `system/ThirdParty/Kint/` - */ - private static function copyKintInitFiles(): void - { - $originDir = self::$dependencies['kint-src']['from'] . '../'; - $targetDir = self::$dependencies['kint-src']['to']; - - foreach (['init.php', 'init_helpers.php'] as $kintInit) { - @copy($originDir . $kintInit, $targetDir . $kintInit); - } - } -} diff --git a/system4.4.6/Config/AutoloadConfig.php b/system4.4.6/Config/AutoloadConfig.php deleted file mode 100644 index 33c977cc..00000000 --- a/system4.4.6/Config/AutoloadConfig.php +++ /dev/null @@ -1,151 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Config; - -use Laminas\Escaper\Escaper; -use Laminas\Escaper\Exception\ExceptionInterface; -use Laminas\Escaper\Exception\InvalidArgumentException as EscaperInvalidArgumentException; -use Laminas\Escaper\Exception\RuntimeException; -use Psr\Log\AbstractLogger; -use Psr\Log\InvalidArgumentException; -use Psr\Log\LoggerAwareInterface; -use Psr\Log\LoggerAwareTrait; -use Psr\Log\LoggerInterface; -use Psr\Log\LoggerTrait; -use Psr\Log\LogLevel; -use Psr\Log\NullLogger; - -/** - * AUTOLOADER CONFIGURATION - * - * This file defines the namespaces and class maps so the Autoloader - * can find the files as needed. - */ -class AutoloadConfig -{ - /** - * ------------------------------------------------------------------- - * Namespaces - * ------------------------------------------------------------------- - * This maps the locations of any namespaces in your application to - * their location on the file system. These are used by the autoloader - * to locate files the first time they have been instantiated. - * - * The '/app' and '/system' directories are already mapped for you. - * you may change the name of the 'App' namespace if you wish, - * but this should be done prior to creating any namespaced classes, - * else you will need to modify all of those classes for this to work. - * - * @var array<string, list<string>|string> - */ - public $psr4 = []; - - /** - * ------------------------------------------------------------------- - * Class Map - * ------------------------------------------------------------------- - * The class map provides a map of class names and their exact - * location on the drive. Classes loaded in this manner will have - * slightly faster performance because they will not have to be - * searched for within one or more directories as they would if they - * were being autoloaded through a namespace. - * - * @var array<string, string> - */ - public $classmap = []; - - /** - * ------------------------------------------------------------------- - * Files - * ------------------------------------------------------------------- - * The files array provides a list of paths to __non-class__ files - * that will be autoloaded. This can be useful for bootstrap operations - * or for loading functions. - * - * @var list<string> - */ - public $files = []; - - /** - * ------------------------------------------------------------------- - * Namespaces - * ------------------------------------------------------------------- - * This maps the locations of any namespaces in your application to - * their location on the file system. These are used by the autoloader - * to locate files the first time they have been instantiated. - * - * Do not change the name of the CodeIgniter namespace or your application - * will break. - * - * @var array<string, string> - */ - protected $corePsr4 = [ - 'CodeIgniter' => SYSTEMPATH, - 'App' => APPPATH, // To ensure filters, etc still found, - ]; - - /** - * ------------------------------------------------------------------- - * Class Map - * ------------------------------------------------------------------- - * The class map provides a map of class names and their exact - * location on the drive. Classes loaded in this manner will have - * slightly faster performance because they will not have to be - * searched for within one or more directories as they would if they - * were being autoloaded through a namespace. - * - * @var array<string, string> - */ - protected $coreClassmap = [ - AbstractLogger::class => SYSTEMPATH . 'ThirdParty/PSR/Log/AbstractLogger.php', - InvalidArgumentException::class => SYSTEMPATH . 'ThirdParty/PSR/Log/InvalidArgumentException.php', - LoggerAwareInterface::class => SYSTEMPATH . 'ThirdParty/PSR/Log/LoggerAwareInterface.php', - LoggerAwareTrait::class => SYSTEMPATH . 'ThirdParty/PSR/Log/LoggerAwareTrait.php', - LoggerInterface::class => SYSTEMPATH . 'ThirdParty/PSR/Log/LoggerInterface.php', - LoggerTrait::class => SYSTEMPATH . 'ThirdParty/PSR/Log/LoggerTrait.php', - LogLevel::class => SYSTEMPATH . 'ThirdParty/PSR/Log/LogLevel.php', - NullLogger::class => SYSTEMPATH . 'ThirdParty/PSR/Log/NullLogger.php', - ExceptionInterface::class => SYSTEMPATH . 'ThirdParty/Escaper/Exception/ExceptionInterface.php', - EscaperInvalidArgumentException::class => SYSTEMPATH . 'ThirdParty/Escaper/Exception/InvalidArgumentException.php', - RuntimeException::class => SYSTEMPATH . 'ThirdParty/Escaper/Exception/RuntimeException.php', - Escaper::class => SYSTEMPATH . 'ThirdParty/Escaper/Escaper.php', - ]; - - /** - * ------------------------------------------------------------------- - * Core Files - * ------------------------------------------------------------------- - * List of files from the framework to be autoloaded early. - * - * @var array<int, string> - */ - protected $coreFiles = []; - - /** - * Constructor. - * - * Merge the built-in and developer-configured psr4 and classmap, - * with preference to the developer ones. - */ - public function __construct() - { - if (isset($_SERVER['CI_ENVIRONMENT']) && $_SERVER['CI_ENVIRONMENT'] === 'testing') { - $this->psr4['Tests\Support'] = SUPPORTPATH; - $this->classmap['CodeIgniter\Log\TestLogger'] = SYSTEMPATH . 'Test/TestLogger.php'; - $this->classmap['CIDatabaseTestCase'] = SYSTEMPATH . 'Test/CIDatabaseTestCase.php'; - } - - $this->psr4 = array_merge($this->corePsr4, $this->psr4); - $this->classmap = array_merge($this->coreClassmap, $this->classmap); - $this->files = [...$this->coreFiles, ...$this->files]; - } -} diff --git a/system4.4.6/Config/BaseConfig.php b/system4.4.6/Config/BaseConfig.php deleted file mode 100644 index 5dd6cde2..00000000 --- a/system4.4.6/Config/BaseConfig.php +++ /dev/null @@ -1,266 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Config; - -use Config\Encryption; -use Config\Modules; -use Config\Services; -use ReflectionClass; -use ReflectionException; -use RuntimeException; - -/** - * Class BaseConfig - * - * Not intended to be used on its own, this class will attempt to - * automatically populate the child class' properties with values - * from the environment. - * - * These can be set within the .env file. - * - * @phpstan-consistent-constructor - * @see \CodeIgniter\Config\BaseConfigTest - */ -class BaseConfig -{ - /** - * An optional array of classes that will act as Registrars - * for rapidly setting config class properties. - * - * @var array - */ - public static $registrars = []; - - /** - * Whether to override properties by Env vars and Registrars. - */ - public static bool $override = true; - - /** - * Has module discovery happened yet? - * - * @var bool - */ - protected static $didDiscovery = false; - - /** - * The modules configuration. - * - * @var Modules|null - */ - protected static $moduleConfig; - - public static function __set_state(array $array) - { - static::$override = false; - $obj = new static(); - static::$override = true; - - $properties = array_keys(get_object_vars($obj)); - - foreach ($properties as $property) { - $obj->{$property} = $array[$property]; - } - - return $obj; - } - - /** - * @internal For testing purposes only. - * @testTag - */ - public static function setModules(Modules $modules): void - { - static::$moduleConfig = $modules; - } - - /** - * @internal For testing purposes only. - * @testTag - */ - public static function reset(): void - { - static::$registrars = []; - static::$override = true; - static::$didDiscovery = false; - static::$moduleConfig = null; - } - - /** - * Will attempt to get environment variables with names - * that match the properties of the child class. - * - * The "shortPrefix" is the lowercase-only config class name. - */ - public function __construct() - { - static::$moduleConfig ??= new Modules(); - - if (! static::$override) { - return; - } - - $this->registerProperties(); - - $properties = array_keys(get_object_vars($this)); - $prefix = static::class; - $slashAt = strrpos($prefix, '\\'); - $shortPrefix = strtolower(substr($prefix, $slashAt === false ? 0 : $slashAt + 1)); - - foreach ($properties as $property) { - $this->initEnvValue($this->{$property}, $property, $prefix, $shortPrefix); - - if ($this instanceof Encryption && $property === 'key') { - if (strpos($this->{$property}, 'hex2bin:') === 0) { - // Handle hex2bin prefix - $this->{$property} = hex2bin(substr($this->{$property}, 8)); - } elseif (strpos($this->{$property}, 'base64:') === 0) { - // Handle base64 prefix - $this->{$property} = base64_decode(substr($this->{$property}, 7), true); - } - } - } - } - - /** - * Initialization an environment-specific configuration setting - * - * @param array|bool|float|int|string|null $property - * - * @return void - */ - protected function initEnvValue(&$property, string $name, string $prefix, string $shortPrefix) - { - if (is_array($property)) { - foreach (array_keys($property) as $key) { - $this->initEnvValue($property[$key], "{$name}.{$key}", $prefix, $shortPrefix); - } - } elseif (($value = $this->getEnvValue($name, $prefix, $shortPrefix)) !== false && $value !== null) { - if ($value === 'false') { - $value = false; - } elseif ($value === 'true') { - $value = true; - } - if (is_bool($value)) { - $property = $value; - - return; - } - - $value = trim($value, '\'"'); - - if (is_int($property)) { - $value = (int) $value; - } elseif (is_float($property)) { - $value = (float) $value; - } - - $property = $value; - } - } - - /** - * Retrieve an environment-specific configuration setting - * - * @return string|null - */ - protected function getEnvValue(string $property, string $prefix, string $shortPrefix) - { - $shortPrefix = ltrim($shortPrefix, '\\'); - $underscoreProperty = str_replace('.', '_', $property); - - switch (true) { - case array_key_exists("{$shortPrefix}.{$property}", $_ENV): - return $_ENV["{$shortPrefix}.{$property}"]; - - case array_key_exists("{$shortPrefix}_{$underscoreProperty}", $_ENV): - return $_ENV["{$shortPrefix}_{$underscoreProperty}"]; - - case array_key_exists("{$shortPrefix}.{$property}", $_SERVER): - return $_SERVER["{$shortPrefix}.{$property}"]; - - case array_key_exists("{$shortPrefix}_{$underscoreProperty}", $_SERVER): - return $_SERVER["{$shortPrefix}_{$underscoreProperty}"]; - - case array_key_exists("{$prefix}.{$property}", $_ENV): - return $_ENV["{$prefix}.{$property}"]; - - case array_key_exists("{$prefix}_{$underscoreProperty}", $_ENV): - return $_ENV["{$prefix}_{$underscoreProperty}"]; - - case array_key_exists("{$prefix}.{$property}", $_SERVER): - return $_SERVER["{$prefix}.{$property}"]; - - case array_key_exists("{$prefix}_{$underscoreProperty}", $_SERVER): - return $_SERVER["{$prefix}_{$underscoreProperty}"]; - - default: - $value = getenv("{$shortPrefix}.{$property}"); - $value = $value === false ? getenv("{$shortPrefix}_{$underscoreProperty}") : $value; - $value = $value === false ? getenv("{$prefix}.{$property}") : $value; - $value = $value === false ? getenv("{$prefix}_{$underscoreProperty}") : $value; - - return $value === false ? null : $value; - } - } - - /** - * Provides external libraries a simple way to register one or more - * options into a config file. - * - * @return void - * - * @throws ReflectionException - */ - protected function registerProperties() - { - if (! static::$moduleConfig->shouldDiscover('registrars')) { - return; - } - - if (! static::$didDiscovery) { - $locator = Services::locator(); - $registrarsFiles = $locator->search('Config/Registrar.php'); - - foreach ($registrarsFiles as $file) { - $className = $locator->getClassname($file); - static::$registrars[] = new $className(); - } - - static::$didDiscovery = true; - } - - $shortName = (new ReflectionClass($this))->getShortName(); - - // Check the registrar class for a method named after this class' shortName - foreach (static::$registrars as $callable) { - // ignore non-applicable registrars - if (! method_exists($callable, $shortName)) { - continue; // @codeCoverageIgnore - } - - $properties = $callable::$shortName(); - - if (! is_array($properties)) { - throw new RuntimeException('Registrars must return an array of properties and their values.'); - } - - foreach ($properties as $property => $value) { - if (isset($this->{$property}) && is_array($this->{$property}) && is_array($value)) { - $this->{$property} = array_merge($this->{$property}, $value); - } else { - $this->{$property} = $value; - } - } - } - } -} diff --git a/system4.4.6/Config/BaseService.php b/system4.4.6/Config/BaseService.php deleted file mode 100644 index 1c80c80d..00000000 --- a/system4.4.6/Config/BaseService.php +++ /dev/null @@ -1,391 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Config; - -use CodeIgniter\Autoloader\Autoloader; -use CodeIgniter\Autoloader\FileLocator; -use CodeIgniter\Cache\CacheInterface; -use CodeIgniter\Cache\ResponseCache; -use CodeIgniter\CLI\Commands; -use CodeIgniter\CodeIgniter; -use CodeIgniter\Database\ConnectionInterface; -use CodeIgniter\Database\MigrationRunner; -use CodeIgniter\Debug\Exceptions; -use CodeIgniter\Debug\Iterator; -use CodeIgniter\Debug\Timer; -use CodeIgniter\Debug\Toolbar; -use CodeIgniter\Email\Email; -use CodeIgniter\Encryption\EncrypterInterface; -use CodeIgniter\Filters\Filters; -use CodeIgniter\Format\Format; -use CodeIgniter\Honeypot\Honeypot; -use CodeIgniter\HTTP\CLIRequest; -use CodeIgniter\HTTP\ContentSecurityPolicy; -use CodeIgniter\HTTP\CURLRequest; -use CodeIgniter\HTTP\IncomingRequest; -use CodeIgniter\HTTP\Negotiate; -use CodeIgniter\HTTP\RedirectResponse; -use CodeIgniter\HTTP\Request; -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\ResponseInterface; -use CodeIgniter\HTTP\SiteURIFactory; -use CodeIgniter\HTTP\URI; -use CodeIgniter\Images\Handlers\BaseHandler; -use CodeIgniter\Language\Language; -use CodeIgniter\Log\Logger; -use CodeIgniter\Pager\Pager; -use CodeIgniter\Router\RouteCollection; -use CodeIgniter\Router\RouteCollectionInterface; -use CodeIgniter\Router\Router; -use CodeIgniter\Security\Security; -use CodeIgniter\Session\Session; -use CodeIgniter\Superglobals; -use CodeIgniter\Throttle\Throttler; -use CodeIgniter\Typography\Typography; -use CodeIgniter\Validation\ValidationInterface; -use CodeIgniter\View\Cell; -use CodeIgniter\View\Parser; -use CodeIgniter\View\RendererInterface; -use CodeIgniter\View\View; -use Config\App; -use Config\Autoload; -use Config\Cache; -use Config\ContentSecurityPolicy as CSPConfig; -use Config\Encryption; -use Config\Exceptions as ConfigExceptions; -use Config\Filters as ConfigFilters; -use Config\Format as ConfigFormat; -use Config\Honeypot as ConfigHoneyPot; -use Config\Images; -use Config\Migrations; -use Config\Modules; -use Config\Pager as ConfigPager; -use Config\Services as AppServices; -use Config\Toolbar as ConfigToolbar; -use Config\Validation as ConfigValidation; -use Config\View as ConfigView; - -/** - * Services Configuration file. - * - * Services are simply other classes/libraries that the system uses - * to do its job. This is used by CodeIgniter to allow the core of the - * framework to be swapped out easily without affecting the usage within - * the rest of your application. - * - * This is used in place of a Dependency Injection container primarily - * due to its simplicity, which allows a better long-term maintenance - * of the applications built on top of CodeIgniter. A bonus side-effect - * is that IDEs are able to determine what class you are calling - * whereas with DI Containers there usually isn't a way for them to do this. - * - * Warning: To allow overrides by service providers do not use static calls, - * instead call out to \Config\Services (imported as AppServices). - * - * @see http://blog.ircmaxell.com/2015/11/simple-easy-risk-and-change.html - * @see http://www.infoq.com/presentations/Simple-Made-Easy - * - * @method static CacheInterface cache(Cache $config = null, $getShared = true) - * @method static CLIRequest clirequest(App $config = null, $getShared = true) - * @method static CodeIgniter codeigniter(App $config = null, $getShared = true) - * @method static Commands commands($getShared = true) - * @method static void createRequest(App $config, bool $isCli = false) - * @method static ContentSecurityPolicy csp(CSPConfig $config = null, $getShared = true) - * @method static CURLRequest curlrequest($options = [], ResponseInterface $response = null, App $config = null, $getShared = true) - * @method static Email email($config = null, $getShared = true) - * @method static EncrypterInterface encrypter(Encryption $config = null, $getShared = false) - * @method static Exceptions exceptions(ConfigExceptions $config = null, $getShared = true) - * @method static Filters filters(ConfigFilters $config = null, $getShared = true) - * @method static Format format(ConfigFormat $config = null, $getShared = true) - * @method static Honeypot honeypot(ConfigHoneyPot $config = null, $getShared = true) - * @method static BaseHandler image($handler = null, Images $config = null, $getShared = true) - * @method static IncomingRequest incomingrequest(?App $config = null, bool $getShared = true) - * @method static Iterator iterator($getShared = true) - * @method static Language language($locale = null, $getShared = true) - * @method static Logger logger($getShared = true) - * @method static MigrationRunner migrations(Migrations $config = null, ConnectionInterface $db = null, $getShared = true) - * @method static Negotiate negotiator(RequestInterface $request = null, $getShared = true) - * @method static Pager pager(ConfigPager $config = null, RendererInterface $view = null, $getShared = true) - * @method static Parser parser($viewPath = null, ConfigView $config = null, $getShared = true) - * @method static RedirectResponse redirectresponse(App $config = null, $getShared = true) - * @method static View renderer($viewPath = null, ConfigView $config = null, $getShared = true) - * @method static IncomingRequest|CLIRequest request(App $config = null, $getShared = true) - * @method static ResponseInterface response(App $config = null, $getShared = true) - * @method static ResponseCache responsecache(?Cache $config = null, ?CacheInterface $cache = null, bool $getShared = true) - * @method static Router router(RouteCollectionInterface $routes = null, Request $request = null, $getShared = true) - * @method static RouteCollection routes($getShared = true) - * @method static Security security(App $config = null, $getShared = true) - * @method static Session session(App $config = null, $getShared = true) - * @method static SiteURIFactory siteurifactory(App $config = null, Superglobals $superglobals = null, $getShared = true) - * @method static Superglobals superglobals(array $server = null, array $get = null, bool $getShared = true) - * @method static Throttler throttler($getShared = true) - * @method static Timer timer($getShared = true) - * @method static Toolbar toolbar(ConfigToolbar $config = null, $getShared = true) - * @method static Typography typography($getShared = true) - * @method static URI uri($uri = null, $getShared = true) - * @method static ValidationInterface validation(ConfigValidation $config = null, $getShared = true) - * @method static Cell viewcell($getShared = true) - */ -class BaseService -{ - /** - * Cache for instance of any services that - * have been requested as a "shared" instance. - * Keys should be lowercase service names. - * - * @var array - */ - protected static $instances = []; - - /** - * Mock objects for testing which are returned if exist. - * - * @var array - */ - protected static $mocks = []; - - /** - * Have we already discovered other Services? - * - * @var bool - */ - protected static $discovered = false; - - /** - * A cache of other service classes we've found. - * - * @var array - */ - protected static $services = []; - - /** - * A cache of the names of services classes found. - * - * @var array<string> - */ - private static array $serviceNames = []; - - /** - * Returns a shared instance of any of the class' services. - * - * $key must be a name matching a service. - * - * @param array|bool|float|int|object|string|null ...$params - * - * @return object - */ - protected static function getSharedInstance(string $key, ...$params) - { - $key = strtolower($key); - - // Returns mock if exists - if (isset(static::$mocks[$key])) { - return static::$mocks[$key]; - } - - if (! isset(static::$instances[$key])) { - // Make sure $getShared is false - $params[] = false; - - static::$instances[$key] = AppServices::$key(...$params); - } - - return static::$instances[$key]; - } - - /** - * The Autoloader class is the central class that handles our - * spl_autoload_register method, and helper methods. - * - * @return Autoloader - */ - public static function autoloader(bool $getShared = true) - { - if ($getShared) { - if (empty(static::$instances['autoloader'])) { - static::$instances['autoloader'] = new Autoloader(); - } - - return static::$instances['autoloader']; - } - - return new Autoloader(); - } - - /** - * The file locator provides utility methods for looking for non-classes - * within namespaced folders, as well as convenience methods for - * loading 'helpers', and 'libraries'. - * - * @return FileLocator - */ - public static function locator(bool $getShared = true) - { - if ($getShared) { - if (empty(static::$instances['locator'])) { - static::$instances['locator'] = new FileLocator(static::autoloader()); - } - - return static::$mocks['locator'] ?? static::$instances['locator']; - } - - return new FileLocator(static::autoloader()); - } - - /** - * Provides the ability to perform case-insensitive calling of service - * names. - * - * @return object|null - */ - public static function __callStatic(string $name, array $arguments) - { - $service = static::serviceExists($name); - - if ($service === null) { - return null; - } - - return $service::$name(...$arguments); - } - - /** - * Check if the requested service is defined and return the declaring - * class. Return null if not found. - */ - public static function serviceExists(string $name): ?string - { - static::buildServicesCache(); - $services = array_merge(self::$serviceNames, [Services::class]); - $name = strtolower($name); - - foreach ($services as $service) { - if (method_exists($service, $name)) { - return $service; - } - } - - return null; - } - - /** - * Reset shared instances and mocks for testing. - * - * @return void - */ - public static function reset(bool $initAutoloader = true) - { - static::$mocks = []; - static::$instances = []; - - if ($initAutoloader) { - static::autoloader()->initialize(new Autoload(), new Modules()); - } - } - - /** - * Resets any mock and shared instances for a single service. - * - * @return void - */ - public static function resetSingle(string $name) - { - $name = strtolower($name); - unset(static::$mocks[$name], static::$instances[$name]); - } - - /** - * Inject mock object for testing. - * - * @param object $mock - * - * @return void - */ - public static function injectMock(string $name, $mock) - { - static::$mocks[strtolower($name)] = $mock; - } - - /** - * Will scan all psr4 namespaces registered with system to look - * for new Config\Services files. Caches a copy of each one, then - * looks for the service method in each, returning an instance of - * the service, if available. - * - * @return object|null - * - * @deprecated - * - * @codeCoverageIgnore - */ - protected static function discoverServices(string $name, array $arguments) - { - if (! static::$discovered) { - if ((new Modules())->shouldDiscover('services')) { - $locator = static::locator(); - $files = $locator->search('Config/Services'); - - if (empty($files)) { - // no files at all found - this would be really, really bad - return null; - } - - // Get instances of all service classes and cache them locally. - foreach ($files as $file) { - $classname = $locator->getClassname($file); - - if ($classname !== Services::class) { - static::$services[] = new $classname(); - } - } - } - - static::$discovered = true; - } - - if (! static::$services) { - // we found stuff, but no services - this would be really bad - return null; - } - - // Try to find the desired service method - foreach (static::$services as $class) { - if (method_exists($class, $name)) { - return $class::$name(...$arguments); - } - } - - return null; - } - - protected static function buildServicesCache(): void - { - if (! static::$discovered) { - if ((new Modules())->shouldDiscover('services')) { - $locator = static::locator(); - $files = $locator->search('Config/Services'); - - // Get instances of all service classes and cache them locally. - foreach ($files as $file) { - $classname = $locator->getClassname($file); - - if ($classname !== Services::class) { - self::$serviceNames[] = $classname; - static::$services[] = new $classname(); - } - } - } - - static::$discovered = true; - } - } -} diff --git a/system4.4.6/Config/Config.php b/system4.4.6/Config/Config.php deleted file mode 100644 index 90a6b7ca..00000000 --- a/system4.4.6/Config/Config.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Config; - -/** - * @deprecated Use CodeIgniter\Config\Factories::config() - * @see \CodeIgniter\Config\ConfigTest - */ -class Config -{ - /** - * Create new configuration instances or return - * a shared instance - * - * @param string $name Configuration name - * @param bool $getShared Use shared instance - * - * @return object|null - */ - public static function get(string $name, bool $getShared = true) - { - return Factories::config($name, ['getShared' => $getShared]); - } - - /** - * Helper method for injecting mock instances while testing. - * - * @param object $instance - * - * @return void - */ - public static function injectMock(string $name, $instance) - { - Factories::injectMock('config', $name, $instance); - } - - /** - * Resets the static arrays - * - * @return void - */ - public static function reset() - { - Factories::reset('config'); - } -} diff --git a/system4.4.6/Config/DotEnv.php b/system4.4.6/Config/DotEnv.php deleted file mode 100644 index 05ecab90..00000000 --- a/system4.4.6/Config/DotEnv.php +++ /dev/null @@ -1,238 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Config; - -use InvalidArgumentException; - -/** - * Environment-specific configuration - * - * @see \CodeIgniter\Config\DotEnvTest - */ -class DotEnv -{ - /** - * The directory where the .env file can be located. - * - * @var string - */ - protected $path; - - /** - * Builds the path to our file. - */ - public function __construct(string $path, string $file = '.env') - { - $this->path = rtrim($path, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . $file; - } - - /** - * The main entry point, will load the .env file and process it - * so that we end up with all settings in the PHP environment vars - * (i.e. getenv(), $_ENV, and $_SERVER) - */ - public function load(): bool - { - $vars = $this->parse(); - - return $vars !== null; - } - - /** - * Parse the .env file into an array of key => value - */ - public function parse(): ?array - { - // We don't want to enforce the presence of a .env file, they should be optional. - if (! is_file($this->path)) { - return null; - } - - // Ensure the file is readable - if (! is_readable($this->path)) { - throw new InvalidArgumentException("The .env file is not readable: {$this->path}"); - } - - $vars = []; - - $lines = file($this->path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); - - foreach ($lines as $line) { - // Is it a comment? - if (strpos(trim($line), '#') === 0) { - continue; - } - - // If there is an equal sign, then we know we are assigning a variable. - if (strpos($line, '=') !== false) { - [$name, $value] = $this->normaliseVariable($line); - $vars[$name] = $value; - $this->setVariable($name, $value); - } - } - - return $vars; - } - - /** - * Sets the variable into the environment. Will parse the string - * first to look for {name}={value} pattern, ensure that nested - * variables are handled, and strip it of single and double quotes. - * - * @return void - */ - protected function setVariable(string $name, string $value = '') - { - if (! getenv($name, true)) { - putenv("{$name}={$value}"); - } - - if (empty($_ENV[$name])) { - $_ENV[$name] = $value; - } - - if (empty($_SERVER[$name])) { - $_SERVER[$name] = $value; - } - } - - /** - * Parses for assignment, cleans the $name and $value, and ensures - * that nested variables are handled. - */ - public function normaliseVariable(string $name, string $value = ''): array - { - // Split our compound string into its parts. - if (strpos($name, '=') !== false) { - [$name, $value] = explode('=', $name, 2); - } - - $name = trim($name); - $value = trim($value); - - // Sanitize the name - $name = preg_replace('/^export[ \t]++(\S+)/', '$1', $name); - $name = str_replace(['\'', '"'], '', $name); - - // Sanitize the value - $value = $this->sanitizeValue($value); - $value = $this->resolveNestedVariables($value); - - return [$name, $value]; - } - - /** - * Strips quotes from the environment variable value. - * - * This was borrowed from the excellent phpdotenv with very few changes. - * https://github.com/vlucas/phpdotenv - * - * @throws InvalidArgumentException - */ - protected function sanitizeValue(string $value): string - { - if (! $value) { - return $value; - } - - // Does it begin with a quote? - if (strpbrk($value[0], '"\'') !== false) { - // value starts with a quote - $quote = $value[0]; - - $regexPattern = sprintf( - '/^ - %1$s # match a quote at the start of the value - ( # capturing sub-pattern used - (?: # we do not need to capture this - [^%1$s\\\\] # any character other than a quote or backslash - |\\\\\\\\ # or two backslashes together - |\\\\%1$s # or an escaped quote e.g \" - )* # as many characters that match the previous rules - ) # end of the capturing sub-pattern - %1$s # and the closing quote - .*$ # and discard any string after the closing quote - /mx', - $quote - ); - - $value = preg_replace($regexPattern, '$1', $value); - $value = str_replace("\\{$quote}", $quote, $value); - $value = str_replace('\\\\', '\\', $value); - } else { - $parts = explode(' #', $value, 2); - $value = trim($parts[0]); - - // Unquoted values cannot contain whitespace - if (preg_match('/\s+/', $value) > 0) { - throw new InvalidArgumentException('.env values containing spaces must be surrounded by quotes.'); - } - } - - return $value; - } - - /** - * Resolve the nested variables. - * - * Look for ${varname} patterns in the variable value and replace with an existing - * environment variable. - * - * This was borrowed from the excellent phpdotenv with very few changes. - * https://github.com/vlucas/phpdotenv - */ - protected function resolveNestedVariables(string $value): string - { - if (strpos($value, '$') !== false) { - $value = preg_replace_callback( - '/\${([a-zA-Z0-9_\.]+)}/', - function ($matchedPatterns) { - $nestedVariable = $this->getVariable($matchedPatterns[1]); - - if ($nestedVariable === null) { - return $matchedPatterns[0]; - } - - return $nestedVariable; - }, - $value - ); - } - - return $value; - } - - /** - * Search the different places for environment variables and return first value found. - * - * This was borrowed from the excellent phpdotenv with very few changes. - * https://github.com/vlucas/phpdotenv - * - * @return string|null - */ - protected function getVariable(string $name) - { - switch (true) { - case array_key_exists($name, $_ENV): - return $_ENV[$name]; - - case array_key_exists($name, $_SERVER): - return $_SERVER[$name]; - - default: - $value = getenv($name); - - // switch getenv default to null - return $value === false ? null : $value; - } - } -} diff --git a/system4.4.6/Config/Factories.php b/system4.4.6/Config/Factories.php deleted file mode 100644 index c86bfd95..00000000 --- a/system4.4.6/Config/Factories.php +++ /dev/null @@ -1,539 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Config; - -use CodeIgniter\Database\ConnectionInterface; -use CodeIgniter\Model; -use Config\Services; -use InvalidArgumentException; - -/** - * Factories for creating instances. - * - * Factories allow dynamic loading of components by their path - * and name. The "shared instance" implementation provides a - * large performance boost and helps keep code clean of lengthy - * instantiation checks. - * - * @method static BaseConfig|null config(...$arguments) - * @method static Model|null models(string $alias, array $options = [], ?ConnectionInterface &$conn = null) - * @see \CodeIgniter\Config\FactoriesTest - */ -class Factories -{ - /** - * Store of component-specific options, usually - * from CodeIgniter\Config\Factory. - * - * @var array<string, array<string, bool|string|null>> - */ - protected static $options = []; - - /** - * Explicit options for the Config - * component to prevent logic loops. - * - * @var array<string, bool|string|null> - */ - private static array $configOptions = [ - 'component' => 'config', - 'path' => 'Config', - 'instanceOf' => null, - 'getShared' => true, - 'preferApp' => true, - ]; - - /** - * Mapping of class aliases to their true Fully Qualified Class Name (FQCN). - * - * Class aliases can be: - * - FQCN. E.g., 'App\Lib\SomeLib' - * - short classname. E.g., 'SomeLib' - * - short classname with sub-directories. E.g., 'Sub/SomeLib' - * - * [component => [alias => FQCN]] - * - * @var array<string, array<string, class-string>> - */ - protected static $aliases = []; - - /** - * Store for instances of any component that - * has been requested as "shared". - * - * A multi-dimensional array with components as - * keys to the array of name-indexed instances. - * - * [component => [FQCN => instance]] - * - * @var array<string, array<class-string, object>> - */ - protected static $instances = []; - - /** - * Whether the component instances are updated? - * - * @var array<string, true> [component => true] - * - * @internal For caching only - */ - protected static $updated = []; - - /** - * Define the class to load. You can *override* the concrete class. - * - * @param string $component Lowercase, plural component name - * @param string $alias Class alias. See the $aliases property. - * @param class-string $classname FQCN to be loaded - */ - public static function define(string $component, string $alias, string $classname): void - { - $component = strtolower($component); - - if (isset(self::$aliases[$component][$alias])) { - if (self::$aliases[$component][$alias] === $classname) { - return; - } - - throw new InvalidArgumentException( - 'Already defined in Factories: ' . $component . ' ' . $alias . ' -> ' . self::$aliases[$component][$alias] - ); - } - - if (! class_exists($classname)) { - throw new InvalidArgumentException('No such class: ' . $classname); - } - - // Force a configuration to exist for this component. - // Otherwise, getOptions() will reset the component. - self::getOptions($component); - - self::$aliases[$component][$alias] = $classname; - self::$updated[$component] = true; - } - - /** - * Loads instances based on the method component name. Either - * creates a new instance or returns an existing shared instance. - * - * @return object|null - */ - public static function __callStatic(string $component, array $arguments) - { - $component = strtolower($component); - - // First argument is the class alias, second is options - $alias = trim(array_shift($arguments), '\\ '); - $options = array_shift($arguments) ?? []; - - // Determine the component-specific options - $options = array_merge(self::getOptions($component), $options); - - if (! $options['getShared']) { - if (isset(self::$aliases[$component][$alias])) { - $class = self::$aliases[$component][$alias]; - - return new $class(...$arguments); - } - - // Try to locate the class - $class = self::locateClass($options, $alias); - if ($class !== null) { - return new $class(...$arguments); - } - - return null; - } - - // Check for an existing definition - $instance = self::getDefinedInstance($options, $alias, $arguments); - if ($instance !== null) { - return $instance; - } - - // Try to locate the class - if (! $class = self::locateClass($options, $alias)) { - return null; - } - - self::createInstance($options['component'], $class, $arguments); - self::setAlias($options['component'], $alias, $class); - - return self::$instances[$options['component']][$class]; - } - - /** - * Gets the defined instance. If not exists, creates new one. - * - * @return object|null - */ - private static function getDefinedInstance(array $options, string $alias, array $arguments) - { - // The alias is already defined. - if (isset(self::$aliases[$options['component']][$alias])) { - $class = self::$aliases[$options['component']][$alias]; - - // Need to verify if the shared instance matches the request - if (self::verifyInstanceOf($options, $class)) { - // Check for an existing instance - if (isset(self::$instances[$options['component']][$class])) { - return self::$instances[$options['component']][$class]; - } - - self::createInstance($options['component'], $class, $arguments); - - return self::$instances[$options['component']][$class]; - } - } - - // Try to locate the class - if (! $class = self::locateClass($options, $alias)) { - return null; - } - - // Check for an existing instance for the class - if (isset(self::$instances[$options['component']][$class])) { - self::setAlias($options['component'], $alias, $class); - - return self::$instances[$options['component']][$class]; - } - - return null; - } - - /** - * Creates the shared instance. - */ - private static function createInstance(string $component, string $class, array $arguments): void - { - self::$instances[$component][$class] = new $class(...$arguments); - self::$updated[$component] = true; - } - - /** - * Sets alias - */ - private static function setAlias(string $component, string $alias, string $class): void - { - self::$aliases[$component][$alias] = $class; - self::$updated[$component] = true; - - // If a short classname is specified, also register FQCN to share the instance. - if (! isset(self::$aliases[$component][$class]) && ! self::isNamespaced($alias)) { - self::$aliases[$component][$class] = $class; - } - } - - /** - * Is the component Config? - * - * @param string $component Lowercase, plural component name - */ - private static function isConfig(string $component): bool - { - return $component === 'config'; - } - - /** - * Finds a component class - * - * @param array $options The array of component-specific directives - * @param string $alias Class alias. See the $aliases property. - */ - protected static function locateClass(array $options, string $alias): ?string - { - // Check for low-hanging fruit - if ( - class_exists($alias, false) - && self::verifyPreferApp($options, $alias) - && self::verifyInstanceOf($options, $alias) - ) { - return $alias; - } - - // Determine the relative class names we need - $basename = self::getBasename($alias); - $appname = self::isConfig($options['component']) - ? 'Config\\' . $basename - : rtrim(APP_NAMESPACE, '\\') . '\\' . $options['path'] . '\\' . $basename; - - // If an App version was requested then see if it verifies - if ( - // preferApp is used only for no namespaced class. - ! self::isNamespaced($alias) - && $options['preferApp'] && class_exists($appname) - && self::verifyInstanceOf($options, $alias) - ) { - return $appname; - } - - // If we have ruled out an App version and the class exists then try it - if (class_exists($alias) && self::verifyInstanceOf($options, $alias)) { - return $alias; - } - - // Have to do this the hard way... - $locator = Services::locator(); - - // Check if the class alias was namespaced - if (self::isNamespaced($alias)) { - if (! $file = $locator->locateFile($alias, $options['path'])) { - return null; - } - $files = [$file]; - } - // No namespace? Search for it - // Check all namespaces, prioritizing App and modules - elseif (! $files = $locator->search($options['path'] . DIRECTORY_SEPARATOR . $alias)) { - return null; - } - - // Check all files for a valid class - foreach ($files as $file) { - $class = $locator->getClassname($file); - - if ($class && self::verifyInstanceOf($options, $class)) { - return $class; - } - } - - return null; - } - - /** - * Is the class alias namespaced or not? - * - * @param string $alias Class alias. See the $aliases property. - */ - private static function isNamespaced(string $alias): bool - { - return strpos($alias, '\\') !== false; - } - - /** - * Verifies that a class & config satisfy the "preferApp" option - * - * @param array $options The array of component-specific directives - * @param string $alias Class alias. See the $aliases property. - */ - protected static function verifyPreferApp(array $options, string $alias): bool - { - // Anything without that restriction passes - if (! $options['preferApp']) { - return true; - } - - // Special case for Config since its App namespace is actually \Config - if (self::isConfig($options['component'])) { - return strpos($alias, 'Config') === 0; - } - - return strpos($alias, APP_NAMESPACE) === 0; - } - - /** - * Verifies that a class & config satisfy the "instanceOf" option - * - * @param array $options The array of component-specific directives - * @param string $alias Class alias. See the $aliases property. - */ - protected static function verifyInstanceOf(array $options, string $alias): bool - { - // Anything without that restriction passes - if (! $options['instanceOf']) { - return true; - } - - return is_a($alias, $options['instanceOf'], true); - } - - /** - * Returns the component-specific configuration - * - * @param string $component Lowercase, plural component name - * - * @return array<string, bool|string|null> - * - * @internal For testing only - * @testTag - */ - public static function getOptions(string $component): array - { - $component = strtolower($component); - - // Check for a stored version - if (isset(self::$options[$component])) { - return self::$options[$component]; - } - - $values = self::isConfig($component) - // Handle Config as a special case to prevent logic loops - ? self::$configOptions - // Load values from the best Factory configuration (will include Registrars) - : config('Factory')->{$component} ?? []; - - // The setOptions() reset the component. So getOptions() may reset - // the component. - return self::setOptions($component, $values); - } - - /** - * Normalizes, stores, and returns the configuration for a specific component - * - * @param string $component Lowercase, plural component name - * @param array $values option values - * - * @return array<string, bool|string|null> The result after applying defaults and normalization - */ - public static function setOptions(string $component, array $values): array - { - $component = strtolower($component); - - // Allow the config to replace the component name, to support "aliases" - $values['component'] = strtolower($values['component'] ?? $component); - - // Reset this component so instances can be rediscovered with the updated config - self::reset($values['component']); - - // If no path was available then use the component - $values['path'] = trim($values['path'] ?? ucfirst($values['component']), '\\ '); - - // Add defaults for any missing values - $values = array_merge(Factory::$default, $values); - - // Store the result to the supplied name and potential alias - self::$options[$component] = $values; - self::$options[$values['component']] = $values; - - return $values; - } - - /** - * Resets the static arrays, optionally just for one component - * - * @param string|null $component Lowercase, plural component name - * - * @return void - */ - public static function reset(?string $component = null) - { - if ($component !== null) { - unset( - self::$options[$component], - self::$aliases[$component], - self::$instances[$component], - self::$updated[$component] - ); - - return; - } - - self::$options = []; - self::$aliases = []; - self::$instances = []; - self::$updated = []; - } - - /** - * Helper method for injecting mock instances - * - * @param string $component Lowercase, plural component name - * @param string $alias Class alias. See the $aliases property. - * - * @return void - * - * @internal For testing only - * @testTag - */ - public static function injectMock(string $component, string $alias, object $instance) - { - $component = strtolower($component); - - // Force a configuration to exist for this component - self::getOptions($component); - - $class = get_class($instance); - - self::$instances[$component][$class] = $instance; - self::$aliases[$component][$alias] = $class; - - if (self::isConfig($component)) { - if (self::isNamespaced($alias)) { - self::$aliases[$component][self::getBasename($alias)] = $class; - } else { - self::$aliases[$component]['Config\\' . $alias] = $class; - } - } - } - - /** - * Gets a basename from a class alias, namespaced or not. - * - * @internal For testing only - * @testTag - */ - public static function getBasename(string $alias): string - { - // Determine the basename - if ($basename = strrchr($alias, '\\')) { - return substr($basename, 1); - } - - return $alias; - } - - /** - * Gets component data for caching. - * - * @internal For caching only - */ - public static function getComponentInstances(string $component): array - { - if (! isset(self::$aliases[$component])) { - return [ - 'options' => [], - 'aliases' => [], - 'instances' => [], - ]; - } - - return [ - 'options' => self::$options[$component], - 'aliases' => self::$aliases[$component], - 'instances' => self::$instances[$component], - ]; - } - - /** - * Sets component data - * - * @internal For caching only - */ - public static function setComponentInstances(string $component, array $data): void - { - self::$options[$component] = $data['options']; - self::$aliases[$component] = $data['aliases']; - self::$instances[$component] = $data['instances']; - - unset(self::$updated[$component]); - } - - /** - * Whether the component instances are updated? - * - * @internal For caching only - */ - public static function isUpdated(string $component): bool - { - return isset(self::$updated[$component]); - } -} diff --git a/system4.4.6/Config/Factory.php b/system4.4.6/Config/Factory.php deleted file mode 100644 index 5889bf4d..00000000 --- a/system4.4.6/Config/Factory.php +++ /dev/null @@ -1,48 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Config; - -/** - * Factories Configuration file. - * - * Provides overriding directives for how - * Factories should handle discovery and - * instantiation of specific components. - * Each property should correspond to the - * lowercase, plural component name. - */ -class Factory extends BaseConfig -{ - /** - * Supplies a default set of options to merge for - * all unspecified factory components. - * - * @var array - */ - public static $default = [ - 'component' => null, - 'path' => null, - 'instanceOf' => null, - 'getShared' => true, - 'preferApp' => true, - ]; - - /** - * Specifies that Models should always favor child - * classes to allow easy extension of module Models. - * - * @var array - */ - public $models = [ - 'preferApp' => true, - ]; -} diff --git a/system4.4.6/Config/ForeignCharacters.php b/system4.4.6/Config/ForeignCharacters.php deleted file mode 100644 index a8569f54..00000000 --- a/system4.4.6/Config/ForeignCharacters.php +++ /dev/null @@ -1,115 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Config; - -/** - * Describes foreign characters for transliteration with the text helper. - */ -class ForeignCharacters -{ - /** - * The list of foreign characters. - * - * @var array<string, string> - */ - public $characterList = [ - '/ä|æ|ǽ/' => 'ae', - '/ö|œ/' => 'oe', - '/ü/' => 'ue', - '/Ä/' => 'Ae', - '/Ü/' => 'Ue', - '/Ö/' => 'Oe', - '/À|Á|Â|Ã|Ä|Å|Ǻ|Ā|Ă|Ą|Ǎ|Α|Ά|Ả|Ạ|Ầ|Ẫ|Ẩ|Ậ|Ằ|Ắ|Ẵ|Ẳ|Ặ|А/' => 'A', - '/à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª|α|ά|ả|ạ|ầ|ấ|ẫ|ẩ|ậ|ằ|ắ|ẵ|ẳ|ặ|а/' => 'a', - '/Б/' => 'B', - '/б/' => 'b', - '/Ç|Ć|Ĉ|Ċ|Č/' => 'C', - '/ç|ć|ĉ|ċ|č/' => 'c', - '/Д/' => 'D', - '/д/' => 'd', - '/Ð|Ď|Đ|Δ/' => 'Dj', - '/ð|ď|đ|δ/' => 'dj', - '/È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě|Ε|Έ|Ẽ|Ẻ|Ẹ|Ề|Ế|Ễ|Ể|Ệ|Е|Э/' => 'E', - '/è|é|ê|ë|ē|ĕ|ė|ę|ě|έ|ε|ẽ|ẻ|ẹ|ề|ế|ễ|ể|ệ|е|э/' => 'e', - '/Ф/' => 'F', - '/ф/' => 'f', - '/Ĝ|Ğ|Ġ|Ģ|Γ|Г|Ґ/' => 'G', - '/ĝ|ğ|ġ|ģ|γ|г|ґ/' => 'g', - '/Ĥ|Ħ/' => 'H', - '/ĥ|ħ/' => 'h', - '/Ì|Í|Î|Ï|Ĩ|Ī|Ĭ|Ǐ|Į|İ|Η|Ή|Ί|Ι|Ϊ|Ỉ|Ị|И|Ы/' => 'I', - '/ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı|η|ή|ί|ι|ϊ|ỉ|ị|и|ы|ї/' => 'i', - '/Ĵ/' => 'J', - '/ĵ/' => 'j', - '/Ķ|Κ|К/' => 'K', - '/ķ|κ|к/' => 'k', - '/Ĺ|Ļ|Ľ|Ŀ|Ł|Λ|Л/' => 'L', - '/ĺ|ļ|ľ|ŀ|ł|λ|л/' => 'l', - '/М/' => 'M', - '/м/' => 'm', - '/Ñ|Ń|Ņ|Ň|Ν|Н/' => 'N', - '/ñ|ń|ņ|ň|ʼn|ν|н/' => 'n', - '/Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ|Ο|Ό|Ω|Ώ|Ỏ|Ọ|Ồ|Ố|Ỗ|Ổ|Ộ|Ờ|Ớ|Ỡ|Ở|Ợ|О/' => 'O', - '/ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º|ο|ό|ω|ώ|ỏ|ọ|ồ|ố|ỗ|ổ|ộ|ờ|ớ|ỡ|ở|ợ|о/' => 'o', - '/П/' => 'P', - '/п/' => 'p', - '/Ŕ|Ŗ|Ř|Ρ|Р/' => 'R', - '/ŕ|ŗ|ř|ρ|р/' => 'r', - '/Ś|Ŝ|Ş|Ș|Š|Σ|С/' => 'S', - '/ś|ŝ|ş|ș|š|ſ|σ|ς|с/' => 's', - '/Ț|Ţ|Ť|Ŧ|τ|Т/' => 'T', - '/ț|ţ|ť|ŧ|т/' => 't', - '/Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ|Ũ|Ủ|Ụ|Ừ|Ứ|Ữ|Ử|Ự|У/' => 'U', - '/ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ|υ|ύ|ϋ|ủ|ụ|ừ|ứ|ữ|ử|ự|у/' => 'u', - '/Ƴ|Ɏ|Ỵ|Ẏ|Ӳ|Ӯ|Ў|Ý|Ÿ|Ŷ|Υ|Ύ|Ϋ|Ỳ|Ỹ|Ỷ|Ỵ|Й/' => 'Y', - '/ẙ|ʏ|ƴ|ɏ|ỵ|ẏ|ӳ|ӯ|ў|ý|ÿ|ŷ|ỳ|ỹ|ỷ|ỵ|й/' => 'y', - '/В/' => 'V', - '/в/' => 'v', - '/Ŵ/' => 'W', - '/ŵ/' => 'w', - '/Ź|Ż|Ž|Ζ|З/' => 'Z', - '/ź|ż|ž|ζ|з/' => 'z', - '/Æ|Ǽ/' => 'AE', - '/ß/' => 'ss', - '/IJ/' => 'IJ', - '/ij/' => 'ij', - '/Œ/' => 'OE', - '/ƒ/' => 'f', - '/ξ/' => 'ks', - '/π/' => 'p', - '/β/' => 'v', - '/μ/' => 'm', - '/ψ/' => 'ps', - '/Ё/' => 'Yo', - '/ё/' => 'yo', - '/Є/' => 'Ye', - '/є/' => 'ye', - '/Ї/' => 'Yi', - '/Ж/' => 'Zh', - '/ж/' => 'zh', - '/Х/' => 'Kh', - '/х/' => 'kh', - '/Ц/' => 'Ts', - '/ц/' => 'ts', - '/Ч/' => 'Ch', - '/ч/' => 'ch', - '/Ш/' => 'Sh', - '/ш/' => 'sh', - '/Щ/' => 'Shch', - '/щ/' => 'shch', - '/Ъ|ъ|Ь|ь/' => '', - '/Ю/' => 'Yu', - '/ю/' => 'yu', - '/Я/' => 'Ya', - '/я/' => 'ya', - ]; -} diff --git a/system4.4.6/Config/Publisher.php b/system4.4.6/Config/Publisher.php deleted file mode 100644 index d5f938e0..00000000 --- a/system4.4.6/Config/Publisher.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Config; - -/** - * Publisher Configuration - * - * Defines basic security restrictions for the Publisher class - * to prevent abuse by injecting malicious files into a project. - */ -class Publisher extends BaseConfig -{ - /** - * A list of allowed destinations with a (pseudo-)regex - * of allowed files for each destination. - * Attempts to publish to directories not in this list will - * result in a PublisherException. Files that do no fit the - * pattern will cause copy/merge to fail. - * - * @var array<string, string> - */ - public $restrictions = [ - ROOTPATH => '*', - FCPATH => '#\.(?css|js|map|htm?|xml|json|webmanifest|tff|eot|woff?|gif|jpe?g|tiff?|png|webp|bmp|ico|svg)$#i', - ]; - - /** - * Disables Registrars to prevent modules from altering the restrictions. - */ - final protected function registerProperties(): void - { - } -} diff --git a/system4.4.6/Config/Routing.php b/system4.4.6/Config/Routing.php deleted file mode 100644 index 5f5d9db6..00000000 --- a/system4.4.6/Config/Routing.php +++ /dev/null @@ -1,110 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Config; - -/** - * Routing configuration - */ -class Routing extends BaseConfig -{ - /** - * An array of files that contain route definitions. - * Route files are read in order, with the first match - * found taking precedence. - * - * Default: APPPATH . 'Config/Routes.php' - */ - public array $routeFiles = [ - APPPATH . 'Config/Routes.php', - ]; - - /** - * The default namespace to use for Controllers when no other - * namespace has been specified. - * - * Default: 'App\Controllers' - */ - public string $defaultNamespace = 'App\Controllers'; - - /** - * The default controller to use when no other controller has been - * specified. - * - * Default: 'Home' - */ - public string $defaultController = 'Home'; - - /** - * The default method to call on the controller when no other - * method has been set in the route. - * - * Default: 'index' - */ - public string $defaultMethod = 'index'; - - /** - * Whether to translate dashes in URIs to underscores. - * Primarily useful when using the auto-routing. - * - * Default: false - */ - public bool $translateURIDashes = false; - - /** - * Sets the class/method that should be called if routing doesn't - * find a match. It can be the controller/method name like: Users::index - * - * This setting is passed to the Router class and handled there. - * - * If you want to use a closure, you will have to set it in the - * routes file by calling: - * - * $routes->set404Override(function() { - * // Do something here - * }); - * - * Example: - * public $override404 = 'App\Errors::show404'; - */ - public ?string $override404 = null; - - /** - * If TRUE, the system will attempt to match the URI against - * Controllers by matching each segment against folders/files - * in APPPATH/Controllers, when a match wasn't found against - * defined routes. - * - * If FALSE, will stop searching and do NO automatic routing. - */ - public bool $autoRoute = false; - - /** - * If TRUE, will enable the use of the 'prioritize' option - * when defining routes. - * - * Default: false - */ - public bool $prioritize = false; - - /** - * Map of URI segments and namespaces. For Auto Routing (Improved). - * - * The key is the first URI segment. The value is the controller namespace. - * E.g., - * [ - * 'blog' => 'Acme\Blog\Controllers', - * ] - * - * @var array [ uri_segment => namespace ] - */ - public array $moduleRoutes = []; -} diff --git a/system4.4.6/Config/Services.php b/system4.4.6/Config/Services.php deleted file mode 100644 index 5ffb9e04..00000000 --- a/system4.4.6/Config/Services.php +++ /dev/null @@ -1,849 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Config; - -use CodeIgniter\Cache\CacheFactory; -use CodeIgniter\Cache\CacheInterface; -use CodeIgniter\Cache\ResponseCache; -use CodeIgniter\CLI\Commands; -use CodeIgniter\CodeIgniter; -use CodeIgniter\Database\ConnectionInterface; -use CodeIgniter\Database\MigrationRunner; -use CodeIgniter\Debug\Exceptions; -use CodeIgniter\Debug\Iterator; -use CodeIgniter\Debug\Timer; -use CodeIgniter\Debug\Toolbar; -use CodeIgniter\Email\Email; -use CodeIgniter\Encryption\EncrypterInterface; -use CodeIgniter\Encryption\Encryption; -use CodeIgniter\Filters\Filters; -use CodeIgniter\Format\Format; -use CodeIgniter\Honeypot\Honeypot; -use CodeIgniter\HTTP\CLIRequest; -use CodeIgniter\HTTP\ContentSecurityPolicy; -use CodeIgniter\HTTP\CURLRequest; -use CodeIgniter\HTTP\IncomingRequest; -use CodeIgniter\HTTP\Negotiate; -use CodeIgniter\HTTP\RedirectResponse; -use CodeIgniter\HTTP\Request; -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\Response; -use CodeIgniter\HTTP\ResponseInterface; -use CodeIgniter\HTTP\SiteURIFactory; -use CodeIgniter\HTTP\URI; -use CodeIgniter\HTTP\UserAgent; -use CodeIgniter\Images\Handlers\BaseHandler; -use CodeIgniter\Language\Language; -use CodeIgniter\Log\Logger; -use CodeIgniter\Pager\Pager; -use CodeIgniter\Router\RouteCollection; -use CodeIgniter\Router\RouteCollectionInterface; -use CodeIgniter\Router\Router; -use CodeIgniter\Security\Security; -use CodeIgniter\Session\Handlers\Database\MySQLiHandler; -use CodeIgniter\Session\Handlers\Database\PostgreHandler; -use CodeIgniter\Session\Handlers\DatabaseHandler; -use CodeIgniter\Session\Session; -use CodeIgniter\Superglobals; -use CodeIgniter\Throttle\Throttler; -use CodeIgniter\Typography\Typography; -use CodeIgniter\Validation\Validation; -use CodeIgniter\Validation\ValidationInterface; -use CodeIgniter\View\Cell; -use CodeIgniter\View\Parser; -use CodeIgniter\View\RendererInterface; -use CodeIgniter\View\View; -use Config\App; -use Config\Cache; -use Config\ContentSecurityPolicy as ContentSecurityPolicyConfig; -use Config\ContentSecurityPolicy as CSPConfig; -use Config\Database; -use Config\Email as EmailConfig; -use Config\Encryption as EncryptionConfig; -use Config\Exceptions as ExceptionsConfig; -use Config\Filters as FiltersConfig; -use Config\Format as FormatConfig; -use Config\Honeypot as HoneypotConfig; -use Config\Images; -use Config\Logger as LoggerConfig; -use Config\Migrations; -use Config\Modules; -use Config\Pager as PagerConfig; -use Config\Paths; -use Config\Routing; -use Config\Security as SecurityConfig; -use Config\Services as AppServices; -use Config\Session as SessionConfig; -use Config\Toolbar as ToolbarConfig; -use Config\Validation as ValidationConfig; -use Config\View as ViewConfig; -use Locale; - -/** - * Services Configuration file. - * - * Services are simply other classes/libraries that the system uses - * to do its job. This is used by CodeIgniter to allow the core of the - * framework to be swapped out easily without affecting the usage within - * the rest of your application. - * - * This is used in place of a Dependency Injection container primarily - * due to its simplicity, which allows a better long-term maintenance - * of the applications built on top of CodeIgniter. A bonus side-effect - * is that IDEs are able to determine what class you are calling - * whereas with DI Containers there usually isn't a way for them to do this. - * - * @see http://blog.ircmaxell.com/2015/11/simple-easy-risk-and-change.html - * @see http://www.infoq.com/presentations/Simple-Made-Easy - * @see \CodeIgniter\Config\ServicesTest - */ -class Services extends BaseService -{ - /** - * The cache class provides a simple way to store and retrieve - * complex data for later. - * - * @return CacheInterface - */ - public static function cache(?Cache $config = null, bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('cache', $config); - } - - $config ??= config(Cache::class); - - return CacheFactory::getHandler($config); - } - - /** - * The CLI Request class provides for ways to interact with - * a command line request. - * - * @return CLIRequest - * - * @internal - */ - public static function clirequest(?App $config = null, bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('clirequest', $config); - } - - $config ??= config(App::class); - - return new CLIRequest($config); - } - - /** - * CodeIgniter, the core of the framework. - * - * @return CodeIgniter - */ - public static function codeigniter(?App $config = null, bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('codeigniter', $config); - } - - $config ??= config(App::class); - - return new CodeIgniter($config); - } - - /** - * The commands utility for running and working with CLI commands. - * - * @return Commands - */ - public static function commands(bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('commands'); - } - - return new Commands(); - } - - /** - * Content Security Policy - * - * @return ContentSecurityPolicy - */ - public static function csp(?CSPConfig $config = null, bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('csp', $config); - } - - $config ??= config(ContentSecurityPolicyConfig::class); - - return new ContentSecurityPolicy($config); - } - - /** - * The CURL Request class acts as a simple HTTP client for interacting - * with other servers, typically through APIs. - * - * @return CURLRequest - */ - public static function curlrequest(array $options = [], ?ResponseInterface $response = null, ?App $config = null, bool $getShared = true) - { - if ($getShared === true) { - return static::getSharedInstance('curlrequest', $options, $response, $config); - } - - $config ??= config(App::class); - $response ??= new Response($config); - - return new CURLRequest( - $config, - new URI($options['base_uri'] ?? null), - $response, - $options - ); - } - - /** - * The Email class allows you to send email via mail, sendmail, SMTP. - * - * @param array|EmailConfig|null $config - * - * @return Email - */ - public static function email($config = null, bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('email', $config); - } - - if (empty($config) || ! (is_array($config) || $config instanceof EmailConfig)) { - $config = config(EmailConfig::class); - } - - return new Email($config); - } - - /** - * The Encryption class provides two-way encryption. - * - * @param bool $getShared - * - * @return EncrypterInterface Encryption handler - */ - public static function encrypter(?EncryptionConfig $config = null, $getShared = false) - { - if ($getShared === true) { - return static::getSharedInstance('encrypter', $config); - } - - $config ??= config(EncryptionConfig::class); - $encryption = new Encryption($config); - - return $encryption->initialize($config); - } - - /** - * The Exceptions class holds the methods that handle: - * - * - set_exception_handler - * - set_error_handler - * - register_shutdown_function - * - * @return Exceptions - */ - public static function exceptions( - ?ExceptionsConfig $config = null, - bool $getShared = true - ) { - if ($getShared) { - return static::getSharedInstance('exceptions', $config); - } - - $config ??= config(ExceptionsConfig::class); - - return new Exceptions($config); - } - - /** - * Filters allow you to run tasks before and/or after a controller - * is executed. During before filters, the request can be modified, - * and actions taken based on the request, while after filters can - * act on or modify the response itself before it is sent to the client. - * - * @return Filters - */ - public static function filters(?FiltersConfig $config = null, bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('filters', $config); - } - - $config ??= config(FiltersConfig::class); - - return new Filters($config, AppServices::request(), AppServices::response()); - } - - /** - * The Format class is a convenient place to create Formatters. - * - * @return Format - */ - public static function format(?FormatConfig $config = null, bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('format', $config); - } - - $config ??= config(FormatConfig::class); - - return new Format($config); - } - - /** - * The Honeypot provides a secret input on forms that bots should NOT - * fill in, providing an additional safeguard when accepting user input. - * - * @return Honeypot - */ - public static function honeypot(?HoneypotConfig $config = null, bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('honeypot', $config); - } - - $config ??= config(HoneypotConfig::class); - - return new Honeypot($config); - } - - /** - * Acts as a factory for ImageHandler classes and returns an instance - * of the handler. Used like Services::image()->withFile($path)->rotate(90)->save(); - * - * @return BaseHandler - */ - public static function image(?string $handler = null, ?Images $config = null, bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('image', $handler, $config); - } - - $config ??= config(Images::class); - assert($config instanceof Images); - - $handler = $handler ?: $config->defaultHandler; - $class = $config->handlers[$handler]; - - return new $class($config); - } - - /** - * The Iterator class provides a simple way of looping over a function - * and timing the results and memory usage. Used when debugging and - * optimizing applications. - * - * @return Iterator - */ - public static function iterator(bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('iterator'); - } - - return new Iterator(); - } - - /** - * Responsible for loading the language string translations. - * - * @return Language - */ - public static function language(?string $locale = null, bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('language', $locale)->setLocale($locale); - } - - if (AppServices::request() instanceof IncomingRequest) { - $requestLocale = AppServices::request()->getLocale(); - } else { - $requestLocale = Locale::getDefault(); - } - - // Use '?:' for empty string check - $locale = $locale ?: $requestLocale; - - return new Language($locale); - } - - /** - * The Logger class is a PSR-3 compatible Logging class that supports - * multiple handlers that process the actual logging. - * - * @return Logger - */ - public static function logger(bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('logger'); - } - - return new Logger(config(LoggerConfig::class)); - } - - /** - * Return the appropriate Migration runner. - * - * @return MigrationRunner - */ - public static function migrations(?Migrations $config = null, ?ConnectionInterface $db = null, bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('migrations', $config, $db); - } - - $config ??= config(Migrations::class); - - return new MigrationRunner($config, $db); - } - - /** - * The Negotiate class provides the content negotiation features for - * working the request to determine correct language, encoding, charset, - * and more. - * - * @return Negotiate - */ - public static function negotiator(?RequestInterface $request = null, bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('negotiator', $request); - } - - $request ??= AppServices::request(); - - return new Negotiate($request); - } - - /** - * Return the ResponseCache. - * - * @return ResponseCache - */ - public static function responsecache(?Cache $config = null, ?CacheInterface $cache = null, bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('responsecache', $config, $cache); - } - - $config ??= config(Cache::class); - $cache ??= AppServices::cache(); - - return new ResponseCache($config, $cache); - } - - /** - * Return the appropriate pagination handler. - * - * @return Pager - */ - public static function pager(?PagerConfig $config = null, ?RendererInterface $view = null, bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('pager', $config, $view); - } - - $config ??= config(PagerConfig::class); - $view ??= AppServices::renderer(null, null, false); - - return new Pager($config, $view); - } - - /** - * The Parser is a simple template parser. - * - * @return Parser - */ - public static function parser(?string $viewPath = null, ?ViewConfig $config = null, bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('parser', $viewPath, $config); - } - - $viewPath = $viewPath ?: (new Paths())->viewDirectory; - $config ??= config(ViewConfig::class); - - return new Parser($config, $viewPath, AppServices::locator(), CI_DEBUG, AppServices::logger()); - } - - /** - * The Renderer class is the class that actually displays a file to the user. - * The default View class within CodeIgniter is intentionally simple, but this - * service could easily be replaced by a template engine if the user needed to. - * - * @return View - */ - public static function renderer(?string $viewPath = null, ?ViewConfig $config = null, bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('renderer', $viewPath, $config); - } - - $viewPath = $viewPath ?: (new Paths())->viewDirectory; - $config ??= config(ViewConfig::class); - - return new View($config, $viewPath, AppServices::locator(), CI_DEBUG, AppServices::logger()); - } - - /** - * Returns the current Request object. - * - * createRequest() injects IncomingRequest or CLIRequest. - * - * @return CLIRequest|IncomingRequest - * - * @deprecated The parameter $config and $getShared are deprecated. - */ - public static function request(?App $config = null, bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('request', $config); - } - - // @TODO remove the following code for backward compatibility - return AppServices::incomingrequest($config, $getShared); - } - - /** - * Create the current Request object, either IncomingRequest or CLIRequest. - * - * This method is called from CodeIgniter::getRequestObject(). - * - * @internal - */ - public static function createRequest(App $config, bool $isCli = false): void - { - if ($isCli) { - $request = AppServices::clirequest($config); - } else { - $request = AppServices::incomingrequest($config); - - // guess at protocol if needed - $request->setProtocolVersion($_SERVER['SERVER_PROTOCOL'] ?? 'HTTP/1.1'); - } - - // Inject the request object into Services::request(). - static::$instances['request'] = $request; - } - - /** - * The IncomingRequest class models an HTTP request. - * - * @return IncomingRequest - * - * @internal - */ - public static function incomingrequest(?App $config = null, bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('request', $config); - } - - $config ??= config(App::class); - - return new IncomingRequest( - $config, - AppServices::uri(), - 'php://input', - new UserAgent() - ); - } - - /** - * The Response class models an HTTP response. - * - * @return ResponseInterface - */ - public static function response(?App $config = null, bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('response', $config); - } - - $config ??= config(App::class); - - return new Response($config); - } - - /** - * The Redirect class provides nice way of working with redirects. - * - * @return RedirectResponse - */ - public static function redirectresponse(?App $config = null, bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('redirectresponse', $config); - } - - $config ??= config(App::class); - $response = new RedirectResponse($config); - $response->setProtocolVersion(AppServices::request()->getProtocolVersion()); - - return $response; - } - - /** - * The Routes service is a class that allows for easily building - * a collection of routes. - * - * @return RouteCollection - */ - public static function routes(bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('routes'); - } - - return new RouteCollection(AppServices::locator(), config(Modules::class), config(Routing::class)); - } - - /** - * The Router class uses a RouteCollection's array of routes, and determines - * the correct Controller and Method to execute. - * - * @return Router - */ - public static function router(?RouteCollectionInterface $routes = null, ?Request $request = null, bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('router', $routes, $request); - } - - $routes ??= AppServices::routes(); - $request ??= AppServices::request(); - - return new Router($routes, $request); - } - - /** - * The Security class provides a few handy tools for keeping the site - * secure, most notably the CSRF protection tools. - * - * @return Security - */ - public static function security(?SecurityConfig $config = null, bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('security', $config); - } - - $config ??= config(SecurityConfig::class); - - return new Security($config); - } - - /** - * Return the session manager. - * - * @return Session - */ - public static function session(?SessionConfig $config = null, bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('session', $config); - } - - $config ??= config(SessionConfig::class); - - $logger = AppServices::logger(); - - $driverName = $config->driver; - - if ($driverName === DatabaseHandler::class) { - $DBGroup = $config->DBGroup ?? config(Database::class)->defaultGroup; - $db = Database::connect($DBGroup); - - $driver = $db->getPlatform(); - - if ($driver === 'MySQLi') { - $driverName = MySQLiHandler::class; - } elseif ($driver === 'Postgre') { - $driverName = PostgreHandler::class; - } - } - - $driver = new $driverName($config, AppServices::request()->getIPAddress()); - $driver->setLogger($logger); - - $session = new Session($driver, $config); - $session->setLogger($logger); - - if (session_status() === PHP_SESSION_NONE) { - $session->start(); - } - - return $session; - } - - /** - * The Factory for SiteURI. - * - * @return SiteURIFactory - */ - public static function siteurifactory( - ?App $config = null, - ?Superglobals $superglobals = null, - bool $getShared = true - ) { - if ($getShared) { - return static::getSharedInstance('siteurifactory', $config, $superglobals); - } - - $config ??= config('App'); - $superglobals ??= AppServices::superglobals(); - - return new SiteURIFactory($config, $superglobals); - } - - /** - * Superglobals. - * - * @return Superglobals - */ - public static function superglobals( - ?array $server = null, - ?array $get = null, - bool $getShared = true - ) { - if ($getShared) { - return static::getSharedInstance('superglobals', $server, $get); - } - - return new Superglobals($server, $get); - } - - /** - * The Throttler class provides a simple method for implementing - * rate limiting in your applications. - * - * @return Throttler - */ - public static function throttler(bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('throttler'); - } - - return new Throttler(AppServices::cache()); - } - - /** - * The Timer class provides a simple way to Benchmark portions of your - * application. - * - * @return Timer - */ - public static function timer(bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('timer'); - } - - return new Timer(); - } - - /** - * Return the debug toolbar. - * - * @return Toolbar - */ - public static function toolbar(?ToolbarConfig $config = null, bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('toolbar', $config); - } - - $config ??= config(ToolbarConfig::class); - - return new Toolbar($config); - } - - /** - * The URI class provides a way to model and manipulate URIs. - * - * @param string|null $uri The URI string - * - * @return URI The current URI if $uri is null. - */ - public static function uri(?string $uri = null, bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('uri', $uri); - } - - if ($uri === null) { - $appConfig = config(App::class); - $factory = AppServices::siteurifactory($appConfig, AppServices::superglobals()); - - return $factory->createFromGlobals(); - } - - return new URI($uri); - } - - /** - * The Validation class provides tools for validating input data. - * - * @return ValidationInterface - */ - public static function validation(?ValidationConfig $config = null, bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('validation', $config); - } - - $config ??= config(ValidationConfig::class); - - return new Validation($config, AppServices::renderer()); - } - - /** - * View cells are intended to let you insert HTML into view - * that has been generated by any callable in the system. - * - * @return Cell - */ - public static function viewcell(bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('viewcell'); - } - - return new Cell(AppServices::cache()); - } - - /** - * The Typography class provides a way to format text in semantically relevant ways. - * - * @return Typography - */ - public static function typography(bool $getShared = true) - { - if ($getShared) { - return static::getSharedInstance('typography'); - } - - return new Typography(); - } -} diff --git a/system4.4.6/Config/View.php b/system4.4.6/Config/View.php deleted file mode 100644 index 101b67f5..00000000 --- a/system4.4.6/Config/View.php +++ /dev/null @@ -1,130 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Config; - -use CodeIgniter\View\ViewDecoratorInterface; - -/** - * View configuration - * - * @phpstan-type parser_callable (callable(mixed): mixed) - * @phpstan-type parser_callable_string (callable(mixed): mixed)&string - */ -class View extends BaseConfig -{ - /** - * When false, the view method will clear the data between each - * call. - * - * @var bool - */ - public $saveData = true; - - /** - * Parser Filters map a filter name with any PHP callable. When the - * Parser prepares a variable for display, it will chain it - * through the filters in the order defined, inserting any parameters. - * - * To prevent potential abuse, all filters MUST be defined here - * in order for them to be available for use within the Parser. - * - * @psalm-suppress UndefinedDocblockClass - * - * @var array<string, string> - * @phpstan-var array<string, parser_callable_string> - */ - public $filters = []; - - /** - * Parser Plugins provide a way to extend the functionality provided - * by the core Parser by creating aliases that will be replaced with - * any callable. Can be single or tag pair. - * - * @psalm-suppress UndefinedDocblockClass - * - * @var array<string, array<string>|callable|string> - * @phpstan-var array<string, array<parser_callable_string>|parser_callable_string|parser_callable> - */ - public $plugins = []; - - /** - * Built-in View filters. - * - * @var array<string, string> - * @phpstan-var array<string, parser_callable_string> - */ - protected $coreFilters = [ - 'abs' => '\abs', - 'capitalize' => '\CodeIgniter\View\Filters::capitalize', - 'date' => '\CodeIgniter\View\Filters::date', - 'date_modify' => '\CodeIgniter\View\Filters::date_modify', - 'default' => '\CodeIgniter\View\Filters::default', - 'esc' => '\CodeIgniter\View\Filters::esc', - 'excerpt' => '\CodeIgniter\View\Filters::excerpt', - 'highlight' => '\CodeIgniter\View\Filters::highlight', - 'highlight_code' => '\CodeIgniter\View\Filters::highlight_code', - 'limit_words' => '\CodeIgniter\View\Filters::limit_words', - 'limit_chars' => '\CodeIgniter\View\Filters::limit_chars', - 'local_currency' => '\CodeIgniter\View\Filters::local_currency', - 'local_number' => '\CodeIgniter\View\Filters::local_number', - 'lower' => '\strtolower', - 'nl2br' => '\CodeIgniter\View\Filters::nl2br', - 'number_format' => '\number_format', - 'prose' => '\CodeIgniter\View\Filters::prose', - 'round' => '\CodeIgniter\View\Filters::round', - 'strip_tags' => '\strip_tags', - 'title' => '\CodeIgniter\View\Filters::title', - 'upper' => '\strtoupper', - ]; - - /** - * Built-in View plugins. - * - * @var array<string, array<string>|callable|string> - * @phpstan-var array<string, array<parser_callable_string>|parser_callable_string|parser_callable> - */ - protected $corePlugins = [ - 'csp_script_nonce' => '\CodeIgniter\View\Plugins::cspScriptNonce', - 'csp_style_nonce' => '\CodeIgniter\View\Plugins::cspStyleNonce', - 'current_url' => '\CodeIgniter\View\Plugins::currentURL', - 'previous_url' => '\CodeIgniter\View\Plugins::previousURL', - 'mailto' => '\CodeIgniter\View\Plugins::mailto', - 'safe_mailto' => '\CodeIgniter\View\Plugins::safeMailto', - 'lang' => '\CodeIgniter\View\Plugins::lang', - 'validation_errors' => '\CodeIgniter\View\Plugins::validationErrors', - 'route' => '\CodeIgniter\View\Plugins::route', - 'siteURL' => '\CodeIgniter\View\Plugins::siteURL', - ]; - - /** - * View Decorators are class methods that will be run in sequence to - * have a chance to alter the generated output just prior to caching - * the results. - * - * All classes must implement CodeIgniter\View\ViewDecoratorInterface - * - * @var class-string<ViewDecoratorInterface>[] - */ - public array $decorators = []; - - /** - * Merge the built-in and developer-configured filters and plugins, - * with preference to the developer ones. - */ - public function __construct() - { - $this->filters = array_merge($this->coreFilters, $this->filters); - $this->plugins = array_merge($this->corePlugins, $this->plugins); - - parent::__construct(); - } -} diff --git a/system4.4.6/Controller.php b/system4.4.6/Controller.php deleted file mode 100644 index a28a7a59..00000000 --- a/system4.4.6/Controller.php +++ /dev/null @@ -1,198 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter; - -use CodeIgniter\HTTP\Exceptions\HTTPException; -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\ResponseInterface; -use CodeIgniter\Validation\Exceptions\ValidationException; -use CodeIgniter\Validation\ValidationInterface; -use Config\Services; -use Config\Validation; -use Psr\Log\LoggerInterface; - -/** - * Class Controller - * - * @see \CodeIgniter\ControllerTest - */ -class Controller -{ - /** - * Helpers that will be automatically loaded on class instantiation. - * - * @var array - */ - protected $helpers = []; - - /** - * Instance of the main Request object. - * - * @var RequestInterface - */ - protected $request; - - /** - * Instance of the main response object. - * - * @var ResponseInterface - */ - protected $response; - - /** - * Instance of logger to use. - * - * @var LoggerInterface - */ - protected $logger; - - /** - * Should enforce HTTPS access for all methods in this controller. - * - * @var int Number of seconds to set HSTS header - */ - protected $forceHTTPS = 0; - - /** - * Once validation has been run, will hold the Validation instance. - * - * @var ValidationInterface|null - */ - protected $validator; - - /** - * Constructor. - * - * @return void - * - * @throws HTTPException - */ - public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) - { - $this->request = $request; - $this->response = $response; - $this->logger = $logger; - - if ($this->forceHTTPS > 0) { - $this->forceHTTPS($this->forceHTTPS); - } - - // Autoload helper files. - helper($this->helpers); - } - - /** - * A convenience method to use when you need to ensure that a single - * method is reached only via HTTPS. If it isn't, then a redirect - * will happen back to this method and HSTS header will be sent - * to have modern browsers transform requests automatically. - * - * @param int $duration The number of seconds this link should be - * considered secure for. Only with HSTS header. - * Default value is 1 year. - * - * @return void - * - * @throws HTTPException - */ - protected function forceHTTPS(int $duration = 31_536_000) - { - force_https($duration, $this->request, $this->response); - } - - /** - * How long to cache the current page for. - * - * @params int $time time to live in seconds. - * - * @return void - */ - protected function cachePage(int $time) - { - Services::responsecache()->setTtl($time); - } - - /** - * Handles "auto-loading" helper files. - * - * @deprecated Use `helper` function instead of using this method. - * - * @codeCoverageIgnore - * - * @return void - */ - protected function loadHelpers() - { - if ($this->helpers === []) { - return; - } - - helper($this->helpers); - } - - /** - * A shortcut to performing validation on Request data. - * - * @param array|string $rules - * @param array $messages An array of custom error messages - */ - protected function validate($rules, array $messages = []): bool - { - $this->setValidator($rules, $messages); - - return $this->validator->withRequest($this->request)->run(); - } - - /** - * A shortcut to performing validation on any input data. - * - * @param array $data The data to validate - * @param array|string $rules - * @param array $messages An array of custom error messages - * @param string|null $dbGroup The database group to use - */ - protected function validateData(array $data, $rules, array $messages = [], ?string $dbGroup = null): bool - { - $this->setValidator($rules, $messages); - - return $this->validator->run($data, null, $dbGroup); - } - - /** - * @param array|string $rules - */ - private function setValidator($rules, array $messages): void - { - $this->validator = Services::validation(); - - // If you replace the $rules array with the name of the group - if (is_string($rules)) { - $validation = config(Validation::class); - - // If the rule wasn't found in the \Config\Validation, we - // should throw an exception so the developer can find it. - if (! isset($validation->{$rules})) { - throw ValidationException::forRuleNotFound($rules); - } - - // If no error message is defined, use the error message in the Config\Validation file - if (! $messages) { - $errorName = $rules . '_errors'; - $messages = $validation->{$errorName} ?? []; - } - - $rules = $validation->{$rules}; - } - - $this->validator->setRules($rules, $messages); - } -} diff --git a/system4.4.6/Cookie/CloneableCookieInterface.php b/system4.4.6/Cookie/CloneableCookieInterface.php deleted file mode 100644 index 93f6031e..00000000 --- a/system4.4.6/Cookie/CloneableCookieInterface.php +++ /dev/null @@ -1,109 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Cookie; - -use DateTimeInterface; - -/** - * Interface for a fresh Cookie instance with selected attribute(s) - * only changed from the original instance. - */ -interface CloneableCookieInterface extends CookieInterface -{ - /** - * Creates a new Cookie with a new cookie prefix. - * - * @return static - */ - public function withPrefix(string $prefix = ''); - - /** - * Creates a new Cookie with a new name. - * - * @return static - */ - public function withName(string $name); - - /** - * Creates a new Cookie with new value. - * - * @return static - */ - public function withValue(string $value); - - /** - * Creates a new Cookie with a new cookie expires time. - * - * @param DateTimeInterface|int|string $expires - * - * @return static - */ - public function withExpires($expires); - - /** - * Creates a new Cookie that will expire the cookie from the browser. - * - * @return static - */ - public function withExpired(); - - /** - * Creates a new Cookie that will virtually never expire from the browser. - * - * @return static - * - * @deprecated See https://github.com/codeigniter4/CodeIgniter4/pull/6413 - */ - public function withNeverExpiring(); - - /** - * Creates a new Cookie with a new path on the server the cookie is available. - * - * @return static - */ - public function withPath(?string $path); - - /** - * Creates a new Cookie with a new domain the cookie is available. - * - * @return static - */ - public function withDomain(?string $domain); - - /** - * Creates a new Cookie with a new "Secure" attribute. - * - * @return static - */ - public function withSecure(bool $secure = true); - - /** - * Creates a new Cookie with a new "HttpOnly" attribute - * - * @return static - */ - public function withHTTPOnly(bool $httponly = true); - - /** - * Creates a new Cookie with a new "SameSite" attribute. - * - * @return static - */ - public function withSameSite(string $samesite); - - /** - * Creates a new Cookie with URL encoding option updated. - * - * @return static - */ - public function withRaw(bool $raw = true); -} diff --git a/system4.4.6/Cookie/Cookie.php b/system4.4.6/Cookie/Cookie.php deleted file mode 100644 index 69e40017..00000000 --- a/system4.4.6/Cookie/Cookie.php +++ /dev/null @@ -1,787 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Cookie; - -use ArrayAccess; -use CodeIgniter\Cookie\Exceptions\CookieException; -use CodeIgniter\I18n\Time; -use Config\Cookie as CookieConfig; -use DateTimeInterface; -use InvalidArgumentException; -use LogicException; -use ReturnTypeWillChange; - -/** - * A `Cookie` class represents an immutable HTTP cookie value object. - * - * Being immutable, modifying one or more of its attributes will return - * a new `Cookie` instance, rather than modifying itself. Users should - * reassign this new instance to a new variable to capture it. - * - * ```php - * $cookie = new Cookie('test_cookie', 'test_value'); - * $cookie->getName(); // test_cookie - * - * $cookie->withName('prod_cookie'); - * $cookie->getName(); // test_cookie - * - * $cookie2 = $cookie->withName('prod_cookie'); - * $cookie2->getName(); // prod_cookie - * ``` - * - * @template-implements ArrayAccess<string, bool|int|string> - * @see \CodeIgniter\Cookie\CookieTest - */ -class Cookie implements ArrayAccess, CloneableCookieInterface -{ - /** - * @var string - */ - protected $prefix = ''; - - /** - * @var string - */ - protected $name; - - /** - * @var string - */ - protected $value; - - /** - * @var int Unix timestamp - */ - protected $expires; - - /** - * @var string - */ - protected $path = '/'; - - /** - * @var string - */ - protected $domain = ''; - - /** - * @var bool - */ - protected $secure = false; - - /** - * @var bool - */ - protected $httponly = true; - - /** - * @var string - */ - protected $samesite = self::SAMESITE_LAX; - - /** - * @var bool - */ - protected $raw = false; - - /** - * Default attributes for a Cookie object. The keys here are the - * lowercase attribute names. Do not camelCase! - * - * @var array<string, bool|int|string> - */ - private static array $defaults = [ - 'prefix' => '', - 'expires' => 0, - 'path' => '/', - 'domain' => '', - 'secure' => false, - 'httponly' => true, - 'samesite' => self::SAMESITE_LAX, - 'raw' => false, - ]; - - /** - * A cookie name can be any US-ASCII characters, except control characters, - * spaces, tabs, or separator characters. - * - * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#attributes - * @see https://tools.ietf.org/html/rfc2616#section-2.2 - */ - private static string $reservedCharsList = "=,; \t\r\n\v\f()<>@:\\\"/[]?{}"; - - /** - * Set the default attributes to a Cookie instance by injecting - * the values from the `CookieConfig` config or an array. - * - * This method is called from Response::__construct(). - * - * @param array<string, bool|int|string>|CookieConfig $config - * - * @return array<string, mixed> The old defaults array. Useful for resetting. - */ - public static function setDefaults($config = []) - { - $oldDefaults = self::$defaults; - $newDefaults = []; - - if ($config instanceof CookieConfig) { - $newDefaults = [ - 'prefix' => $config->prefix, - 'expires' => $config->expires, - 'path' => $config->path, - 'domain' => $config->domain, - 'secure' => $config->secure, - 'httponly' => $config->httponly, - 'samesite' => $config->samesite, - 'raw' => $config->raw, - ]; - } elseif (is_array($config)) { - $newDefaults = $config; - } - - // This array union ensures that even if passed `$config` is not - // `CookieConfig` or `array`, no empty defaults will occur. - self::$defaults = $newDefaults + $oldDefaults; - - return $oldDefaults; - } - - // ========================================================================= - // CONSTRUCTORS - // ========================================================================= - - /** - * Create a new Cookie instance from a `Set-Cookie` header. - * - * @return static - * - * @throws CookieException - */ - public static function fromHeaderString(string $cookie, bool $raw = false) - { - $data = self::$defaults; - $data['raw'] = $raw; - - $parts = preg_split('/\;[\s]*/', $cookie); - $part = explode('=', array_shift($parts), 2); - - $name = $raw ? $part[0] : urldecode($part[0]); - $value = isset($part[1]) ? ($raw ? $part[1] : urldecode($part[1])) : ''; - unset($part); - - foreach ($parts as $part) { - if (strpos($part, '=') !== false) { - [$attr, $val] = explode('=', $part); - } else { - $attr = $part; - $val = true; - } - - $data[strtolower($attr)] = $val; - } - - return new static($name, $value, $data); - } - - /** - * Construct a new Cookie instance. - * - * @param string $name The cookie's name - * @param string $value The cookie's value - * @param array<string, bool|int|string> $options The cookie's options - * - * @throws CookieException - */ - final public function __construct(string $name, string $value = '', array $options = []) - { - $options += self::$defaults; - - $options['expires'] = static::convertExpiresTimestamp($options['expires']); - - // If both `Expires` and `Max-Age` are set, `Max-Age` has precedence. - if (isset($options['max-age']) && is_numeric($options['max-age'])) { - $options['expires'] = Time::now()->getTimestamp() + (int) $options['max-age']; - unset($options['max-age']); - } - - // to preserve backward compatibility with array-based cookies in previous CI versions - $prefix = ($options['prefix'] === '') ? self::$defaults['prefix'] : $options['prefix']; - $path = $options['path'] ?: self::$defaults['path']; - $domain = $options['domain'] ?: self::$defaults['domain']; - - // empty string SameSite should use the default for browsers - $samesite = $options['samesite'] ?: self::$defaults['samesite']; - - $raw = $options['raw']; - $secure = $options['secure']; - $httponly = $options['httponly']; - - $this->validateName($name, $raw); - $this->validatePrefix($prefix, $secure, $path, $domain); - $this->validateSameSite($samesite, $secure); - - $this->prefix = $prefix; - $this->name = $name; - $this->value = $value; - $this->expires = static::convertExpiresTimestamp($options['expires']); - $this->path = $path; - $this->domain = $domain; - $this->secure = $secure; - $this->httponly = $httponly; - $this->samesite = ucfirst(strtolower($samesite)); - $this->raw = $raw; - } - - // ========================================================================= - // GETTERS - // ========================================================================= - - /** - * {@inheritDoc} - */ - public function getId(): string - { - return implode(';', [$this->getPrefixedName(), $this->getPath(), $this->getDomain()]); - } - - /** - * {@inheritDoc} - */ - public function getPrefix(): string - { - return $this->prefix; - } - - /** - * {@inheritDoc} - */ - public function getName(): string - { - return $this->name; - } - - /** - * {@inheritDoc} - */ - public function getPrefixedName(): string - { - $name = $this->getPrefix(); - - if ($this->isRaw()) { - $name .= $this->getName(); - } else { - $search = str_split(self::$reservedCharsList); - $replace = array_map('rawurlencode', $search); - - $name .= str_replace($search, $replace, $this->getName()); - } - - return $name; - } - - /** - * {@inheritDoc} - */ - public function getValue(): string - { - return $this->value; - } - - /** - * {@inheritDoc} - */ - public function getExpiresTimestamp(): int - { - return $this->expires; - } - - /** - * {@inheritDoc} - */ - public function getExpiresString(): string - { - return gmdate(self::EXPIRES_FORMAT, $this->expires); - } - - /** - * {@inheritDoc} - */ - public function isExpired(): bool - { - return $this->expires === 0 || $this->expires < Time::now()->getTimestamp(); - } - - /** - * {@inheritDoc} - */ - public function getMaxAge(): int - { - $maxAge = $this->expires - Time::now()->getTimestamp(); - - return $maxAge >= 0 ? $maxAge : 0; - } - - /** - * {@inheritDoc} - */ - public function getPath(): string - { - return $this->path; - } - - /** - * {@inheritDoc} - */ - public function getDomain(): string - { - return $this->domain; - } - - /** - * {@inheritDoc} - */ - public function isSecure(): bool - { - return $this->secure; - } - - /** - * {@inheritDoc} - */ - public function isHTTPOnly(): bool - { - return $this->httponly; - } - - /** - * {@inheritDoc} - */ - public function getSameSite(): string - { - return $this->samesite; - } - - /** - * {@inheritDoc} - */ - public function isRaw(): bool - { - return $this->raw; - } - - /** - * {@inheritDoc} - */ - public function getOptions(): array - { - // This is the order of options in `setcookie`. DO NOT CHANGE. - return [ - 'expires' => $this->expires, - 'path' => $this->path, - 'domain' => $this->domain, - 'secure' => $this->secure, - 'httponly' => $this->httponly, - 'samesite' => $this->samesite ?: ucfirst(self::SAMESITE_LAX), - ]; - } - - // ========================================================================= - // CLONING - // ========================================================================= - - /** - * {@inheritDoc} - */ - public function withPrefix(string $prefix = '') - { - $this->validatePrefix($prefix, $this->secure, $this->path, $this->domain); - - $cookie = clone $this; - - $cookie->prefix = $prefix; - - return $cookie; - } - - /** - * {@inheritDoc} - */ - public function withName(string $name) - { - $this->validateName($name, $this->raw); - - $cookie = clone $this; - - $cookie->name = $name; - - return $cookie; - } - - /** - * {@inheritDoc} - */ - public function withValue(string $value) - { - $cookie = clone $this; - - $cookie->value = $value; - - return $cookie; - } - - /** - * {@inheritDoc} - */ - public function withExpires($expires) - { - $cookie = clone $this; - - $cookie->expires = static::convertExpiresTimestamp($expires); - - return $cookie; - } - - /** - * {@inheritDoc} - */ - public function withExpired() - { - $cookie = clone $this; - - $cookie->expires = 0; - - return $cookie; - } - - /** - * @deprecated See https://github.com/codeigniter4/CodeIgniter4/pull/6413 - */ - public function withNeverExpiring() - { - $cookie = clone $this; - - $cookie->expires = Time::now()->getTimestamp() + 5 * YEAR; - - return $cookie; - } - - /** - * {@inheritDoc} - */ - public function withPath(?string $path) - { - $path = $path ?: self::$defaults['path']; - $this->validatePrefix($this->prefix, $this->secure, $path, $this->domain); - - $cookie = clone $this; - - $cookie->path = $path; - - return $cookie; - } - - /** - * {@inheritDoc} - */ - public function withDomain(?string $domain) - { - $domain ??= self::$defaults['domain']; - $this->validatePrefix($this->prefix, $this->secure, $this->path, $domain); - - $cookie = clone $this; - - $cookie->domain = $domain; - - return $cookie; - } - - /** - * {@inheritDoc} - */ - public function withSecure(bool $secure = true) - { - $this->validatePrefix($this->prefix, $secure, $this->path, $this->domain); - $this->validateSameSite($this->samesite, $secure); - - $cookie = clone $this; - - $cookie->secure = $secure; - - return $cookie; - } - - /** - * {@inheritDoc} - */ - public function withHTTPOnly(bool $httponly = true) - { - $cookie = clone $this; - - $cookie->httponly = $httponly; - - return $cookie; - } - - /** - * {@inheritDoc} - */ - public function withSameSite(string $samesite) - { - $this->validateSameSite($samesite, $this->secure); - - $cookie = clone $this; - - $cookie->samesite = ucfirst(strtolower($samesite)); - - return $cookie; - } - - /** - * {@inheritDoc} - */ - public function withRaw(bool $raw = true) - { - $this->validateName($this->name, $raw); - - $cookie = clone $this; - - $cookie->raw = $raw; - - return $cookie; - } - - // ========================================================================= - // ARRAY ACCESS FOR BC - // ========================================================================= - - /** - * Whether an offset exists. - * - * @param string $offset - */ - public function offsetExists($offset): bool - { - return $offset === 'expire' ? true : property_exists($this, $offset); - } - - /** - * Offset to retrieve. - * - * @param string $offset - * - * @return bool|int|string - * - * @throws InvalidArgumentException - */ - #[ReturnTypeWillChange] - public function offsetGet($offset) - { - if (! $this->offsetExists($offset)) { - throw new InvalidArgumentException(sprintf('Undefined offset "%s".', $offset)); - } - - return $offset === 'expire' ? $this->expires : $this->{$offset}; - } - - /** - * Offset to set. - * - * @param string $offset - * @param bool|int|string $value - * - * @throws LogicException - */ - public function offsetSet($offset, $value): void - { - throw new LogicException(sprintf('Cannot set values of properties of %s as it is immutable.', static::class)); - } - - /** - * Offset to unset. - * - * @param string $offset - * - * @throws LogicException - */ - public function offsetUnset($offset): void - { - throw new LogicException(sprintf('Cannot unset values of properties of %s as it is immutable.', static::class)); - } - - // ========================================================================= - // CONVERTERS - // ========================================================================= - - /** - * {@inheritDoc} - */ - public function toHeaderString(): string - { - return $this->__toString(); - } - - /** - * {@inheritDoc} - */ - public function __toString() - { - $cookieHeader = []; - - if ($this->getValue() === '') { - $cookieHeader[] = $this->getPrefixedName() . '=deleted'; - $cookieHeader[] = 'Expires=' . gmdate(self::EXPIRES_FORMAT, 0); - $cookieHeader[] = 'Max-Age=0'; - } else { - $value = $this->isRaw() ? $this->getValue() : rawurlencode($this->getValue()); - - $cookieHeader[] = sprintf('%s=%s', $this->getPrefixedName(), $value); - - if ($this->getExpiresTimestamp() !== 0) { - $cookieHeader[] = 'Expires=' . $this->getExpiresString(); - $cookieHeader[] = 'Max-Age=' . $this->getMaxAge(); - } - } - - if ($this->getPath() !== '') { - $cookieHeader[] = 'Path=' . $this->getPath(); - } - - if ($this->getDomain() !== '') { - $cookieHeader[] = 'Domain=' . $this->getDomain(); - } - - if ($this->isSecure()) { - $cookieHeader[] = 'Secure'; - } - - if ($this->isHTTPOnly()) { - $cookieHeader[] = 'HttpOnly'; - } - - $samesite = $this->getSameSite(); - - if ($samesite === '') { - // modern browsers warn in console logs that an empty SameSite attribute - // will be given the `Lax` value - $samesite = self::SAMESITE_LAX; - } - - $cookieHeader[] = 'SameSite=' . ucfirst(strtolower($samesite)); - - return implode('; ', $cookieHeader); - } - - /** - * {@inheritDoc} - */ - public function toArray(): array - { - return [ - 'name' => $this->name, - 'value' => $this->value, - 'prefix' => $this->prefix, - 'raw' => $this->raw, - ] + $this->getOptions(); - } - - /** - * Converts expires time to Unix format. - * - * @param DateTimeInterface|int|string $expires - */ - protected static function convertExpiresTimestamp($expires = 0): int - { - if ($expires instanceof DateTimeInterface) { - $expires = $expires->format('U'); - } - - if (! is_string($expires) && ! is_int($expires)) { - throw CookieException::forInvalidExpiresTime(gettype($expires)); - } - - if (! is_numeric($expires)) { - $expires = strtotime($expires); - - if ($expires === false) { - throw CookieException::forInvalidExpiresValue(); - } - } - - return $expires > 0 ? (int) $expires : 0; - } - - // ========================================================================= - // VALIDATION - // ========================================================================= - - /** - * Validates the cookie name per RFC 2616. - * - * If `$raw` is true, names should not contain invalid characters - * as `setrawcookie()` will reject this. - * - * @throws CookieException - */ - protected function validateName(string $name, bool $raw): void - { - if ($raw && strpbrk($name, self::$reservedCharsList) !== false) { - throw CookieException::forInvalidCookieName($name); - } - - if ($name === '') { - throw CookieException::forEmptyCookieName(); - } - } - - /** - * Validates the special prefixes if some attribute requirements are met. - * - * @throws CookieException - */ - protected function validatePrefix(string $prefix, bool $secure, string $path, string $domain): void - { - if (strpos($prefix, '__Secure-') === 0 && ! $secure) { - throw CookieException::forInvalidSecurePrefix(); - } - - if (strpos($prefix, '__Host-') === 0 && (! $secure || $domain !== '' || $path !== '/')) { - throw CookieException::forInvalidHostPrefix(); - } - } - - /** - * Validates the `SameSite` to be within the allowed types. - * - * @throws CookieException - * - * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite - */ - protected function validateSameSite(string $samesite, bool $secure): void - { - if ($samesite === '') { - $samesite = self::$defaults['samesite']; - } - - if ($samesite === '') { - $samesite = self::SAMESITE_LAX; - } - - if (! in_array(strtolower($samesite), self::ALLOWED_SAMESITE_VALUES, true)) { - throw CookieException::forInvalidSameSite($samesite); - } - - if (strtolower($samesite) === self::SAMESITE_NONE && ! $secure) { - throw CookieException::forInvalidSameSiteNone(); - } - } -} diff --git a/system4.4.6/Cookie/CookieInterface.php b/system4.4.6/Cookie/CookieInterface.php deleted file mode 100644 index 5a21d6ad..00000000 --- a/system4.4.6/Cookie/CookieInterface.php +++ /dev/null @@ -1,168 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Cookie; - -/** - * Interface for a value object representation of an HTTP cookie. - * - * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie - */ -interface CookieInterface -{ - /** - * Cookies will be sent in all contexts, i.e in responses to both - * first-party and cross-origin requests. If `SameSite=None` is set, - * the cookie `Secure` attribute must also be set (or the cookie will be blocked). - */ - public const SAMESITE_NONE = 'none'; - - /** - * Cookies are not sent on normal cross-site subrequests (for example to - * load images or frames into a third party site), but are sent when a - * user is navigating to the origin site (i.e. when following a link). - */ - public const SAMESITE_LAX = 'lax'; - - /** - * Cookies will only be sent in a first-party context and not be sent - * along with requests initiated by third party websites. - */ - public const SAMESITE_STRICT = 'strict'; - - /** - * RFC 6265 allowed values for the "SameSite" attribute. - * - * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite - */ - public const ALLOWED_SAMESITE_VALUES = [ - self::SAMESITE_NONE, - self::SAMESITE_LAX, - self::SAMESITE_STRICT, - ]; - - /** - * Expires date format. - * - * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Date - * @see https://tools.ietf.org/html/rfc7231#section-7.1.1.2 - */ - public const EXPIRES_FORMAT = 'D, d-M-Y H:i:s T'; - - /** - * Returns a unique identifier for the cookie consisting - * of its prefixed name, path, and domain. - */ - public function getId(): string; - - /** - * Gets the cookie prefix. - */ - public function getPrefix(): string; - - /** - * Gets the cookie name. - */ - public function getName(): string; - - /** - * Gets the cookie name prepended with the prefix, if any. - */ - public function getPrefixedName(): string; - - /** - * Gets the cookie value. - */ - public function getValue(): string; - - /** - * Gets the time in Unix timestamp the cookie expires. - */ - public function getExpiresTimestamp(): int; - - /** - * Gets the formatted expires time. - */ - public function getExpiresString(): string; - - /** - * Checks if the cookie is expired. - */ - public function isExpired(): bool; - - /** - * Gets the "Max-Age" cookie attribute. - */ - public function getMaxAge(): int; - - /** - * Gets the "Path" cookie attribute. - */ - public function getPath(): string; - - /** - * Gets the "Domain" cookie attribute. - */ - public function getDomain(): string; - - /** - * Gets the "Secure" cookie attribute. - * - * Checks if the cookie is only sent to the server when a request is made - * with the `https:` scheme (except on `localhost`), and therefore is more - * resistent to man-in-the-middle attacks. - */ - public function isSecure(): bool; - - /** - * Gets the "HttpOnly" cookie attribute. - * - * Checks if JavaScript is forbidden from accessing the cookie. - */ - public function isHTTPOnly(): bool; - - /** - * Gets the "SameSite" cookie attribute. - */ - public function getSameSite(): string; - - /** - * Checks if the cookie should be sent with no URL encoding. - */ - public function isRaw(): bool; - - /** - * Gets the options that are passable to the `setcookie` variant - * available on PHP 7.3+ - * - * @return array<string, bool|int|string> - */ - public function getOptions(): array; - - /** - * Returns the Cookie as a header value. - */ - public function toHeaderString(): string; - - /** - * Returns the string representation of the Cookie object. - * - * @return string - */ - public function __toString(); - - /** - * Returns the array representation of the Cookie object. - * - * @return array<string, bool|int|string> - */ - public function toArray(): array; -} diff --git a/system4.4.6/Cookie/CookieStore.php b/system4.4.6/Cookie/CookieStore.php deleted file mode 100644 index d893a4ad..00000000 --- a/system4.4.6/Cookie/CookieStore.php +++ /dev/null @@ -1,257 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Cookie; - -use ArrayIterator; -use CodeIgniter\Cookie\Exceptions\CookieException; -use Countable; -use IteratorAggregate; -use Traversable; - -/** - * The CookieStore object represents an immutable collection of `Cookie` value objects. - * - * @implements IteratorAggregate<string, Cookie> - * @see \CodeIgniter\Cookie\CookieStoreTest - */ -class CookieStore implements Countable, IteratorAggregate -{ - /** - * The cookie collection. - * - * @var array<string, Cookie> - */ - protected $cookies = []; - - /** - * Creates a CookieStore from an array of `Set-Cookie` headers. - * - * @param string[] $headers - * - * @return static - * - * @throws CookieException - */ - public static function fromCookieHeaders(array $headers, bool $raw = false) - { - /** - * @var Cookie[] $cookies - */ - $cookies = array_filter(array_map(static function (string $header) use ($raw) { - try { - return Cookie::fromHeaderString($header, $raw); - } catch (CookieException $e) { - log_message('error', (string) $e); - - return false; - } - }, $headers)); - - return new static($cookies); - } - - /** - * @param Cookie[] $cookies - * - * @throws CookieException - */ - final public function __construct(array $cookies) - { - $this->validateCookies($cookies); - - foreach ($cookies as $cookie) { - $this->cookies[$cookie->getId()] = $cookie; - } - } - - /** - * Checks if a `Cookie` object identified by name and - * prefix is present in the collection. - */ - public function has(string $name, string $prefix = '', ?string $value = null): bool - { - $name = $prefix . $name; - - foreach ($this->cookies as $cookie) { - if ($cookie->getPrefixedName() !== $name) { - continue; - } - - if ($value === null) { - return true; // for BC - } - - return $cookie->getValue() === $value; - } - - return false; - } - - /** - * Retrieves an instance of `Cookie` identified by a name and prefix. - * This throws an exception if not found. - * - * @throws CookieException - */ - public function get(string $name, string $prefix = ''): Cookie - { - $name = $prefix . $name; - - foreach ($this->cookies as $cookie) { - if ($cookie->getPrefixedName() === $name) { - return $cookie; - } - } - - throw CookieException::forUnknownCookieInstance([$name, $prefix]); - } - - /** - * Store a new cookie and return a new collection. The original collection - * is left unchanged. - * - * @return static - */ - public function put(Cookie $cookie) - { - $store = clone $this; - - $store->cookies[$cookie->getId()] = $cookie; - - return $store; - } - - /** - * Removes a cookie from a collection and returns an updated collection. - * The original collection is left unchanged. - * - * Removing a cookie from the store **DOES NOT** delete it from the browser. - * If you intend to delete a cookie *from the browser*, you must put an empty - * value cookie with the same name to the store. - * - * @return static - */ - public function remove(string $name, string $prefix = '') - { - $default = Cookie::setDefaults(); - - $id = implode(';', [$prefix . $name, $default['path'], $default['domain']]); - - $store = clone $this; - - foreach (array_keys($store->cookies) as $index) { - if ($index === $id) { - unset($store->cookies[$index]); - } - } - - return $store; - } - - /** - * Dispatches all cookies in store. - * - * @deprecated Response should dispatch cookies. - */ - public function dispatch(): void - { - foreach ($this->cookies as $cookie) { - $name = $cookie->getPrefixedName(); - $value = $cookie->getValue(); - $options = $cookie->getOptions(); - - if ($cookie->isRaw()) { - $this->setRawCookie($name, $value, $options); - } else { - $this->setCookie($name, $value, $options); - } - } - - $this->clear(); - } - - /** - * Returns all cookie instances in store. - * - * @return array<string, Cookie> - */ - public function display(): array - { - return $this->cookies; - } - - /** - * Clears the cookie collection. - */ - public function clear(): void - { - $this->cookies = []; - } - - /** - * Gets the Cookie count in this collection. - */ - public function count(): int - { - return count($this->cookies); - } - - /** - * Gets the iterator for the cookie collection. - * - * @return Traversable<string, Cookie> - */ - public function getIterator(): Traversable - { - return new ArrayIterator($this->cookies); - } - - /** - * Validates all cookies passed to be instances of Cookie. - * - * @throws CookieException - */ - protected function validateCookies(array $cookies): void - { - foreach ($cookies as $index => $cookie) { - $type = is_object($cookie) ? get_class($cookie) : gettype($cookie); - - if (! $cookie instanceof Cookie) { - throw CookieException::forInvalidCookieInstance([static::class, Cookie::class, $type, $index]); - } - } - } - - /** - * Extracted call to `setrawcookie()` in order to run unit tests on it. - * - * @codeCoverageIgnore - * - * @deprecated - */ - protected function setRawCookie(string $name, string $value, array $options): void - { - setrawcookie($name, $value, $options); - } - - /** - * Extracted call to `setcookie()` in order to run unit tests on it. - * - * @codeCoverageIgnore - * - * @deprecated - */ - protected function setCookie(string $name, string $value, array $options): void - { - setcookie($name, $value, $options); - } -} diff --git a/system4.4.6/Cookie/Exceptions/CookieException.php b/system4.4.6/Cookie/Exceptions/CookieException.php deleted file mode 100644 index 2e69a0e0..00000000 --- a/system4.4.6/Cookie/Exceptions/CookieException.php +++ /dev/null @@ -1,127 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Cookie\Exceptions; - -use CodeIgniter\Exceptions\FrameworkException; - -/** - * CookieException is thrown for invalid cookies initialization and management. - */ -class CookieException extends FrameworkException -{ - /** - * Thrown for invalid type given for the "Expires" attribute. - * - * @return static - */ - public static function forInvalidExpiresTime(string $type) - { - return new static(lang('Cookie.invalidExpiresTime', [$type])); - } - - /** - * Thrown when the value provided for "Expires" is invalid. - * - * @return static - */ - public static function forInvalidExpiresValue() - { - return new static(lang('Cookie.invalidExpiresValue')); - } - - /** - * Thrown when the cookie name contains invalid characters per RFC 2616. - * - * @return static - */ - public static function forInvalidCookieName(string $name) - { - return new static(lang('Cookie.invalidCookieName', [$name])); - } - - /** - * Thrown when the cookie name is empty. - * - * @return static - */ - public static function forEmptyCookieName() - { - return new static(lang('Cookie.emptyCookieName')); - } - - /** - * Thrown when using the `__Secure-` prefix but the `Secure` attribute - * is not set to true. - * - * @return static - */ - public static function forInvalidSecurePrefix() - { - return new static(lang('Cookie.invalidSecurePrefix')); - } - - /** - * Thrown when using the `__Host-` prefix but the `Secure` flag is not - * set, the `Domain` is set, and the `Path` is not `/`. - * - * @return static - */ - public static function forInvalidHostPrefix() - { - return new static(lang('Cookie.invalidHostPrefix')); - } - - /** - * Thrown when the `SameSite` attribute given is not of the valid types. - * - * @return static - */ - public static function forInvalidSameSite(string $sameSite) - { - return new static(lang('Cookie.invalidSameSite', [$sameSite])); - } - - /** - * Thrown when the `SameSite` attribute is set to `None` but the `Secure` - * attribute is not set. - * - * @return static - */ - public static function forInvalidSameSiteNone() - { - return new static(lang('Cookie.invalidSameSiteNone')); - } - - /** - * Thrown when the `CookieStore` class is filled with invalid Cookie objects. - * - * @param array<int|string> $data - * - * @return static - */ - public static function forInvalidCookieInstance(array $data) - { - return new static(lang('Cookie.invalidCookieInstance', $data)); - } - - /** - * Thrown when the queried Cookie object does not exist in the cookie collection. - * - * @param string[] $data - * - * @return static - */ - public static function forUnknownCookieInstance(array $data) - { - return new static(lang('Cookie.unknownCookieInstance', $data)); - } -} diff --git a/system4.4.6/Database/BaseBuilder.php b/system4.4.6/Database/BaseBuilder.php deleted file mode 100644 index bc005f48..00000000 --- a/system4.4.6/Database/BaseBuilder.php +++ /dev/null @@ -1,3519 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database; - -use Closure; -use CodeIgniter\Database\Exceptions\DatabaseException; -use CodeIgniter\Database\Exceptions\DataException; -use CodeIgniter\Traits\ConditionalTrait; -use InvalidArgumentException; - -/** - * Class BaseBuilder - * - * Provides the core Query Builder methods. - * Database-specific Builders might need to override - * certain methods to make them work. - */ -class BaseBuilder -{ - use ConditionalTrait; - - /** - * Reset DELETE data flag - * - * @var bool - */ - protected $resetDeleteData = false; - - /** - * QB SELECT data - * - * @var array - */ - protected $QBSelect = []; - - /** - * QB DISTINCT flag - * - * @var bool - */ - protected $QBDistinct = false; - - /** - * QB FROM data - * - * @var array - */ - protected $QBFrom = []; - - /** - * QB JOIN data - * - * @var array - */ - protected $QBJoin = []; - - /** - * QB WHERE data - * - * @var array - */ - protected $QBWhere = []; - - /** - * QB GROUP BY data - * - * @var array - */ - public $QBGroupBy = []; - - /** - * QB HAVING data - * - * @var array - */ - protected $QBHaving = []; - - /** - * QB keys - * list of column names. - * - * @var list<string> - */ - protected $QBKeys = []; - - /** - * QB LIMIT data - * - * @var bool|int - */ - protected $QBLimit = false; - - /** - * QB OFFSET data - * - * @var bool|int - */ - protected $QBOffset = false; - - /** - * QB ORDER BY data - * - * @var array|string|null - */ - public $QBOrderBy = []; - - /** - * QB UNION data - * - * @var array<string> - */ - protected array $QBUnion = []; - - /** - * QB NO ESCAPE data - * - * @var array - */ - public $QBNoEscape = []; - - /** - * QB data sets - * - * @var array<string, string>|list<list<int|string>> - */ - protected $QBSet = []; - - /** - * QB WHERE group started flag - * - * @var bool - */ - protected $QBWhereGroupStarted = false; - - /** - * QB WHERE group count - * - * @var int - */ - protected $QBWhereGroupCount = 0; - - /** - * Ignore data that cause certain - * exceptions, for example in case of - * duplicate keys. - * - * @var bool - */ - protected $QBIgnore = false; - - /** - * QB Options data - * Holds additional options and data used to render SQL - * and is reset by resetWrite() - * - * @var array{ - * updateFieldsAdditional?: array, - * tableIdentity?: string, - * updateFields?: array, - * constraints?: array, - * setQueryAsData?: string, - * sql?: string, - * alias?: string, - * fieldTypes?: array<string, array<string, string>> - * } - * - * fieldTypes: [ProtectedTableName => [FieldName => Type]] - */ - protected $QBOptions; - - /** - * A reference to the database connection. - * - * @var BaseConnection - */ - protected $db; - - /** - * Name of the primary table for this instance. - * Tracked separately because $QBFrom gets escaped - * and prefixed. - * - * When $tableName to the constructor has multiple tables, - * the value is empty string. - * - * @var string - */ - protected $tableName; - - /** - * ORDER BY random keyword - * - * @var array - */ - protected $randomKeyword = [ - 'RAND()', - 'RAND(%d)', - ]; - - /** - * COUNT string - * - * @used-by CI_DB_driver::count_all() - * @used-by BaseBuilder::count_all_results() - * - * @var string - */ - protected $countString = 'SELECT COUNT(*) AS '; - - /** - * Collects the named parameters and - * their values for later binding - * in the Query object. - * - * @var array - */ - protected $binds = []; - - /** - * Collects the key count for named parameters - * in the Query object. - * - * @var array - */ - protected $bindsKeyCount = []; - - /** - * Some databases, like SQLite, do not by default - * allow limiting of delete clauses. - * - * @var bool - */ - protected $canLimitDeletes = true; - - /** - * Some databases do not by default - * allow limit update queries with WHERE. - * - * @var bool - */ - protected $canLimitWhereUpdates = true; - - /** - * Specifies which sql statements - * support the ignore option. - * - * @var array - */ - protected $supportedIgnoreStatements = []; - - /** - * Builder testing mode status. - * - * @var bool - */ - protected $testMode = false; - - /** - * Tables relation types - * - * @var array - */ - protected $joinTypes = [ - 'LEFT', - 'RIGHT', - 'OUTER', - 'INNER', - 'LEFT OUTER', - 'RIGHT OUTER', - ]; - - /** - * Strings that determine if a string represents a literal value or a field name - * - * @var string[] - */ - protected $isLiteralStr = []; - - /** - * RegExp used to get operators - * - * @var string[] - */ - protected $pregOperators = []; - - /** - * Constructor - * - * @param array|string $tableName tablename or tablenames with or without aliases - * - * Examples of $tableName: `mytable`, `jobs j`, `jobs j, users u`, `['jobs j','users u']` - * - * @throws DatabaseException - */ - public function __construct($tableName, ConnectionInterface $db, ?array $options = null) - { - if (empty($tableName)) { - throw new DatabaseException('A table must be specified when creating a new Query Builder.'); - } - - /** - * @var BaseConnection $db - */ - $this->db = $db; - - // If it contains `,`, it has multiple tables - if (is_string($tableName) && strpos($tableName, ',') === false) { - $this->tableName = $tableName; // @TODO remove alias if exists - } else { - $this->tableName = ''; - } - - $this->from($tableName); - - if ($options !== null && $options !== []) { - foreach ($options as $key => $value) { - if (property_exists($this, $key)) { - $this->{$key} = $value; - } - } - } - } - - /** - * Returns the current database connection - * - * @return BaseConnection|ConnectionInterface - */ - public function db(): ConnectionInterface - { - return $this->db; - } - - /** - * Sets a test mode status. - * - * @return $this - */ - public function testMode(bool $mode = true) - { - $this->testMode = $mode; - - return $this; - } - - /** - * Gets the name of the primary table. - */ - public function getTable(): string - { - return $this->tableName; - } - - /** - * Returns an array of bind values and their - * named parameters for binding in the Query object later. - */ - public function getBinds(): array - { - return $this->binds; - } - - /** - * Ignore - * - * Set ignore Flag for next insert, - * update or delete query. - * - * @return $this - */ - public function ignore(bool $ignore = true) - { - $this->QBIgnore = $ignore; - - return $this; - } - - /** - * Generates the SELECT portion of the query - * - * @param array|RawSql|string $select - * - * @return $this - */ - public function select($select = '*', ?bool $escape = null) - { - // If the escape value was not set, we will base it on the global setting - if (! is_bool($escape)) { - $escape = $this->db->protectIdentifiers; - } - - if ($select instanceof RawSql) { - $this->QBSelect[] = $select; - - return $this; - } - - if (is_string($select)) { - $select = $escape === false ? [$select] : explode(',', $select); - } - - foreach ($select as $val) { - $val = trim($val); - - if ($val !== '') { - $this->QBSelect[] = $val; - - /* - * When doing 'SELECT NULL as field_alias FROM table' - * null gets taken as a field, and therefore escaped - * with backticks. - * This prevents NULL being escaped - * @see https://github.com/codeigniter4/CodeIgniter4/issues/1169 - */ - if (mb_stripos(trim($val), 'NULL') === 0) { - $escape = false; - } - - $this->QBNoEscape[] = $escape; - } - } - - return $this; - } - - /** - * Generates a SELECT MAX(field) portion of a query - * - * @return $this - */ - public function selectMax(string $select = '', string $alias = '') - { - return $this->maxMinAvgSum($select, $alias); - } - - /** - * Generates a SELECT MIN(field) portion of a query - * - * @return $this - */ - public function selectMin(string $select = '', string $alias = '') - { - return $this->maxMinAvgSum($select, $alias, 'MIN'); - } - - /** - * Generates a SELECT AVG(field) portion of a query - * - * @return $this - */ - public function selectAvg(string $select = '', string $alias = '') - { - return $this->maxMinAvgSum($select, $alias, 'AVG'); - } - - /** - * Generates a SELECT SUM(field) portion of a query - * - * @return $this - */ - public function selectSum(string $select = '', string $alias = '') - { - return $this->maxMinAvgSum($select, $alias, 'SUM'); - } - - /** - * Generates a SELECT COUNT(field) portion of a query - * - * @return $this - */ - public function selectCount(string $select = '', string $alias = '') - { - return $this->maxMinAvgSum($select, $alias, 'COUNT'); - } - - /** - * Adds a subquery to the selection - */ - public function selectSubquery(BaseBuilder $subquery, string $as): self - { - $this->QBSelect[] = $this->buildSubquery($subquery, true, $as); - - return $this; - } - - /** - * SELECT [MAX|MIN|AVG|SUM|COUNT]() - * - * @used-by selectMax() - * @used-by selectMin() - * @used-by selectAvg() - * @used-by selectSum() - * - * @return $this - * - * @throws DatabaseException - * @throws DataException - */ - protected function maxMinAvgSum(string $select = '', string $alias = '', string $type = 'MAX') - { - if ($select === '') { - throw DataException::forEmptyInputGiven('Select'); - } - - if (strpos($select, ',') !== false) { - throw DataException::forInvalidArgument('column name not separated by comma'); - } - - $type = strtoupper($type); - - if (! in_array($type, ['MAX', 'MIN', 'AVG', 'SUM', 'COUNT'], true)) { - throw new DatabaseException('Invalid function type: ' . $type); - } - - if ($alias === '') { - $alias = $this->createAliasFromTable(trim($select)); - } - - $sql = $type . '(' . $this->db->protectIdentifiers(trim($select)) . ') AS ' . $this->db->escapeIdentifiers(trim($alias)); - - $this->QBSelect[] = $sql; - $this->QBNoEscape[] = null; - - return $this; - } - - /** - * Determines the alias name based on the table - */ - protected function createAliasFromTable(string $item): string - { - if (strpos($item, '.') !== false) { - $item = explode('.', $item); - - return end($item); - } - - return $item; - } - - /** - * Sets a flag which tells the query string compiler to add DISTINCT - * - * @return $this - */ - public function distinct(bool $val = true) - { - $this->QBDistinct = $val; - - return $this; - } - - /** - * Generates the FROM portion of the query - * - * @param array|string $from - * - * @return $this - */ - public function from($from, bool $overwrite = false): self - { - if ($overwrite === true) { - $this->QBFrom = []; - $this->db->setAliasedTables([]); - } - - foreach ((array) $from as $table) { - if (strpos($table, ',') !== false) { - $this->from(explode(',', $table)); - } else { - $table = trim($table); - - if ($table === '') { - continue; - } - - $this->trackAliases($table); - $this->QBFrom[] = $this->db->protectIdentifiers($table, true, null, false); - } - } - - return $this; - } - - /** - * @param BaseBuilder $from Expected subquery - * @param string $alias Subquery alias - * - * @return $this - */ - public function fromSubquery(BaseBuilder $from, string $alias): self - { - $table = $this->buildSubquery($from, true, $alias); - - $this->db->addTableAlias($alias); - $this->QBFrom[] = $table; - - return $this; - } - - /** - * Generates the JOIN portion of the query - * - * @param RawSql|string $cond - * - * @return $this - */ - public function join(string $table, $cond, string $type = '', ?bool $escape = null) - { - if ($type !== '') { - $type = strtoupper(trim($type)); - - if (! in_array($type, $this->joinTypes, true)) { - $type = ''; - } else { - $type .= ' '; - } - } - - // Extract any aliases that might exist. We use this information - // in the protectIdentifiers to know whether to add a table prefix - $this->trackAliases($table); - - if (! is_bool($escape)) { - $escape = $this->db->protectIdentifiers; - } - - // Do we want to escape the table name? - if ($escape === true) { - $table = $this->db->protectIdentifiers($table, true, null, false); - } - - if ($cond instanceof RawSql) { - $this->QBJoin[] = $type . 'JOIN ' . $table . ' ON ' . $cond; - - return $this; - } - - if (! $this->hasOperator($cond)) { - $cond = ' USING (' . ($escape ? $this->db->escapeIdentifiers($cond) : $cond) . ')'; - } elseif ($escape === false) { - $cond = ' ON ' . $cond; - } else { - // Split multiple conditions - if (preg_match_all('/\sAND\s|\sOR\s/i', $cond, $joints, PREG_OFFSET_CAPTURE)) { - $conditions = []; - $joints = $joints[0]; - array_unshift($joints, ['', 0]); - - for ($i = count($joints) - 1, $pos = strlen($cond); $i >= 0; $i--) { - $joints[$i][1] += strlen($joints[$i][0]); // offset - $conditions[$i] = substr($cond, $joints[$i][1], $pos - $joints[$i][1]); - $pos = $joints[$i][1] - strlen($joints[$i][0]); - $joints[$i] = $joints[$i][0]; - } - ksort($conditions); - } else { - $conditions = [$cond]; - $joints = ['']; - } - - $cond = ' ON '; - - foreach ($conditions as $i => $condition) { - $operator = $this->getOperator($condition); - - $cond .= $joints[$i]; - $cond .= preg_match('/(\(*)?([\[\]\w\.\'-]+)' . preg_quote($operator, '/') . '(.*)/i', $condition, $match) ? $match[1] . $this->db->protectIdentifiers($match[2]) . $operator . $this->db->protectIdentifiers($match[3]) : $condition; - } - } - - // Assemble the JOIN statement - $this->QBJoin[] = $type . 'JOIN ' . $table . $cond; - - return $this; - } - - /** - * Generates the WHERE portion of the query. - * Separates multiple calls with 'AND'. - * - * @param array|RawSql|string $key - * @param mixed $value - * - * @return $this - */ - public function where($key, $value = null, ?bool $escape = null) - { - return $this->whereHaving('QBWhere', $key, $value, 'AND ', $escape); - } - - /** - * OR WHERE - * - * Generates the WHERE portion of the query. - * Separates multiple calls with 'OR'. - * - * @param array|RawSql|string $key - * @param mixed $value - * - * @return $this - */ - public function orWhere($key, $value = null, ?bool $escape = null) - { - return $this->whereHaving('QBWhere', $key, $value, 'OR ', $escape); - } - - /** - * @used-by where() - * @used-by orWhere() - * @used-by having() - * @used-by orHaving() - * - * @param array|RawSql|string $key - * @param mixed $value - * - * @return $this - */ - protected function whereHaving(string $qbKey, $key, $value = null, string $type = 'AND ', ?bool $escape = null) - { - $rawSqlOnly = false; - - if ($key instanceof RawSql) { - if ($value === null) { - $keyValue = [(string) $key => $key]; - $rawSqlOnly = true; - } else { - $keyValue = [(string) $key => $value]; - } - } elseif (! is_array($key)) { - $keyValue = [$key => $value]; - } else { - $keyValue = $key; - } - - // If the escape value was not set will base it on the global setting - if (! is_bool($escape)) { - $escape = $this->db->protectIdentifiers; - } - - foreach ($keyValue as $k => $v) { - $prefix = empty($this->{$qbKey}) ? $this->groupGetType('') : $this->groupGetType($type); - - if ($rawSqlOnly === true) { - $k = ''; - $op = ''; - } elseif ($v !== null) { - $op = $this->getOperatorFromWhereKey($k); - - if (! empty($op)) { - $k = trim($k); - - end($op); - $op = trim(current($op)); - - // Does the key end with operator? - if (substr($k, -strlen($op)) === $op) { - $k = rtrim(substr($k, 0, -strlen($op))); - $op = " {$op}"; - } else { - $op = ''; - } - } else { - $op = ' ='; - } - - if ($this->isSubquery($v)) { - $v = $this->buildSubquery($v, true); - } else { - $bind = $this->setBind($k, $v, $escape); - $v = " :{$bind}:"; - } - } elseif (! $this->hasOperator($k) && $qbKey !== 'QBHaving') { - // value appears not to have been set, assign the test to IS NULL - $op = ' IS NULL'; - } elseif ( - // The key ends with !=, =, <>, IS, IS NOT - preg_match( - '/\s*(!?=|<>|IS(?:\s+NOT)?)\s*$/i', - $k, - $match, - PREG_OFFSET_CAPTURE - ) - ) { - $k = substr($k, 0, $match[0][1]); - $op = $match[1][0] === '=' ? ' IS NULL' : ' IS NOT NULL'; - } else { - $op = ''; - } - - if ($v instanceof RawSql) { - $this->{$qbKey}[] = [ - 'condition' => $v->with($prefix . $k . $op . $v), - 'escape' => $escape, - ]; - } else { - $this->{$qbKey}[] = [ - 'condition' => $prefix . $k . $op . $v, - 'escape' => $escape, - ]; - } - } - - return $this; - } - - /** - * Generates a WHERE field IN('item', 'item') SQL query, - * joined with 'AND' if appropriate. - * - * @param array|BaseBuilder|Closure|string $values The values searched on, or anonymous function with subquery - * - * @return $this - */ - public function whereIn(?string $key = null, $values = null, ?bool $escape = null) - { - return $this->_whereIn($key, $values, false, 'AND ', $escape); - } - - /** - * Generates a WHERE field IN('item', 'item') SQL query, - * joined with 'OR' if appropriate. - * - * @param array|BaseBuilder|Closure|string $values The values searched on, or anonymous function with subquery - * - * @return $this - */ - public function orWhereIn(?string $key = null, $values = null, ?bool $escape = null) - { - return $this->_whereIn($key, $values, false, 'OR ', $escape); - } - - /** - * Generates a WHERE field NOT IN('item', 'item') SQL query, - * joined with 'AND' if appropriate. - * - * @param array|BaseBuilder|Closure|string $values The values searched on, or anonymous function with subquery - * - * @return $this - */ - public function whereNotIn(?string $key = null, $values = null, ?bool $escape = null) - { - return $this->_whereIn($key, $values, true, 'AND ', $escape); - } - - /** - * Generates a WHERE field NOT IN('item', 'item') SQL query, - * joined with 'OR' if appropriate. - * - * @param array|BaseBuilder|Closure|string $values The values searched on, or anonymous function with subquery - * - * @return $this - */ - public function orWhereNotIn(?string $key = null, $values = null, ?bool $escape = null) - { - return $this->_whereIn($key, $values, true, 'OR ', $escape); - } - - /** - * Generates a HAVING field IN('item', 'item') SQL query, - * joined with 'AND' if appropriate. - * - * @param array|BaseBuilder|Closure|string $values The values searched on, or anonymous function with subquery - * - * @return $this - */ - public function havingIn(?string $key = null, $values = null, ?bool $escape = null) - { - return $this->_whereIn($key, $values, false, 'AND ', $escape, 'QBHaving'); - } - - /** - * Generates a HAVING field IN('item', 'item') SQL query, - * joined with 'OR' if appropriate. - * - * @param array|BaseBuilder|Closure|string $values The values searched on, or anonymous function with subquery - * - * @return $this - */ - public function orHavingIn(?string $key = null, $values = null, ?bool $escape = null) - { - return $this->_whereIn($key, $values, false, 'OR ', $escape, 'QBHaving'); - } - - /** - * Generates a HAVING field NOT IN('item', 'item') SQL query, - * joined with 'AND' if appropriate. - * - * @param array|BaseBuilder|Closure|string $values The values searched on, or anonymous function with subquery - * - * @return $this - */ - public function havingNotIn(?string $key = null, $values = null, ?bool $escape = null) - { - return $this->_whereIn($key, $values, true, 'AND ', $escape, 'QBHaving'); - } - - /** - * Generates a HAVING field NOT IN('item', 'item') SQL query, - * joined with 'OR' if appropriate. - * - * @param array|BaseBuilder|Closure|string $values The values searched on, or anonymous function with subquery - * - * @return $this - */ - public function orHavingNotIn(?string $key = null, $values = null, ?bool $escape = null) - { - return $this->_whereIn($key, $values, true, 'OR ', $escape, 'QBHaving'); - } - - /** - * @used-by WhereIn() - * @used-by orWhereIn() - * @used-by whereNotIn() - * @used-by orWhereNotIn() - * - * @param non-empty-string|null $key - * @param array|BaseBuilder|Closure|null $values The values searched on, or anonymous function with subquery - * - * @return $this - * - * @throws InvalidArgumentException - */ - protected function _whereIn(?string $key = null, $values = null, bool $not = false, string $type = 'AND ', ?bool $escape = null, string $clause = 'QBWhere') - { - if ($key === null || $key === '') { - throw new InvalidArgumentException(sprintf('%s() expects $key to be a non-empty string', debug_backtrace(0, 2)[1]['function'])); - } - - if ($values === null || (! is_array($values) && ! $this->isSubquery($values))) { - throw new InvalidArgumentException(sprintf('%s() expects $values to be of type array or closure', debug_backtrace(0, 2)[1]['function'])); - } - - if (! is_bool($escape)) { - $escape = $this->db->protectIdentifiers; - } - - $ok = $key; - - if ($escape === true) { - $key = $this->db->protectIdentifiers($key); - } - - $not = ($not) ? ' NOT' : ''; - - if ($this->isSubquery($values)) { - $whereIn = $this->buildSubquery($values, true); - $escape = false; - } else { - $whereIn = array_values($values); - } - - $ok = $this->setBind($ok, $whereIn, $escape); - - $prefix = empty($this->{$clause}) ? $this->groupGetType('') : $this->groupGetType($type); - - $whereIn = [ - 'condition' => "{$prefix}{$key}{$not} IN :{$ok}:", - 'escape' => false, - ]; - - $this->{$clause}[] = $whereIn; - - return $this; - } - - /** - * Generates a %LIKE% portion of the query. - * Separates multiple calls with 'AND'. - * - * @param array|RawSql|string $field - * - * @return $this - */ - public function like($field, string $match = '', string $side = 'both', ?bool $escape = null, bool $insensitiveSearch = false) - { - return $this->_like($field, $match, 'AND ', $side, '', $escape, $insensitiveSearch); - } - - /** - * Generates a NOT LIKE portion of the query. - * Separates multiple calls with 'AND'. - * - * @param array|RawSql|string $field - * - * @return $this - */ - public function notLike($field, string $match = '', string $side = 'both', ?bool $escape = null, bool $insensitiveSearch = false) - { - return $this->_like($field, $match, 'AND ', $side, 'NOT', $escape, $insensitiveSearch); - } - - /** - * Generates a %LIKE% portion of the query. - * Separates multiple calls with 'OR'. - * - * @param array|RawSql|string $field - * - * @return $this - */ - public function orLike($field, string $match = '', string $side = 'both', ?bool $escape = null, bool $insensitiveSearch = false) - { - return $this->_like($field, $match, 'OR ', $side, '', $escape, $insensitiveSearch); - } - - /** - * Generates a NOT LIKE portion of the query. - * Separates multiple calls with 'OR'. - * - * @param array|RawSql|string $field - * - * @return $this - */ - public function orNotLike($field, string $match = '', string $side = 'both', ?bool $escape = null, bool $insensitiveSearch = false) - { - return $this->_like($field, $match, 'OR ', $side, 'NOT', $escape, $insensitiveSearch); - } - - /** - * Generates a %LIKE% portion of the query. - * Separates multiple calls with 'AND'. - * - * @param array|RawSql|string $field - * - * @return $this - */ - public function havingLike($field, string $match = '', string $side = 'both', ?bool $escape = null, bool $insensitiveSearch = false) - { - return $this->_like($field, $match, 'AND ', $side, '', $escape, $insensitiveSearch, 'QBHaving'); - } - - /** - * Generates a NOT LIKE portion of the query. - * Separates multiple calls with 'AND'. - * - * @param array|RawSql|string $field - * - * @return $this - */ - public function notHavingLike($field, string $match = '', string $side = 'both', ?bool $escape = null, bool $insensitiveSearch = false) - { - return $this->_like($field, $match, 'AND ', $side, 'NOT', $escape, $insensitiveSearch, 'QBHaving'); - } - - /** - * Generates a %LIKE% portion of the query. - * Separates multiple calls with 'OR'. - * - * @param array|RawSql|string $field - * - * @return $this - */ - public function orHavingLike($field, string $match = '', string $side = 'both', ?bool $escape = null, bool $insensitiveSearch = false) - { - return $this->_like($field, $match, 'OR ', $side, '', $escape, $insensitiveSearch, 'QBHaving'); - } - - /** - * Generates a NOT LIKE portion of the query. - * Separates multiple calls with 'OR'. - * - * @param array|RawSql|string $field - * - * @return $this - */ - public function orNotHavingLike($field, string $match = '', string $side = 'both', ?bool $escape = null, bool $insensitiveSearch = false) - { - return $this->_like($field, $match, 'OR ', $side, 'NOT', $escape, $insensitiveSearch, 'QBHaving'); - } - - /** - * @used-by like() - * @used-by orLike() - * @used-by notLike() - * @used-by orNotLike() - * @used-by havingLike() - * @used-by orHavingLike() - * @used-by notHavingLike() - * @used-by orNotHavingLike() - * - * @param array|RawSql|string $field - * - * @return $this - */ - protected function _like($field, string $match = '', string $type = 'AND ', string $side = 'both', string $not = '', ?bool $escape = null, bool $insensitiveSearch = false, string $clause = 'QBWhere') - { - $escape = is_bool($escape) ? $escape : $this->db->protectIdentifiers; - $side = strtolower($side); - - if ($field instanceof RawSql) { - $k = (string) $field; - $v = $match; - $insensitiveSearch = false; - - $prefix = empty($this->{$clause}) ? $this->groupGetType('') : $this->groupGetType($type); - - if ($side === 'none') { - $bind = $this->setBind($field->getBindingKey(), $v, $escape); - } elseif ($side === 'before') { - $bind = $this->setBind($field->getBindingKey(), "%{$v}", $escape); - } elseif ($side === 'after') { - $bind = $this->setBind($field->getBindingKey(), "{$v}%", $escape); - } else { - $bind = $this->setBind($field->getBindingKey(), "%{$v}%", $escape); - } - - $likeStatement = $this->_like_statement($prefix, $k, $not, $bind, $insensitiveSearch); - - // some platforms require an escape sequence definition for LIKE wildcards - if ($escape === true && $this->db->likeEscapeStr !== '') { - $likeStatement .= sprintf($this->db->likeEscapeStr, $this->db->likeEscapeChar); - } - - $this->{$clause}[] = [ - 'condition' => $field->with($likeStatement), - 'escape' => $escape, - ]; - - return $this; - } - - $keyValue = ! is_array($field) ? [$field => $match] : $field; - - foreach ($keyValue as $k => $v) { - if ($insensitiveSearch === true) { - $v = strtolower($v); - } - - $prefix = empty($this->{$clause}) ? $this->groupGetType('') : $this->groupGetType($type); - - if ($side === 'none') { - $bind = $this->setBind($k, $v, $escape); - } elseif ($side === 'before') { - $bind = $this->setBind($k, "%{$v}", $escape); - } elseif ($side === 'after') { - $bind = $this->setBind($k, "{$v}%", $escape); - } else { - $bind = $this->setBind($k, "%{$v}%", $escape); - } - - $likeStatement = $this->_like_statement($prefix, $k, $not, $bind, $insensitiveSearch); - - // some platforms require an escape sequence definition for LIKE wildcards - if ($escape === true && $this->db->likeEscapeStr !== '') { - $likeStatement .= sprintf($this->db->likeEscapeStr, $this->db->likeEscapeChar); - } - - $this->{$clause}[] = [ - 'condition' => $likeStatement, - 'escape' => $escape, - ]; - } - - return $this; - } - - /** - * Platform independent LIKE statement builder. - */ - protected function _like_statement(?string $prefix, string $column, ?string $not, string $bind, bool $insensitiveSearch = false): string - { - if ($insensitiveSearch === true) { - return "{$prefix} LOWER(" . $this->db->escapeIdentifiers($column) . ") {$not} LIKE :{$bind}:"; - } - - return "{$prefix} {$column} {$not} LIKE :{$bind}:"; - } - - /** - * Add UNION statement - * - * @param BaseBuilder|Closure $union - * - * @return $this - */ - public function union($union) - { - return $this->addUnionStatement($union); - } - - /** - * Add UNION ALL statement - * - * @param BaseBuilder|Closure $union - * - * @return $this - */ - public function unionAll($union) - { - return $this->addUnionStatement($union, true); - } - - /** - * @used-by union() - * @used-by unionAll() - * - * @param BaseBuilder|Closure $union - * - * @return $this - */ - protected function addUnionStatement($union, bool $all = false) - { - $this->QBUnion[] = "\nUNION " - . ($all ? 'ALL ' : '') - . 'SELECT * FROM ' - . $this->buildSubquery($union, true, 'uwrp' . (count($this->QBUnion) + 1)); - - return $this; - } - - /** - * Starts a query group. - * - * @return $this - */ - public function groupStart() - { - return $this->groupStartPrepare(); - } - - /** - * Starts a query group, but ORs the group - * - * @return $this - */ - public function orGroupStart() - { - return $this->groupStartPrepare('', 'OR '); - } - - /** - * Starts a query group, but NOTs the group - * - * @return $this - */ - public function notGroupStart() - { - return $this->groupStartPrepare('NOT '); - } - - /** - * Starts a query group, but OR NOTs the group - * - * @return $this - */ - public function orNotGroupStart() - { - return $this->groupStartPrepare('NOT ', 'OR '); - } - - /** - * Ends a query group - * - * @return $this - */ - public function groupEnd() - { - return $this->groupEndPrepare(); - } - - /** - * Starts a query group for HAVING clause. - * - * @return $this - */ - public function havingGroupStart() - { - return $this->groupStartPrepare('', 'AND ', 'QBHaving'); - } - - /** - * Starts a query group for HAVING clause, but ORs the group. - * - * @return $this - */ - public function orHavingGroupStart() - { - return $this->groupStartPrepare('', 'OR ', 'QBHaving'); - } - - /** - * Starts a query group for HAVING clause, but NOTs the group. - * - * @return $this - */ - public function notHavingGroupStart() - { - return $this->groupStartPrepare('NOT ', 'AND ', 'QBHaving'); - } - - /** - * Starts a query group for HAVING clause, but OR NOTs the group. - * - * @return $this - */ - public function orNotHavingGroupStart() - { - return $this->groupStartPrepare('NOT ', 'OR ', 'QBHaving'); - } - - /** - * Ends a query group for HAVING clause. - * - * @return $this - */ - public function havingGroupEnd() - { - return $this->groupEndPrepare('QBHaving'); - } - - /** - * Prepate a query group start. - * - * @return $this - */ - protected function groupStartPrepare(string $not = '', string $type = 'AND ', string $clause = 'QBWhere') - { - $type = $this->groupGetType($type); - - $this->QBWhereGroupStarted = true; - $prefix = empty($this->{$clause}) ? '' : $type; - $where = [ - 'condition' => $prefix . $not . str_repeat(' ', ++$this->QBWhereGroupCount) . ' (', - 'escape' => false, - ]; - - $this->{$clause}[] = $where; - - return $this; - } - - /** - * Prepate a query group end. - * - * @return $this - */ - protected function groupEndPrepare(string $clause = 'QBWhere') - { - $this->QBWhereGroupStarted = false; - $where = [ - 'condition' => str_repeat(' ', $this->QBWhereGroupCount--) . ')', - 'escape' => false, - ]; - - $this->{$clause}[] = $where; - - return $this; - } - - /** - * @used-by groupStart() - * @used-by _like() - * @used-by whereHaving() - * @used-by _whereIn() - * @used-by havingGroupStart() - */ - protected function groupGetType(string $type): string - { - if ($this->QBWhereGroupStarted) { - $type = ''; - $this->QBWhereGroupStarted = false; - } - - return $type; - } - - /** - * @param array|string $by - * - * @return $this - */ - public function groupBy($by, ?bool $escape = null) - { - if (! is_bool($escape)) { - $escape = $this->db->protectIdentifiers; - } - - if (is_string($by)) { - $by = ($escape === true) ? explode(',', $by) : [$by]; - } - - foreach ($by as $val) { - $val = trim($val); - - if ($val !== '') { - $val = [ - 'field' => $val, - 'escape' => $escape, - ]; - - $this->QBGroupBy[] = $val; - } - } - - return $this; - } - - /** - * Separates multiple calls with 'AND'. - * - * @param array|RawSql|string $key - * @param mixed $value - * - * @return $this - */ - public function having($key, $value = null, ?bool $escape = null) - { - return $this->whereHaving('QBHaving', $key, $value, 'AND ', $escape); - } - - /** - * Separates multiple calls with 'OR'. - * - * @param array|RawSql|string $key - * @param mixed $value - * - * @return $this - */ - public function orHaving($key, $value = null, ?bool $escape = null) - { - return $this->whereHaving('QBHaving', $key, $value, 'OR ', $escape); - } - - /** - * @param string $direction ASC, DESC or RANDOM - * - * @return $this - */ - public function orderBy(string $orderBy, string $direction = '', ?bool $escape = null) - { - $qbOrderBy = []; - if ($orderBy === '') { - return $this; - } - - $direction = strtoupper(trim($direction)); - - if ($direction === 'RANDOM') { - $direction = ''; - $orderBy = ctype_digit($orderBy) ? sprintf($this->randomKeyword[1], $orderBy) : $this->randomKeyword[0]; - $escape = false; - } elseif ($direction !== '') { - $direction = in_array($direction, ['ASC', 'DESC'], true) ? ' ' . $direction : ''; - } - - if (! is_bool($escape)) { - $escape = $this->db->protectIdentifiers; - } - - if ($escape === false) { - $qbOrderBy[] = [ - 'field' => $orderBy, - 'direction' => $direction, - 'escape' => false, - ]; - } else { - $qbOrderBy = []; - - foreach (explode(',', $orderBy) as $field) { - $qbOrderBy[] = ($direction === '' && preg_match('/\s+(ASC|DESC)$/i', rtrim($field), $match, PREG_OFFSET_CAPTURE)) - ? [ - 'field' => ltrim(substr($field, 0, $match[0][1])), - 'direction' => ' ' . $match[1][0], - 'escape' => true, - ] - : [ - 'field' => trim($field), - 'direction' => $direction, - 'escape' => true, - ]; - } - } - - $this->QBOrderBy = array_merge($this->QBOrderBy, $qbOrderBy); - - return $this; - } - - /** - * @return $this - */ - public function limit(?int $value = null, ?int $offset = 0) - { - if ($value !== null) { - $this->QBLimit = $value; - } - - if ($offset !== null && $offset !== 0) { - $this->QBOffset = $offset; - } - - return $this; - } - - /** - * Sets the OFFSET value - * - * @return $this - */ - public function offset(int $offset) - { - if ($offset !== 0) { - $this->QBOffset = $offset; - } - - return $this; - } - - /** - * Generates a platform-specific LIMIT clause. - */ - protected function _limit(string $sql, bool $offsetIgnore = false): string - { - return $sql . ' LIMIT ' . ($offsetIgnore === false && $this->QBOffset ? $this->QBOffset . ', ' : '') . $this->QBLimit; - } - - /** - * Allows key/value pairs to be set for insert(), update() or replace(). - * - * @param array|object|string $key Field name, or an array of field/value pairs - * @param mixed $value Field value, if $key is a single field - * @param bool|null $escape Whether to escape values - * - * @return $this - */ - public function set($key, $value = '', ?bool $escape = null) - { - $key = $this->objectToArray($key); - - if (! is_array($key)) { - $key = [$key => $value]; - } - - $escape = is_bool($escape) ? $escape : $this->db->protectIdentifiers; - - foreach ($key as $k => $v) { - if ($escape) { - $bind = $this->setBind($k, $v, $escape); - - $this->QBSet[$this->db->protectIdentifiers($k, false)] = ":{$bind}:"; - } else { - $this->QBSet[$this->db->protectIdentifiers($k, false)] = $v; - } - } - - return $this; - } - - /** - * Returns the previously set() data, alternatively resetting it if needed. - */ - public function getSetData(bool $clean = false): array - { - $data = $this->QBSet; - - if ($clean) { - $this->QBSet = []; - } - - return $data; - } - - /** - * Compiles a SELECT query string and returns the sql. - */ - public function getCompiledSelect(bool $reset = true): string - { - $select = $this->compileSelect(); - - if ($reset === true) { - $this->resetSelect(); - } - - return $this->compileFinalQuery($select); - } - - /** - * Returns a finalized, compiled query string with the bindings - * inserted and prefixes swapped out. - */ - protected function compileFinalQuery(string $sql): string - { - $query = new Query($this->db); - $query->setQuery($sql, $this->binds, false); - - if (! empty($this->db->swapPre) && ! empty($this->db->DBPrefix)) { - $query->swapPrefix($this->db->DBPrefix, $this->db->swapPre); - } - - return $query->getQuery(); - } - - /** - * Compiles the select statement based on the other functions called - * and runs the query - * - * @return false|ResultInterface - */ - public function get(?int $limit = null, int $offset = 0, bool $reset = true) - { - if ($limit !== null) { - $this->limit($limit, $offset); - } - - $result = $this->testMode - ? $this->getCompiledSelect($reset) - : $this->db->query($this->compileSelect(), $this->binds, false); - - if ($reset === true) { - $this->resetSelect(); - - // Clear our binds so we don't eat up memory - $this->binds = []; - } - - return $result; - } - - /** - * Generates a platform-specific query string that counts all records in - * the particular table - * - * @return int|string - */ - public function countAll(bool $reset = true) - { - $table = $this->QBFrom[0]; - - $sql = $this->countString . $this->db->escapeIdentifiers('numrows') . ' FROM ' . - $this->db->protectIdentifiers($table, true, null, false); - - if ($this->testMode) { - return $sql; - } - - $query = $this->db->query($sql, null, false); - - if (empty($query->getResult())) { - return 0; - } - - $query = $query->getRow(); - - if ($reset === true) { - $this->resetSelect(); - } - - return (int) $query->numrows; - } - - /** - * Generates a platform-specific query string that counts all records - * returned by an Query Builder query. - * - * @return int|string - */ - public function countAllResults(bool $reset = true) - { - // ORDER BY usage is often problematic here (most notably - // on Microsoft SQL Server) and ultimately unnecessary - // for selecting COUNT(*) ... - $orderBy = []; - - if (! empty($this->QBOrderBy)) { - $orderBy = $this->QBOrderBy; - - $this->QBOrderBy = null; - } - - // We cannot use a LIMIT when getting the single row COUNT(*) result - $limit = $this->QBLimit; - - $this->QBLimit = false; - - if ($this->QBDistinct === true || ! empty($this->QBGroupBy)) { - // We need to backup the original SELECT in case DBPrefix is used - $select = $this->QBSelect; - $sql = $this->countString . $this->db->protectIdentifiers('numrows') . "\nFROM (\n" . $this->compileSelect() . "\n) CI_count_all_results"; - - // Restore SELECT part - $this->QBSelect = $select; - unset($select); - } else { - $sql = $this->compileSelect($this->countString . $this->db->protectIdentifiers('numrows')); - } - - if ($this->testMode) { - return $sql; - } - - $result = $this->db->query($sql, $this->binds, false); - - if ($reset === true) { - $this->resetSelect(); - } elseif (! isset($this->QBOrderBy)) { - $this->QBOrderBy = $orderBy; - } - - // Restore the LIMIT setting - $this->QBLimit = $limit; - - $row = ! $result instanceof ResultInterface ? null : $result->getRow(); - - if (empty($row)) { - return 0; - } - - return (int) $row->numrows; - } - - /** - * Compiles the set conditions and returns the sql statement - * - * @return array - */ - public function getCompiledQBWhere() - { - return $this->QBWhere; - } - - /** - * Allows the where clause, limit and offset to be added directly - * - * @param array|string $where - * - * @return ResultInterface - */ - public function getWhere($where = null, ?int $limit = null, ?int $offset = 0, bool $reset = true) - { - if ($where !== null) { - $this->where($where); - } - - if ($limit !== null && $limit !== 0) { - $this->limit($limit, $offset); - } - - $result = $this->testMode - ? $this->getCompiledSelect($reset) - : $this->db->query($this->compileSelect(), $this->binds, false); - - if ($reset === true) { - $this->resetSelect(); - - // Clear our binds so we don't eat up memory - $this->binds = []; - } - - return $result; - } - - /** - * Compiles batch insert/update/upsert strings and runs the queries - * - * @param '_deleteBatch'|'_insertBatch'|'_updateBatch'|'_upsertBatch' $renderMethod - * - * @return false|int|string[] Number of rows inserted or FALSE on failure, SQL array when testMode - * - * @throws DatabaseException - */ - protected function batchExecute(string $renderMethod, int $batchSize = 100) - { - if (empty($this->QBSet)) { - if ($this->db->DBDebug) { - throw new DatabaseException(trim($renderMethod, '_') . '() has no data.'); - } - - return false; // @codeCoverageIgnore - } - - $table = $this->db->protectIdentifiers($this->QBFrom[0], true, null, false); - - $affectedRows = 0; - $savedSQL = []; - $cnt = count($this->QBSet); - - // batch size 0 for unlimited - if ($batchSize === 0) { - $batchSize = $cnt; - } - - for ($i = 0, $total = $cnt; $i < $total; $i += $batchSize) { - $QBSet = array_slice($this->QBSet, $i, $batchSize); - - $sql = $this->{$renderMethod}($table, $this->QBKeys, $QBSet); - - if ($sql === '') { - return false; // @codeCoverageIgnore - } - - if ($this->testMode) { - $savedSQL[] = $sql; - } else { - $this->db->query($sql, null, false); - $affectedRows += $this->db->affectedRows(); - } - } - - if (! $this->testMode) { - $this->resetWrite(); - } - - return $this->testMode ? $savedSQL : $affectedRows; - } - - /** - * Allows a row or multiple rows to be set for batch inserts/upserts/updates - * - * @param array|object $set - * @param string $alias alias for sql table - * - * @return $this|null - */ - public function setData($set, ?bool $escape = null, string $alias = '') - { - if (empty($set)) { - if ($this->db->DBDebug) { - throw new DatabaseException('setData() has no data.'); - } - - return null; // @codeCoverageIgnore - } - - $this->setAlias($alias); - - // this allows to set just one row at a time - if (is_object($set) || (! is_array(current($set)) && ! is_object(current($set)))) { - $set = [$set]; - } - - $set = $this->batchObjectToArray($set); - - $escape = is_bool($escape) ? $escape : $this->db->protectIdentifiers; - - $keys = array_keys($this->objectToArray(current($set))); - sort($keys); - - foreach ($set as $row) { - $row = $this->objectToArray($row); - if (array_diff($keys, array_keys($row)) !== [] || array_diff(array_keys($row), $keys) !== []) { - // batchExecute() function returns an error on an empty array - $this->QBSet[] = []; - - return null; - } - - ksort($row); // puts $row in the same order as our keys - - $clean = []; - - foreach ($row as $rowValue) { - $clean[] = $escape ? $this->db->escape($rowValue) : $rowValue; - } - - $row = $clean; - - $this->QBSet[] = $row; - } - - foreach ($keys as $k) { - $k = $this->db->protectIdentifiers($k, false); - - if (! in_array($k, $this->QBKeys, true)) { - $this->QBKeys[] = $k; - } - } - - return $this; - } - - /** - * Compiles an upsert query and returns the sql - * - * @return string - * - * @throws DatabaseException - */ - public function getCompiledUpsert() - { - [$currentTestMode, $this->testMode] = [$this->testMode, true]; - - $sql = implode(";\n", $this->upsert()); - - $this->testMode = $currentTestMode; - - return $this->compileFinalQuery($sql); - } - - /** - * Converts call to batchUpsert - * - * @param array|object|null $set - * - * @return false|int|string[] Number of affected rows or FALSE on failure, SQL array when testMode - * - * @throws DatabaseException - */ - public function upsert($set = null, ?bool $escape = null) - { - // if set() has been used merge QBSet with binds and then setData() - if ($set === null && ! is_array(current($this->QBSet))) { - $set = []; - - foreach ($this->QBSet as $field => $value) { - $k = trim($field, $this->db->escapeChar); - // use binds if available else use QBSet value but with RawSql to avoid escape - $set[$k] = isset($this->binds[$k]) ? $this->binds[$k][0] : new RawSql($value); - } - - $this->binds = []; - - $this->resetRun([ - 'QBSet' => [], - 'QBKeys' => [], - ]); - - $this->setData($set, true); // unescaped items are RawSql now - } elseif ($set !== null) { - $this->setData($set, $escape); - } // else setData() has already been used and we need to do nothing - - return $this->batchExecute('_upsertBatch'); - } - - /** - * Compiles batch upsert strings and runs the queries - * - * @param array|object|null $set a dataset - * - * @return false|int|string[] Number of affected rows or FALSE on failure, SQL array when testMode - * - * @throws DatabaseException - */ - public function upsertBatch($set = null, ?bool $escape = null, int $batchSize = 100) - { - if (isset($this->QBOptions['setQueryAsData'])) { - $sql = $this->_upsertBatch($this->QBFrom[0], $this->QBKeys, []); - - if ($sql === '') { - return false; // @codeCoverageIgnore - } - - if ($this->testMode === false) { - $this->db->query($sql, null, false); - } - - $this->resetWrite(); - - return $this->testMode ? $sql : $this->db->affectedRows(); - } - - if ($set !== null) { - $this->setData($set, $escape); - } - - return $this->batchExecute('_upsertBatch', $batchSize); - } - - /** - * Generates a platform-specific upsertBatch string from the supplied data - * - * @used-by batchExecute() - * - * @param string $table Protected table name - * @param list<string> $keys QBKeys - * @param list<list<int|string>> $values QBSet - */ - protected function _upsertBatch(string $table, array $keys, array $values): string - { - $sql = $this->QBOptions['sql'] ?? ''; - - // if this is the first iteration of batch then we need to build skeleton sql - if ($sql === '') { - $updateFields = $this->QBOptions['updateFields'] ?? $this->updateFields($keys)->QBOptions['updateFields'] ?? []; - - $sql = 'INSERT INTO ' . $table . ' (' . implode(', ', $keys) . ")\n{:_table_:}ON DUPLICATE KEY UPDATE\n" . implode( - ",\n", - array_map( - static fn ($key, $value) => $table . '.' . $key . ($value instanceof RawSql ? - ' = ' . $value : - ' = VALUES(' . $value . ')'), - array_keys($updateFields), - $updateFields - ) - ); - - $this->QBOptions['sql'] = $sql; - } - - if (isset($this->QBOptions['setQueryAsData'])) { - $data = $this->QBOptions['setQueryAsData'] . "\n"; - } else { - $data = 'VALUES ' . implode(', ', $this->formatValues($values)) . "\n"; - } - - return str_replace('{:_table_:}', $data, $sql); - } - - /** - * Set table alias for dataset pseudo table. - */ - private function setAlias(string $alias): BaseBuilder - { - if ($alias !== '') { - $this->db->addTableAlias($alias); - $this->QBOptions['alias'] = $this->db->protectIdentifiers($alias); - } - - return $this; - } - - /** - * Sets update fields for upsert, update - * - * @param RawSql[]|string|string[] $set - * @param bool $addToDefault adds update fields to the default ones - * @param array|null $ignore ignores items in set - * - * @return $this - */ - public function updateFields($set, bool $addToDefault = false, ?array $ignore = null) - { - if (! empty($set)) { - if (! is_array($set)) { - $set = explode(',', $set); - } - - foreach ($set as $key => $value) { - if (! ($value instanceof RawSql)) { - $value = $this->db->protectIdentifiers($value); - } - - if (is_numeric($key)) { - $key = $value; - } - - if ($ignore === null || ! in_array($key, $ignore, true)) { - if ($addToDefault) { - $this->QBOptions['updateFieldsAdditional'][$this->db->protectIdentifiers($key)] = $value; - } else { - $this->QBOptions['updateFields'][$this->db->protectIdentifiers($key)] = $value; - } - } - } - - if ($addToDefault === false && isset($this->QBOptions['updateFieldsAdditional'], $this->QBOptions['updateFields'])) { - $this->QBOptions['updateFields'] = array_merge($this->QBOptions['updateFields'], $this->QBOptions['updateFieldsAdditional']); - - unset($this->QBOptions['updateFieldsAdditional']); - } - } - - return $this; - } - - /** - * Sets constraints for batch upsert, update - * - * @param array|RawSql|string $set a string of columns, key value pairs, or RawSql - * - * @return $this - */ - public function onConstraint($set) - { - if (! empty($set)) { - if (is_string($set)) { - $set = explode(',', $set); - - $set = array_map(static fn ($key) => trim($key), $set); - } - - if ($set instanceof RawSql) { - $set = [$set]; - } - - foreach ($set as $key => $value) { - if (! ($value instanceof RawSql)) { - $value = $this->db->protectIdentifiers($value); - } - - if (is_string($key)) { - $key = $this->db->protectIdentifiers($key); - } - - $this->QBOptions['constraints'][$key] = $value; - } - } - - return $this; - } - - /** - * Sets data source as a query for insertBatch()/updateBatch()/upsertBatch()/deleteBatch() - * - * @param BaseBuilder|RawSql $query - * @param array|string|null $columns an array or comma delimited string of columns - */ - public function setQueryAsData($query, ?string $alias = null, $columns = null): BaseBuilder - { - if (is_string($query)) { - throw new InvalidArgumentException('$query parameter must be BaseBuilder or RawSql class.'); - } - - if ($query instanceof BaseBuilder) { - $query = $query->getCompiledSelect(); - } elseif ($query instanceof RawSql) { - $query = $query->__toString(); - } - - if (is_string($query)) { - if ($columns !== null && is_string($columns)) { - $columns = explode(',', $columns); - $columns = array_map(static fn ($key) => trim($key), $columns); - } - - $columns = (array) $columns; - - if ($columns === []) { - $columns = $this->fieldsFromQuery($query); - } - - if ($alias !== null) { - $this->setAlias($alias); - } - - foreach ($columns as $key => $value) { - $columns[$key] = $this->db->escapeChar . $value . $this->db->escapeChar; - } - - $this->QBOptions['setQueryAsData'] = $query; - $this->QBKeys = $columns; - $this->QBSet = []; - } - - return $this; - } - - /** - * Gets column names from a select query - */ - protected function fieldsFromQuery(string $sql): array - { - return $this->db->query('SELECT * FROM (' . $sql . ') _u_ LIMIT 1')->getFieldNames(); - } - - /** - * Converts value array of array to array of strings - */ - protected function formatValues(array $values): array - { - return array_map(static fn ($index) => '(' . implode(',', $index) . ')', $values); - } - - /** - * Compiles batch insert strings and runs the queries - * - * @param array|object|null $set a dataset - * - * @return false|int|string[] Number of rows inserted or FALSE on failure, SQL array when testMode - */ - public function insertBatch($set = null, ?bool $escape = null, int $batchSize = 100) - { - if (isset($this->QBOptions['setQueryAsData'])) { - $sql = $this->_insertBatch($this->QBFrom[0], $this->QBKeys, []); - - if ($sql === '') { - return false; // @codeCoverageIgnore - } - - if ($this->testMode === false) { - $this->db->query($sql, null, false); - } - - $this->resetWrite(); - - return $this->testMode ? $sql : $this->db->affectedRows(); - } - - if ($set !== null && $set !== []) { - $this->setData($set, $escape); - } - - return $this->batchExecute('_insertBatch', $batchSize); - } - - /** - * Generates a platform-specific insert string from the supplied data. - * - * @used-by batchExecute() - * - * @param string $table Protected table name - * @param list<string> $keys QBKeys - * @param list<list<int|string>> $values QBSet - */ - protected function _insertBatch(string $table, array $keys, array $values): string - { - $sql = $this->QBOptions['sql'] ?? ''; - - // if this is the first iteration of batch then we need to build skeleton sql - if ($sql === '') { - $sql = 'INSERT ' . $this->compileIgnore('insert') . 'INTO ' . $table - . ' (' . implode(', ', $keys) . ")\n{:_table_:}"; - - $this->QBOptions['sql'] = $sql; - } - - if (isset($this->QBOptions['setQueryAsData'])) { - $data = $this->QBOptions['setQueryAsData']; - } else { - $data = 'VALUES ' . implode(', ', $this->formatValues($values)); - } - - return str_replace('{:_table_:}', $data, $sql); - } - - /** - * Allows key/value pairs to be set for batch inserts - * - * @param mixed $key - * - * @return $this|null - * - * @deprecated - */ - public function setInsertBatch($key, string $value = '', ?bool $escape = null) - { - if (! is_array($key)) { - $key = [[$key => $value]]; - } - - return $this->setData($key, $escape); - } - - /** - * Compiles an insert query and returns the sql - * - * @return bool|string - * - * @throws DatabaseException - */ - public function getCompiledInsert(bool $reset = true) - { - if ($this->validateInsert() === false) { - return false; - } - - $sql = $this->_insert( - $this->db->protectIdentifiers( - $this->removeAlias($this->QBFrom[0]), - true, - null, - false - ), - array_keys($this->QBSet), - array_values($this->QBSet) - ); - - if ($reset === true) { - $this->resetWrite(); - } - - return $this->compileFinalQuery($sql); - } - - /** - * Compiles an insert string and runs the query - * - * @param array|object|null $set - * - * @return BaseResult|bool|Query - * - * @throws DatabaseException - */ - public function insert($set = null, ?bool $escape = null) - { - if ($set !== null) { - $this->set($set, '', $escape); - } - - if ($this->validateInsert() === false) { - return false; - } - - $sql = $this->_insert( - $this->db->protectIdentifiers( - $this->removeAlias($this->QBFrom[0]), - true, - $escape, - false - ), - array_keys($this->QBSet), - array_values($this->QBSet) - ); - - if (! $this->testMode) { - $this->resetWrite(); - - $result = $this->db->query($sql, $this->binds, false); - - // Clear our binds so we don't eat up memory - $this->binds = []; - - return $result; - } - - return false; - } - - /** - * @internal This is a temporary solution. - * - * @see https://github.com/codeigniter4/CodeIgniter4/pull/5376 - * - * @TODO Fix a root cause, and this method should be removed. - */ - protected function removeAlias(string $from): string - { - if (strpos($from, ' ') !== false) { - // if the alias is written with the AS keyword, remove it - $from = preg_replace('/\s+AS\s+/i', ' ', $from); - - $parts = explode(' ', $from); - $from = $parts[0]; - } - - return $from; - } - - /** - * This method is used by both insert() and getCompiledInsert() to - * validate that the there data is actually being set and that table - * has been chosen to be inserted into. - * - * @throws DatabaseException - */ - protected function validateInsert(): bool - { - if (empty($this->QBSet)) { - if ($this->db->DBDebug) { - throw new DatabaseException('You must use the "set" method to insert an entry.'); - } - - return false; // @codeCoverageIgnore - } - - return true; - } - - /** - * Generates a platform-specific insert string from the supplied data - * - * @param string $table Protected table name - */ - protected function _insert(string $table, array $keys, array $unescapedKeys): string - { - return 'INSERT ' . $this->compileIgnore('insert') . 'INTO ' . $table . ' (' . implode(', ', $keys) . ') VALUES (' . implode(', ', $unescapedKeys) . ')'; - } - - /** - * Compiles a replace into string and runs the query - * - * @return BaseResult|false|Query|string - * - * @throws DatabaseException - */ - public function replace(?array $set = null) - { - if ($set !== null) { - $this->set($set); - } - - if (empty($this->QBSet)) { - if ($this->db->DBDebug) { - throw new DatabaseException('You must use the "set" method to update an entry.'); - } - - return false; // @codeCoverageIgnore - } - - $table = $this->QBFrom[0]; - - $sql = $this->_replace($table, array_keys($this->QBSet), array_values($this->QBSet)); - - $this->resetWrite(); - - return $this->testMode ? $sql : $this->db->query($sql, $this->binds, false); - } - - /** - * Generates a platform-specific replace string from the supplied data - * - * @param string $table Protected table name - */ - protected function _replace(string $table, array $keys, array $values): string - { - return 'REPLACE INTO ' . $table . ' (' . implode(', ', $keys) . ') VALUES (' . implode(', ', $values) . ')'; - } - - /** - * Groups tables in FROM clauses if needed, so there is no confusion - * about operator precedence. - * - * Note: This is only used (and overridden) by MySQL and SQLSRV. - */ - protected function _fromTables(): string - { - return implode(', ', $this->QBFrom); - } - - /** - * Compiles an update query and returns the sql - * - * @return bool|string - */ - public function getCompiledUpdate(bool $reset = true) - { - if ($this->validateUpdate() === false) { - return false; - } - - $sql = $this->_update($this->QBFrom[0], $this->QBSet); - - if ($reset === true) { - $this->resetWrite(); - } - - return $this->compileFinalQuery($sql); - } - - /** - * Compiles an update string and runs the query. - * - * @param array|object|null $set - * @param array|RawSql|string|null $where - * - * @throws DatabaseException - */ - public function update($set = null, $where = null, ?int $limit = null): bool - { - if ($set !== null) { - $this->set($set); - } - - if ($this->validateUpdate() === false) { - return false; - } - - if ($where !== null) { - $this->where($where); - } - - if ($limit !== null && $limit !== 0) { - if (! $this->canLimitWhereUpdates) { - throw new DatabaseException('This driver does not allow LIMITs on UPDATE queries using WHERE.'); - } - - $this->limit($limit); - } - - $sql = $this->_update($this->QBFrom[0], $this->QBSet); - - if (! $this->testMode) { - $this->resetWrite(); - - $result = $this->db->query($sql, $this->binds, false); - - if ($result !== false) { - // Clear our binds so we don't eat up memory - $this->binds = []; - - return true; - } - - return false; - } - - return true; - } - - /** - * Generates a platform-specific update string from the supplied data - * - * @param string $table Protected table name - */ - protected function _update(string $table, array $values): string - { - $valStr = []; - - foreach ($values as $key => $val) { - $valStr[] = $key . ' = ' . $val; - } - - return 'UPDATE ' . $this->compileIgnore('update') . $table . ' SET ' . implode(', ', $valStr) - . $this->compileWhereHaving('QBWhere') - . $this->compileOrderBy() - . ($this->QBLimit ? $this->_limit(' ', true) : ''); - } - - /** - * This method is used by both update() and getCompiledUpdate() to - * validate that data is actually being set and that a table has been - * chosen to be updated. - * - * @throws DatabaseException - */ - protected function validateUpdate(): bool - { - if (empty($this->QBSet)) { - if ($this->db->DBDebug) { - throw new DatabaseException('You must use the "set" method to update an entry.'); - } - - return false; // @codeCoverageIgnore - } - - return true; - } - - /** - * Sets data and calls batchExecute to run queries - * - * @param array|object|null $set a dataset - * @param array|RawSql|string|null $constraints - * - * @return false|int|string[] Number of rows affected or FALSE on failure, SQL array when testMode - */ - public function updateBatch($set = null, $constraints = null, int $batchSize = 100) - { - $this->onConstraint($constraints); - - if (isset($this->QBOptions['setQueryAsData'])) { - $sql = $this->_updateBatch($this->QBFrom[0], $this->QBKeys, []); - - if ($sql === '') { - return false; // @codeCoverageIgnore - } - - if ($this->testMode === false) { - $this->db->query($sql, null, false); - } - - $this->resetWrite(); - - return $this->testMode ? $sql : $this->db->affectedRows(); - } - - if ($set !== null && $set !== []) { - $this->setData($set, true); - } - - return $this->batchExecute('_updateBatch', $batchSize); - } - - /** - * Generates a platform-specific batch update string from the supplied data - * - * @used-by batchExecute() - * - * @param string $table Protected table name - * @param list<string> $keys QBKeys - * @param list<list<int|string>> $values QBSet - */ - protected function _updateBatch(string $table, array $keys, array $values): string - { - $sql = $this->QBOptions['sql'] ?? ''; - - // if this is the first iteration of batch then we need to build skeleton sql - if ($sql === '') { - $constraints = $this->QBOptions['constraints'] ?? []; - - if ($constraints === []) { - if ($this->db->DBDebug) { - throw new DatabaseException('You must specify a constraint to match on for batch updates.'); // @codeCoverageIgnore - } - - return ''; // @codeCoverageIgnore - } - - $updateFields = $this->QBOptions['updateFields'] ?? - $this->updateFields($keys, false, $constraints)->QBOptions['updateFields'] ?? - []; - - $alias = $this->QBOptions['alias'] ?? '_u'; - - $sql = 'UPDATE ' . $this->compileIgnore('update') . $table . "\n"; - - $sql .= "SET\n"; - - $sql .= implode( - ",\n", - array_map( - static fn ($key, $value) => $key . ($value instanceof RawSql ? - ' = ' . $value : - ' = ' . $alias . '.' . $value), - array_keys($updateFields), - $updateFields - ) - ) . "\n"; - - $sql .= "FROM (\n{:_table_:}"; - - $sql .= ') ' . $alias . "\n"; - - $sql .= 'WHERE ' . implode( - ' AND ', - array_map( - static fn ($key, $value) => ( - ($value instanceof RawSql && is_string($key)) - ? - $table . '.' . $key . ' = ' . $value - : - ( - $value instanceof RawSql - ? - $value - : - $table . '.' . $value . ' = ' . $alias . '.' . $value - ) - ), - array_keys($constraints), - $constraints - ) - ); - - $this->QBOptions['sql'] = $sql; - } - - if (isset($this->QBOptions['setQueryAsData'])) { - $data = $this->QBOptions['setQueryAsData']; - } else { - $data = implode( - " UNION ALL\n", - array_map( - static fn ($value) => 'SELECT ' . implode(', ', array_map( - static fn ($key, $index) => $index . ' ' . $key, - $keys, - $value - )), - $values - ) - ) . "\n"; - } - - return str_replace('{:_table_:}', $data, $sql); - } - - /** - * Allows key/value pairs to be set for batch updating - * - * @param array|object $key - * - * @return $this - * - * @throws DatabaseException - * - * @deprecated - */ - public function setUpdateBatch($key, string $index = '', ?bool $escape = null) - { - if ($index !== '') { - $this->onConstraint($index); - } - - $this->setData($key, $escape); - - return $this; - } - - /** - * Compiles a delete string and runs "DELETE FROM table" - * - * @return bool|string TRUE on success, FALSE on failure, string on testMode - */ - public function emptyTable() - { - $table = $this->QBFrom[0]; - - $sql = $this->_delete($table); - - if ($this->testMode) { - return $sql; - } - - $this->resetWrite(); - - return $this->db->query($sql, null, false); - } - - /** - * Compiles a truncate string and runs the query - * If the database does not support the truncate() command - * This function maps to "DELETE FROM table" - * - * @return bool|string TRUE on success, FALSE on failure, string on testMode - */ - public function truncate() - { - $table = $this->QBFrom[0]; - - $sql = $this->_truncate($table); - - if ($this->testMode) { - return $sql; - } - - $this->resetWrite(); - - return $this->db->query($sql, null, false); - } - - /** - * Generates a platform-specific truncate string from the supplied data - * - * If the database does not support the truncate() command, - * then this method maps to 'DELETE FROM table' - * - * @param string $table Protected table name - */ - protected function _truncate(string $table): string - { - return 'TRUNCATE ' . $table; - } - - /** - * Compiles a delete query string and returns the sql - */ - public function getCompiledDelete(bool $reset = true): string - { - $sql = $this->testMode()->delete('', null, $reset); - $this->testMode(false); - - return $this->compileFinalQuery($sql); - } - - /** - * Compiles a delete string and runs the query - * - * @param array|RawSql|string $where - * - * @return bool|string Returns a SQL string if in test mode. - * - * @throws DatabaseException - */ - public function delete($where = '', ?int $limit = null, bool $resetData = true) - { - $table = $this->db->protectIdentifiers($this->QBFrom[0], true, null, false); - - if ($where !== '') { - $this->where($where); - } - - if (empty($this->QBWhere)) { - if ($this->db->DBDebug) { - throw new DatabaseException('Deletes are not allowed unless they contain a "where" or "like" clause.'); - } - - return false; // @codeCoverageIgnore - } - - $sql = $this->_delete($this->removeAlias($table)); - - if ($limit !== null && $limit !== 0) { - $this->QBLimit = $limit; - } - - if (! empty($this->QBLimit)) { - if (! $this->canLimitDeletes) { - throw new DatabaseException('SQLite3 does not allow LIMITs on DELETE queries.'); - } - - $sql = $this->_limit($sql, true); - } - - if ($resetData) { - $this->resetWrite(); - } - - return $this->testMode ? $sql : $this->db->query($sql, $this->binds, false); - } - - /** - * Sets data and calls batchExecute to run queries - * - * @param array|object|null $set a dataset - * @param array|RawSql|null $constraints - * - * @return false|int|string[] Number of rows affected or FALSE on failure, SQL array when testMode - */ - public function deleteBatch($set = null, $constraints = null, int $batchSize = 100) - { - $this->onConstraint($constraints); - - if (isset($this->QBOptions['setQueryAsData'])) { - $sql = $this->_deleteBatch($this->QBFrom[0], $this->QBKeys, []); - - if ($sql === '') { - return false; // @codeCoverageIgnore - } - - if ($this->testMode === false) { - $this->db->query($sql, null, false); - } - - $this->resetWrite(); - - return $this->testMode ? $sql : $this->db->affectedRows(); - } - - if ($set !== null && $set !== []) { - $this->setData($set, true); - } - - return $this->batchExecute('_deleteBatch', $batchSize); - } - - /** - * Generates a platform-specific batch update string from the supplied data - * - * @used-by batchExecute() - * - * @param string $table Protected table name - * @param list<string> $keys QBKeys - * @paramst<string|int>> $values QBSet - */ - protected function _deleteBatch(string $table, array $keys, array $values): string - { - $sql = $this->QBOptions['sql'] ?? ''; - - // if this is the first iteration of batch then we need to build skeleton sql - if ($sql === '') { - $constraints = $this->QBOptions['constraints'] ?? []; - - if ($constraints === []) { - if ($this->db->DBDebug) { - throw new DatabaseException('You must specify a constraint to match on for batch deletes.'); // @codeCoverageIgnore - } - - return ''; // @codeCoverageIgnore - } - - $alias = $this->QBOptions['alias'] ?? '_u'; - - $sql = 'DELETE ' . $table . ' FROM ' . $table . "\n"; - - $sql .= "INNER JOIN (\n{:_table_:}"; - - $sql .= ') ' . $alias . "\n"; - - $sql .= 'ON ' . implode( - ' AND ', - array_map( - static fn ($key, $value) => ( - $value instanceof RawSql ? - $value : - ( - is_string($key) ? - $table . '.' . $key . ' = ' . $alias . '.' . $value : - $table . '.' . $value . ' = ' . $alias . '.' . $value - ) - ), - array_keys($constraints), - $constraints - ) - ); - - // convert binds in where - foreach ($this->QBWhere as $key => $where) { - foreach ($this->binds as $field => $bind) { - $this->QBWhere[$key]['condition'] = str_replace(':' . $field . ':', $bind[0], $where['condition']); - } - } - - $sql .= ' ' . $this->compileWhereHaving('QBWhere'); - - $this->QBOptions['sql'] = trim($sql); - } - - if (isset($this->QBOptions['setQueryAsData'])) { - $data = $this->QBOptions['setQueryAsData']; - } else { - $data = implode( - " UNION ALL\n", - array_map( - static fn ($value) => 'SELECT ' . implode(', ', array_map( - static fn ($key, $index) => $index . ' ' . $key, - $keys, - $value - )), - $values - ) - ) . "\n"; - } - - return str_replace('{:_table_:}', $data, $sql); - } - - /** - * Increments a numeric column by the specified value. - * - * @return bool - */ - public function increment(string $column, int $value = 1) - { - $column = $this->db->protectIdentifiers($column); - - $sql = $this->_update($this->QBFrom[0], [$column => "{$column} + {$value}"]); - - if (! $this->testMode) { - $this->resetWrite(); - - return $this->db->query($sql, $this->binds, false); - } - - return true; - } - - /** - * Decrements a numeric column by the specified value. - * - * @return bool - */ - public function decrement(string $column, int $value = 1) - { - $column = $this->db->protectIdentifiers($column); - - $sql = $this->_update($this->QBFrom[0], [$column => "{$column}-{$value}"]); - - if (! $this->testMode) { - $this->resetWrite(); - - return $this->db->query($sql, $this->binds, false); - } - - return true; - } - - /** - * Generates a platform-specific delete string from the supplied data - * - * @param string $table Protected table name - */ - protected function _delete(string $table): string - { - return 'DELETE ' . $this->compileIgnore('delete') . 'FROM ' . $table . $this->compileWhereHaving('QBWhere'); - } - - /** - * Used to track SQL statements written with aliased tables. - * - * @param array|string $table The table to inspect - * - * @return string|void - */ - protected function trackAliases($table) - { - if (is_array($table)) { - foreach ($table as $t) { - $this->trackAliases($t); - } - - return; - } - - // Does the string contain a comma? If so, we need to separate - // the string into discreet statements - if (strpos($table, ',') !== false) { - return $this->trackAliases(explode(',', $table)); - } - - // if a table alias is used we can recognize it by a space - if (strpos($table, ' ') !== false) { - // if the alias is written with the AS keyword, remove it - $table = preg_replace('/\s+AS\s+/i', ' ', $table); - - // Grab the alias - $table = trim(strrchr($table, ' ')); - - // Store the alias, if it doesn't already exist - $this->db->addTableAlias($table); - } - } - - /** - * Compile the SELECT statement - * - * Generates a query string based on which functions were used. - * Should not be called directly. - * - * @param mixed $selectOverride - */ - protected function compileSelect($selectOverride = false): string - { - if ($selectOverride !== false) { - $sql = $selectOverride; - } else { - $sql = (! $this->QBDistinct) ? 'SELECT ' : 'SELECT DISTINCT '; - - if (empty($this->QBSelect)) { - $sql .= '*'; - } elseif ($this->QBSelect[0] instanceof RawSql) { - $sql .= (string) $this->QBSelect[0]; - } else { - // Cycle through the "select" portion of the query and prep each column name. - // The reason we protect identifiers here rather than in the select() function - // is because until the user calls the from() function we don't know if there are aliases - foreach ($this->QBSelect as $key => $val) { - $noEscape = $this->QBNoEscape[$key] ?? null; - $this->QBSelect[$key] = $this->db->protectIdentifiers($val, false, $noEscape); - } - - $sql .= implode(', ', $this->QBSelect); - } - } - - if (! empty($this->QBFrom)) { - $sql .= "\nFROM " . $this->_fromTables(); - } - - if (! empty($this->QBJoin)) { - $sql .= "\n" . implode("\n", $this->QBJoin); - } - - $sql .= $this->compileWhereHaving('QBWhere') - . $this->compileGroupBy() - . $this->compileWhereHaving('QBHaving') - . $this->compileOrderBy(); - - if ($this->QBLimit) { - $sql = $this->_limit($sql . "\n"); - } - - return $this->unionInjection($sql); - } - - /** - * Checks if the ignore option is supported by - * the Database Driver for the specific statement. - * - * @return string - */ - protected function compileIgnore(string $statement) - { - if ($this->QBIgnore && isset($this->supportedIgnoreStatements[$statement])) { - return trim($this->supportedIgnoreStatements[$statement]) . ' '; - } - - return ''; - } - - /** - * Escapes identifiers in WHERE and HAVING statements at execution time. - * - * Required so that aliases are tracked properly, regardless of whether - * where(), orWhere(), having(), orHaving are called prior to from(), - * join() and prefixTable is added only if needed. - * - * @param string $qbKey 'QBWhere' or 'QBHaving' - * - * @return string SQL statement - */ - protected function compileWhereHaving(string $qbKey): string - { - if (! empty($this->{$qbKey})) { - foreach ($this->{$qbKey} as &$qbkey) { - // Is this condition already compiled? - if (is_string($qbkey)) { - continue; - } - - if ($qbkey instanceof RawSql) { - continue; - } - - if ($qbkey['condition'] instanceof RawSql) { - $qbkey = $qbkey['condition']; - - continue; - } - - if ($qbkey['escape'] === false) { - $qbkey = $qbkey['condition']; - - continue; - } - - // Split multiple conditions - $conditions = preg_split( - '/((?:^|\s+)AND\s+|(?:^|\s+)OR\s+)/i', - $qbkey['condition'], - -1, - PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY - ); - - foreach ($conditions as &$condition) { - if (($op = $this->getOperator($condition)) === false - || ! preg_match('/^(\(?)(.*)(' . preg_quote($op, '/') . ')\s*(.*(?<!\)))?(\)?)$/i', $condition, $matches) - ) { - continue; - } - // $matches = array( - // 0 => '(test <= foo)', /* the whole thing */ - // 1 => '(', /* optional */ - // 2 => 'test', /* the field name */ - // 3 => ' <= ', /* $op */ - // 4 => 'foo', /* optional, if $op is e.g. 'IS NULL' */ - // 5 => ')' /* optional */ - // ); - - if (! empty($matches[4])) { - $protectIdentifiers = false; - if (strpos($matches[4], '.') !== false) { - $protectIdentifiers = true; - } - - if (strpos($matches[4], ':') === false) { - $matches[4] = $this->db->protectIdentifiers(trim($matches[4]), false, $protectIdentifiers); - } - - $matches[4] = ' ' . $matches[4]; - } - - $condition = $matches[1] . $this->db->protectIdentifiers(trim($matches[2])) - . ' ' . trim($matches[3]) . $matches[4] . $matches[5]; - } - - $qbkey = implode('', $conditions); - } - - return ($qbKey === 'QBHaving' ? "\nHAVING " : "\nWHERE ") - . implode("\n", $this->{$qbKey}); - } - - return ''; - } - - /** - * Escapes identifiers in GROUP BY statements at execution time. - * - * Required so that aliases are tracked properly, regardless of whether - * groupBy() is called prior to from(), join() and prefixTable is added - * only if needed. - */ - protected function compileGroupBy(): string - { - if (! empty($this->QBGroupBy)) { - foreach ($this->QBGroupBy as &$groupBy) { - // Is it already compiled? - if (is_string($groupBy)) { - continue; - } - - $groupBy = ($groupBy['escape'] === false || $this->isLiteral($groupBy['field'])) - ? $groupBy['field'] - : $this->db->protectIdentifiers($groupBy['field']); - } - - return "\nGROUP BY " . implode(', ', $this->QBGroupBy); - } - - return ''; - } - - /** - * Escapes identifiers in ORDER BY statements at execution time. - * - * Required so that aliases are tracked properly, regardless of whether - * orderBy() is called prior to from(), join() and prefixTable is added - * only if needed. - */ - protected function compileOrderBy(): string - { - if (is_array($this->QBOrderBy) && $this->QBOrderBy !== []) { - foreach ($this->QBOrderBy as &$orderBy) { - if ($orderBy['escape'] !== false && ! $this->isLiteral($orderBy['field'])) { - $orderBy['field'] = $this->db->protectIdentifiers($orderBy['field']); - } - - $orderBy = $orderBy['field'] . $orderBy['direction']; - } - - return $this->QBOrderBy = "\nORDER BY " . implode(', ', $this->QBOrderBy); - } - - if (is_string($this->QBOrderBy)) { - return $this->QBOrderBy; - } - - return ''; - } - - protected function unionInjection(string $sql): string - { - if ($this->QBUnion === []) { - return $sql; - } - - return 'SELECT * FROM (' . $sql . ') ' - . ($this->db->protectIdentifiers ? $this->db->escapeIdentifiers('uwrp0') : 'uwrp0') - . implode("\n", $this->QBUnion); - } - - /** - * Takes an object as input and converts the class variables to array key/vals - * - * @param array|object $object - * - * @return array - */ - protected function objectToArray($object) - { - if (! is_object($object)) { - return $object; - } - - if ($object instanceof RawSql) { - throw new InvalidArgumentException('RawSql "' . $object . '" cannot be used here.'); - } - - $array = []; - - foreach (get_object_vars($object) as $key => $val) { - if ((! is_object($val) || $val instanceof RawSql) && ! is_array($val)) { - $array[$key] = $val; - } - } - - return $array; - } - - /** - * Takes an object as input and converts the class variables to array key/vals - * - * @param array|object $object - * - * @return array - */ - protected function batchObjectToArray($object) - { - if (! is_object($object)) { - return $object; - } - - $array = []; - $out = get_object_vars($object); - $fields = array_keys($out); - - foreach ($fields as $val) { - $i = 0; - - foreach ($out[$val] as $data) { - $array[$i++][$val] = $data; - } - } - - return $array; - } - - /** - * Determines if a string represents a literal value or a field name - */ - protected function isLiteral(string $str): bool - { - $str = trim($str); - - if ($str === '' - || ctype_digit($str) - || (string) (float) $str === $str - || in_array(strtoupper($str), ['TRUE', 'FALSE'], true) - ) { - return true; - } - - if ($this->isLiteralStr === []) { - $this->isLiteralStr = $this->db->escapeChar !== '"' ? ['"', "'"] : ["'"]; - } - - return in_array($str[0], $this->isLiteralStr, true); - } - - /** - * Publicly-visible method to reset the QB values. - * - * @return $this - */ - public function resetQuery() - { - $this->resetSelect(); - $this->resetWrite(); - - return $this; - } - - /** - * Resets the query builder values. Called by the get() function - * - * @param array $qbResetItems An array of fields to reset - */ - protected function resetRun(array $qbResetItems) - { - foreach ($qbResetItems as $item => $defaultValue) { - $this->{$item} = $defaultValue; - } - } - - /** - * Resets the query builder values. Called by the get() function - */ - protected function resetSelect() - { - $this->resetRun([ - 'QBSelect' => [], - 'QBJoin' => [], - 'QBWhere' => [], - 'QBGroupBy' => [], - 'QBHaving' => [], - 'QBOrderBy' => [], - 'QBNoEscape' => [], - 'QBDistinct' => false, - 'QBLimit' => false, - 'QBOffset' => false, - 'QBUnion' => [], - ]); - - if (! empty($this->db)) { - $this->db->setAliasedTables([]); - } - - // Reset QBFrom part - if (! empty($this->QBFrom)) { - $this->from(array_shift($this->QBFrom), true); - } - } - - /** - * Resets the query builder "write" values. - * - * Called by the insert() update() insertBatch() updateBatch() and delete() functions - */ - protected function resetWrite() - { - $this->resetRun([ - 'QBSet' => [], - 'QBJoin' => [], - 'QBWhere' => [], - 'QBOrderBy' => [], - 'QBKeys' => [], - 'QBLimit' => false, - 'QBIgnore' => false, - 'QBOptions' => [], - ]); - } - - /** - * Tests whether the string has an SQL operator - */ - protected function hasOperator(string $str): bool - { - return preg_match( - '/(<|>|!|=|\sIS NULL|\sIS NOT NULL|\sEXISTS|\sBETWEEN|\sLIKE|\sIN\s*\(|\s)/i', - trim($str) - ) === 1; - } - - /** - * Returns the SQL string operator - * - * @return array|false|string - */ - protected function getOperator(string $str, bool $list = false) - { - if ($this->pregOperators === []) { - $_les = $this->db->likeEscapeStr !== '' - ? '\s+' . preg_quote(trim(sprintf($this->db->likeEscapeStr, $this->db->likeEscapeChar)), '/') - : ''; - $this->pregOperators = [ - '\s*(?:<|>|!)?=\s*', // =, <=, >=, != - '\s*<>?\s*', // <, <> - '\s*>\s*', // > - '\s+IS NULL', // IS NULL - '\s+IS NOT NULL', // IS NOT NULL - '\s+EXISTS\s*\(.*\)', // EXISTS (sql) - '\s+NOT EXISTS\s*\(.*\)', // NOT EXISTS(sql) - '\s+BETWEEN\s+', // BETWEEN value AND value - '\s+IN\s*\(.*\)', // IN (list) - '\s+NOT IN\s*\(.*\)', // NOT IN (list) - '\s+LIKE\s+\S.*(' . $_les . ')?', // LIKE 'expr'[ ESCAPE '%s'] - '\s+NOT LIKE\s+\S.*(' . $_les . ')?', // NOT LIKE 'expr'[ ESCAPE '%s'] - ]; - } - - return preg_match_all( - '/' . implode('|', $this->pregOperators) . '/i', - $str, - $match - ) ? ($list ? $match[0] : $match[0][0]) : false; - } - - /** - * Returns the SQL string operator from where key - * - * @return false|list<string> - */ - private function getOperatorFromWhereKey(string $whereKey) - { - $whereKey = trim($whereKey); - - $pregOperators = [ - '\s*(?:<|>|!)?=', // =, <=, >=, != - '\s*<>?', // <, <> - '\s*>', // > - '\s+IS NULL', // IS NULL - '\s+IS NOT NULL', // IS NOT NULL - '\s+EXISTS\s*\(.*\)', // EXISTS (sql) - '\s+NOT EXISTS\s*\(.*\)', // NOT EXISTS (sql) - '\s+BETWEEN\s+', // BETWEEN value AND value - '\s+IN\s*\(.*\)', // IN (list) - '\s+NOT IN\s*\(.*\)', // NOT IN (list) - '\s+LIKE', // LIKE - '\s+NOT LIKE', // NOT LIKE - ]; - - return preg_match_all( - '/' . implode('|', $pregOperators) . '/i', - $whereKey, - $match - ) ? $match[0] : false; - } - - /** - * Stores a bind value after ensuring that it's unique. - * While it might be nicer to have named keys for our binds array - * with PHP 7+ we get a huge memory/performance gain with indexed - * arrays instead, so lets take advantage of that here. - * - * @param mixed $value - */ - protected function setBind(string $key, $value = null, bool $escape = true): string - { - if (! array_key_exists($key, $this->binds)) { - $this->binds[$key] = [ - $value, - $escape, - ]; - - return $key; - } - - if (! array_key_exists($key, $this->bindsKeyCount)) { - $this->bindsKeyCount[$key] = 1; - } - - $count = $this->bindsKeyCount[$key]++; - - $this->binds[$key . '.' . $count] = [ - $value, - $escape, - ]; - - return $key . '.' . $count; - } - - /** - * Returns a clone of a Base Builder with reset query builder values. - * - * @return $this - * - * @deprecated - */ - protected function cleanClone() - { - return (clone $this)->from([], true)->resetQuery(); - } - - /** - * @param mixed $value - */ - protected function isSubquery($value): bool - { - return $value instanceof BaseBuilder || $value instanceof Closure; - } - - /** - * @param BaseBuilder|Closure $builder - * @param bool $wrapped Wrap the subquery in brackets - * @param string $alias Subquery alias - */ - protected function buildSubquery($builder, bool $wrapped = false, string $alias = ''): string - { - if ($builder instanceof Closure) { - $builder($builder = $this->db->newQuery()); - } - - if ($builder === $this) { - throw new DatabaseException('The subquery cannot be the same object as the main query object.'); - } - - $subquery = strtr($builder->getCompiledSelect(false), "\n", ' '); - - if ($wrapped) { - $subquery = '(' . $subquery . ')'; - $alias = trim($alias); - - if ($alias !== '') { - $subquery .= ' ' . ($this->db->protectIdentifiers ? $this->db->escapeIdentifiers($alias) : $alias); - } - } - - return $subquery; - } -} diff --git a/system4.4.6/Database/BaseConnection.php b/system4.4.6/Database/BaseConnection.php deleted file mode 100644 index 4e34e0fd..00000000 --- a/system4.4.6/Database/BaseConnection.php +++ /dev/null @@ -1,1770 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database; - -use Closure; -use CodeIgniter\Database\Exceptions\DatabaseException; -use CodeIgniter\Events\Events; -use stdClass; -use Throwable; - -/** - * @property-read array $aliasedTables - * @property-read string $charset - * @property-read bool $compress - * @property-read float $connectDuration - * @property-read float $connectTime - * @property-read string $database - * @property-read string $DBCollat - * @property-read bool $DBDebug - * @property-read string $DBDriver - * @property-read string $DBPrefix - * @property-read string $DSN - * @property-read array|bool $encrypt - * @property-read array $failover - * @property-read string $hostname - * @property-read Query $lastQuery - * @property-read string $password - * @property-read bool $pConnect - * @property-read int|string $port - * @property-read bool $pretend - * @property-read string $queryClass - * @property-read array $reservedIdentifiers - * @property-read bool $strictOn - * @property-read string $subdriver - * @property-read string $swapPre - * @property-read int $transDepth - * @property-read bool $transFailure - * @property-read bool $transStatus - * - * @template TConnection - * @template TResult - * - * @implements ConnectionInterface<TConnection, TResult> - * @see \CodeIgniter\Database\BaseConnectionTest - */ -abstract class BaseConnection implements ConnectionInterface -{ - /** - * Data Source Name / Connect string - * - * @var string - */ - protected $DSN; - - /** - * Database port - * - * @var int|string - */ - protected $port = ''; - - /** - * Hostname - * - * @var string - */ - protected $hostname; - - /** - * Username - * - * @var string - */ - protected $username; - - /** - * Password - * - * @var string - */ - protected $password; - - /** - * Database name - * - * @var string - */ - protected $database; - - /** - * Database driver - * - * @var string - */ - protected $DBDriver = 'MySQLi'; - - /** - * Sub-driver - * - * @used-by CI_DB_pdo_driver - * - * @var string - */ - protected $subdriver; - - /** - * Table prefix - * - * @var string - */ - protected $DBPrefix = ''; - - /** - * Persistent connection flag - * - * @var bool - */ - protected $pConnect = false; - - /** - * Whether to throw Exception or not when an error occurs. - * - * @var bool - */ - protected $DBDebug = true; - - /** - * Character set - * - * @var string - */ - protected $charset = 'utf8'; - - /** - * Collation - * - * @var string - */ - protected $DBCollat = 'utf8_general_ci'; - - /** - * Swap Prefix - * - * @var string - */ - protected $swapPre = ''; - - /** - * Encryption flag/data - * - * @var array|bool - */ - protected $encrypt = false; - - /** - * Compression flag - * - * @var bool - */ - protected $compress = false; - - /** - * Strict ON flag - * - * Whether we're running in strict SQL mode. - * - * @var bool - */ - protected $strictOn; - - /** - * Settings for a failover connection. - * - * @var array - */ - protected $failover = []; - - /** - * The last query object that was executed - * on this connection. - * - * @var Query - */ - protected $lastQuery; - - /** - * Connection ID - * - * @var false|object|resource - * @phpstan-var false|TConnection - */ - public $connID = false; - - /** - * Result ID - * - * @var false|object|resource - * @phpstan-var false|TResult - */ - public $resultID = false; - - /** - * Protect identifiers flag - * - * @var bool - */ - public $protectIdentifiers = true; - - /** - * List of reserved identifiers - * - * Identifiers that must NOT be escaped. - * - * @var array - */ - protected $reservedIdentifiers = ['*']; - - /** - * Identifier escape character - * - * @var array|string - */ - public $escapeChar = '"'; - - /** - * ESCAPE statement string - * - * @var string - */ - public $likeEscapeStr = " ESCAPE '%s' "; - - /** - * ESCAPE character - * - * @var string - */ - public $likeEscapeChar = '!'; - - /** - * RegExp used to escape identifiers - * - * @var array - */ - protected $pregEscapeChar = []; - - /** - * Holds previously looked up data - * for performance reasons. - * - * @var array - */ - public $dataCache = []; - - /** - * Microtime when connection was made - * - * @var float - */ - protected $connectTime = 0.0; - - /** - * How long it took to establish connection. - * - * @var float - */ - protected $connectDuration = 0.0; - - /** - * If true, no queries will actually be - * run against the database. - * - * @var bool - */ - protected $pretend = false; - - /** - * Transaction enabled flag - * - * @var bool - */ - public $transEnabled = true; - - /** - * Strict transaction mode flag - * - * @var bool - */ - public $transStrict = true; - - /** - * Transaction depth level - * - * @var int - */ - protected $transDepth = 0; - - /** - * Transaction status flag - * - * Used with transactions to determine if a rollback should occur. - * - * @var bool - */ - protected $transStatus = true; - - /** - * Transaction failure flag - * - * Used with transactions to determine if a transaction has failed. - * - * @var bool - */ - protected $transFailure = false; - - /** - * Whether to throw exceptions during transaction - */ - protected bool $transException = false; - - /** - * Array of table aliases. - * - * @var array - */ - protected $aliasedTables = []; - - /** - * Query Class - * - * @var string - */ - protected $queryClass = Query::class; - - /** - * Saves our connection settings. - */ - public function __construct(array $params) - { - foreach ($params as $key => $value) { - if (property_exists($this, $key)) { - $this->{$key} = $value; - } - } - - $queryClass = str_replace('Connection', 'Query', static::class); - - if (class_exists($queryClass)) { - $this->queryClass = $queryClass; - } - - if ($this->failover !== []) { - // If there is a failover database, connect now to do failover. - // Otherwise, Query Builder creates SQL statement with the main database config - // (DBPrefix) even when the main database is down. - $this->initialize(); - } - } - - /** - * Initializes the database connection/settings. - * - * @return void - * - * @throws DatabaseException - */ - public function initialize() - { - /* If an established connection is available, then there's - * no need to connect and select the database. - * - * Depending on the database driver, conn_id can be either - * boolean TRUE, a resource or an object. - */ - if ($this->connID) { - return; - } - - $this->connectTime = microtime(true); - $connectionErrors = []; - - try { - // Connect to the database and set the connection ID - $this->connID = $this->connect($this->pConnect); - } catch (Throwable $e) { - $connectionErrors[] = sprintf('Main connection [%s]: %s', $this->DBDriver, $e->getMessage()); - log_message('error', 'Error connecting to the database: ' . $e); - } - - // No connection resource? Check if there is a failover else throw an error - if (! $this->connID) { - // Check if there is a failover set - if (! empty($this->failover) && is_array($this->failover)) { - // Go over all the failovers - foreach ($this->failover as $index => $failover) { - // Replace the current settings with those of the failover - foreach ($failover as $key => $val) { - if (property_exists($this, $key)) { - $this->{$key} = $val; - } - } - - try { - // Try to connect - $this->connID = $this->connect($this->pConnect); - } catch (Throwable $e) { - $connectionErrors[] = sprintf('Failover #%d [%s]: %s', ++$index, $this->DBDriver, $e->getMessage()); - log_message('error', 'Error connecting to the database: ' . $e); - } - - // If a connection is made break the foreach loop - if ($this->connID) { - break; - } - } - } - - // We still don't have a connection? - if (! $this->connID) { - throw new DatabaseException(sprintf( - 'Unable to connect to the database.%s%s', - PHP_EOL, - implode(PHP_EOL, $connectionErrors) - )); - } - } - - $this->connectDuration = microtime(true) - $this->connectTime; - } - - /** - * Close the database connection. - */ - public function close() - { - if ($this->connID) { - $this->_close(); - $this->connID = false; - } - } - - /** - * Platform dependent way method for closing the connection. - * - * @return mixed - */ - abstract protected function _close(); - - /** - * Create a persistent database connection. - * - * @return false|object|resource - * @phpstan-return false|TConnection - */ - public function persistentConnect() - { - return $this->connect(true); - } - - /** - * Returns the actual connection object. If both a 'read' and 'write' - * connection has been specified, you can pass either term in to - * get that connection. If you pass either alias in and only a single - * connection is present, it must return the sole connection. - * - * @return false|object|resource - * @phpstan-return TConnection - */ - public function getConnection(?string $alias = null) - { - // @todo work with read/write connections - return $this->connID; - } - - /** - * Returns the name of the current database being used. - */ - public function getDatabase(): string - { - return empty($this->database) ? '' : $this->database; - } - - /** - * Set DB Prefix - * - * Set's the DB Prefix to something new without needing to reconnect - * - * @param string $prefix The prefix - */ - public function setPrefix(string $prefix = ''): string - { - return $this->DBPrefix = $prefix; - } - - /** - * Returns the database prefix. - */ - public function getPrefix(): string - { - return $this->DBPrefix; - } - - /** - * The name of the platform in use (MySQLi, Postgre, SQLite3, OCI8, etc) - */ - public function getPlatform(): string - { - return $this->DBDriver; - } - - /** - * Sets the Table Aliases to use. These are typically - * collected during use of the Builder, and set here - * so queries are built correctly. - * - * @return $this - */ - public function setAliasedTables(array $aliases) - { - $this->aliasedTables = $aliases; - - return $this; - } - - /** - * Add a table alias to our list. - * - * @return $this - */ - public function addTableAlias(string $table) - { - if (! in_array($table, $this->aliasedTables, true)) { - $this->aliasedTables[] = $table; - } - - return $this; - } - - /** - * Executes the query against the database. - * - * @return false|object|resource - * @phpstan-return false|TResult - */ - abstract protected function execute(string $sql); - - /** - * Orchestrates a query against the database. Queries must use - * Database\Statement objects to store the query and build it. - * This method works with the cache. - * - * Should automatically handle different connections for read/write - * queries if needed. - * - * @param array|string|null $binds - * - * @return BaseResult|bool|Query BaseResult when “read” type query, bool when “write” type query, Query when prepared query - * @phpstan-return BaseResult<TConnection, TResult>|bool|Query - * - * @todo BC set $queryClass default as null in 4.1 - */ - public function query(string $sql, $binds = null, bool $setEscapeFlags = true, string $queryClass = '') - { - $queryClass = $queryClass ?: $this->queryClass; - - if (empty($this->connID)) { - $this->initialize(); - } - - /** - * @var Query $query - */ - $query = new $queryClass($this); - - $query->setQuery($sql, $binds, $setEscapeFlags); - - if (! empty($this->swapPre) && ! empty($this->DBPrefix)) { - $query->swapPrefix($this->DBPrefix, $this->swapPre); - } - - $startTime = microtime(true); - - // Always save the last query so we can use - // the getLastQuery() method. - $this->lastQuery = $query; - - // If $pretend is true, then we just want to return - // the actual query object here. There won't be - // any results to return. - if ($this->pretend) { - $query->setDuration($startTime); - - return $query; - } - - // Run the query for real - try { - $exception = null; - $this->resultID = $this->simpleQuery($query->getQuery()); - } catch (DatabaseException $exception) { - $this->resultID = false; - } - - if ($this->resultID === false) { - $query->setDuration($startTime, $startTime); - - // This will trigger a rollback if transactions are being used - if ($this->transDepth !== 0) { - $this->transStatus = false; - } - - if ( - $this->DBDebug - && ( - // Not in transactions - $this->transDepth === 0 - // In transactions, do not throw exception by default. - || $this->transException - ) - ) { - // We call this function in order to roll-back queries - // if transactions are enabled. If we don't call this here - // the error message will trigger an exit, causing the - // transactions to remain in limbo. - while ($this->transDepth !== 0) { - $transDepth = $this->transDepth; - $this->transComplete(); - - if ($transDepth === $this->transDepth) { - log_message('error', 'Database: Failure during an automated transaction commit/rollback!'); - break; - } - } - - // Let others do something with this query. - Events::trigger('DBQuery', $query); - - if ($exception !== null) { - throw new DatabaseException( - $exception->getMessage(), - $exception->getCode(), - $exception - ); - } - - return false; - } - - // Let others do something with this query. - Events::trigger('DBQuery', $query); - - return false; - } - - $query->setDuration($startTime); - - // Let others do something with this query - Events::trigger('DBQuery', $query); - - // resultID is not false, so it must be successful - if ($this->isWriteType($sql)) { - return true; - } - - // query is not write-type, so it must be read-type query; return QueryResult - $resultClass = str_replace('Connection', 'Result', static::class); - - return new $resultClass($this->connID, $this->resultID); - } - - /** - * Performs a basic query against the database. No binding or caching - * is performed, nor are transactions handled. Simply takes a raw - * query string and returns the database-specific result id. - * - * @return false|object|resource - * @phpstan-return false|TResult - */ - public function simpleQuery(string $sql) - { - if (empty($this->connID)) { - $this->initialize(); - } - - return $this->execute($sql); - } - - /** - * Disable Transactions - * - * This permits transactions to be disabled at run-time. - */ - public function transOff() - { - $this->transEnabled = false; - } - - /** - * Enable/disable Transaction Strict Mode - * - * When strict mode is enabled, if you are running multiple groups of - * transactions, if one group fails all subsequent groups will be - * rolled back. - * - * If strict mode is disabled, each group is treated autonomously, - * meaning a failure of one group will not affect any others - * - * @param bool $mode = true - * - * @return $this - */ - public function transStrict(bool $mode = true) - { - $this->transStrict = $mode; - - return $this; - } - - /** - * Start Transaction - */ - public function transStart(bool $testMode = false): bool - { - if (! $this->transEnabled) { - return false; - } - - return $this->transBegin($testMode); - } - - /** - * If set to true, exceptions are thrown during transactions. - * - * @return $this - */ - public function transException(bool $transExcetion) - { - $this->transException = $transExcetion; - - return $this; - } - - /** - * Complete Transaction - */ - public function transComplete(): bool - { - if (! $this->transEnabled) { - return false; - } - - // The query() function will set this flag to FALSE in the event that a query failed - if ($this->transStatus === false || $this->transFailure === true) { - $this->transRollback(); - - // If we are NOT running in strict mode, we will reset - // the _trans_status flag so that subsequent groups of - // transactions will be permitted. - if ($this->transStrict === false) { - $this->transStatus = true; - } - - return false; - } - - return $this->transCommit(); - } - - /** - * Lets you retrieve the transaction flag to determine if it has failed - */ - public function transStatus(): bool - { - return $this->transStatus; - } - - /** - * Begin Transaction - */ - public function transBegin(bool $testMode = false): bool - { - if (! $this->transEnabled) { - return false; - } - - // When transactions are nested we only begin/commit/rollback the outermost ones - if ($this->transDepth > 0) { - $this->transDepth++; - - return true; - } - - if (empty($this->connID)) { - $this->initialize(); - } - - // Reset the transaction failure flag. - // If the $test_mode flag is set to TRUE transactions will be rolled back - // even if the queries produce a successful result. - $this->transFailure = ($testMode === true); - - if ($this->_transBegin()) { - $this->transDepth++; - - return true; - } - - return false; - } - - /** - * Commit Transaction - */ - public function transCommit(): bool - { - if (! $this->transEnabled || $this->transDepth === 0) { - return false; - } - - // When transactions are nested we only begin/commit/rollback the outermost ones - if ($this->transDepth > 1 || $this->_transCommit()) { - $this->transDepth--; - - return true; - } - - return false; - } - - /** - * Rollback Transaction - */ - public function transRollback(): bool - { - if (! $this->transEnabled || $this->transDepth === 0) { - return false; - } - - // When transactions are nested we only begin/commit/rollback the outermost ones - if ($this->transDepth > 1 || $this->_transRollback()) { - $this->transDepth--; - - return true; - } - - return false; - } - - /** - * Begin Transaction - */ - abstract protected function _transBegin(): bool; - - /** - * Commit Transaction - */ - abstract protected function _transCommit(): bool; - - /** - * Rollback Transaction - */ - abstract protected function _transRollback(): bool; - - /** - * Returns a non-shared new instance of the query builder for this connection. - * - * @param array|string $tableName - * - * @return BaseBuilder - * - * @throws DatabaseException - */ - public function table($tableName) - { - if (empty($tableName)) { - throw new DatabaseException('You must set the database table to be used with your query.'); - } - - $className = str_replace('Connection', 'Builder', static::class); - - return new $className($tableName, $this); - } - - /** - * Returns a new instance of the BaseBuilder class with a cleared FROM clause. - */ - public function newQuery(): BaseBuilder - { - // save table aliases - $tempAliases = $this->aliasedTables; - $builder = $this->table(',')->from([], true); - $this->aliasedTables = $tempAliases; - - return $builder; - } - - /** - * Creates a prepared statement with the database that can then - * be used to execute multiple statements against. Within the - * closure, you would build the query in any normal way, though - * the Query Builder is the expected manner. - * - * Example: - * $stmt = $db->prepare(function($db) - * { - * return $db->table('users') - * ->where('id', 1) - * ->get(); - * }) - * - * @return BasePreparedQuery|null - */ - public function prepare(Closure $func, array $options = []) - { - if (empty($this->connID)) { - $this->initialize(); - } - - $this->pretend(); - - $sql = $func($this); - - $this->pretend(false); - - if ($sql instanceof QueryInterface) { - $sql = $sql->getOriginalQuery(); - } - - $class = str_ireplace('Connection', 'PreparedQuery', static::class); - /** @var BasePreparedQuery $class */ - $class = new $class($this); - - return $class->prepare($sql, $options); - } - - /** - * Returns the last query's statement object. - * - * @return Query - */ - public function getLastQuery() - { - return $this->lastQuery; - } - - /** - * Returns a string representation of the last query's statement object. - */ - public function showLastQuery(): string - { - return (string) $this->lastQuery; - } - - /** - * Returns the time we started to connect to this database in - * seconds with microseconds. - * - * Used by the Debug Toolbar's timeline. - */ - public function getConnectStart(): ?float - { - return $this->connectTime; - } - - /** - * Returns the number of seconds with microseconds that it took - * to connect to the database. - * - * Used by the Debug Toolbar's timeline. - */ - public function getConnectDuration(int $decimals = 6): string - { - return number_format($this->connectDuration, $decimals); - } - - /** - * Protect Identifiers - * - * This function is used extensively by the Query Builder class, and by - * a couple functions in this class. - * It takes a column or table name (optionally with an alias) and inserts - * the table prefix onto it. Some logic is necessary in order to deal with - * column names that include the path. Consider a query like this: - * - * SELECT hostname.database.table.column AS c FROM hostname.database.table - * - * Or a query with aliasing: - * - * SELECT m.member_id, m.member_name FROM members AS m - * - * Since the column name can include up to four segments (host, DB, table, column) - * or also have an alias prefix, we need to do a bit of work to figure this out and - * insert the table prefix (if it exists) in the proper position, and escape only - * the correct identifiers. - * - * @param array|string $item - * @param bool $prefixSingle Prefix a table name with no segments? - * @param bool $protectIdentifiers Protect table or column names? - * @param bool $fieldExists Supplied $item contains a column name? - * - * @return array|string - * @phpstan-return ($item is array ? array : string) - */ - public function protectIdentifiers($item, bool $prefixSingle = false, ?bool $protectIdentifiers = null, bool $fieldExists = true) - { - if (! is_bool($protectIdentifiers)) { - $protectIdentifiers = $this->protectIdentifiers; - } - - if (is_array($item)) { - $escapedArray = []; - - foreach ($item as $k => $v) { - $escapedArray[$this->protectIdentifiers($k)] = $this->protectIdentifiers($v, $prefixSingle, $protectIdentifiers, $fieldExists); - } - - return $escapedArray; - } - - // This is basically a bug fix for queries that use MAX, MIN, etc. - // If a parenthesis is found we know that we do not need to - // escape the data or add a prefix. There's probably a more graceful - // way to deal with this, but I'm not thinking of it - // - // Added exception for single quotes as well, we don't want to alter - // literal strings. - if (strcspn($item, "()'") !== strlen($item)) { - /** @psalm-suppress NoValue I don't know why ERROR. */ - return $item; - } - - // Do not protect identifiers and do not prefix, no swap prefix, there is nothing to do - if ($protectIdentifiers === false && $prefixSingle === false && $this->swapPre === '') { - /** @psalm-suppress NoValue I don't know why ERROR. */ - return $item; - } - - // Convert tabs or multiple spaces into single spaces - /** @psalm-suppress NoValue I don't know why ERROR. */ - $item = preg_replace('/\s+/', ' ', trim($item)); - - // If the item has an alias declaration we remove it and set it aside. - // Note: strripos() is used in order to support spaces in table names - if ($offset = strripos($item, ' AS ')) { - $alias = ($protectIdentifiers) ? substr($item, $offset, 4) . $this->escapeIdentifiers(substr($item, $offset + 4)) : substr($item, $offset); - $item = substr($item, 0, $offset); - } elseif ($offset = strrpos($item, ' ')) { - $alias = ($protectIdentifiers) ? ' ' . $this->escapeIdentifiers(substr($item, $offset + 1)) : substr($item, $offset); - $item = substr($item, 0, $offset); - } else { - $alias = ''; - } - - // Break the string apart if it contains periods, then insert the table prefix - // in the correct location, assuming the period doesn't indicate that we're dealing - // with an alias. While we're at it, we will escape the components - if (strpos($item, '.') !== false) { - return $this->protectDotItem($item, $alias, $protectIdentifiers, $fieldExists); - } - - // In some cases, especially 'from', we end up running through - // protect_identifiers twice. This algorithm won't work when - // it contains the escapeChar so strip it out. - $item = trim($item, $this->escapeChar); - - // Is there a table prefix? If not, no need to insert it - if ($this->DBPrefix !== '') { - // Verify table prefix and replace if necessary - if ($this->swapPre !== '' && strpos($item, $this->swapPre) === 0) { - $item = preg_replace('/^' . $this->swapPre . '(\S+?)/', $this->DBPrefix . '\\1', $item); - } - // Do we prefix an item with no segments? - elseif ($prefixSingle === true && strpos($item, $this->DBPrefix) !== 0) { - $item = $this->DBPrefix . $item; - } - } - - if ($protectIdentifiers === true && ! in_array($item, $this->reservedIdentifiers, true)) { - $item = $this->escapeIdentifiers($item); - } - - return $item . $alias; - } - - private function protectDotItem(string $item, string $alias, bool $protectIdentifiers, bool $fieldExists): string - { - $parts = explode('.', $item); - - // Does the first segment of the exploded item match - // one of the aliases previously identified? If so, - // we have nothing more to do other than escape the item - // - // NOTE: The ! empty() condition prevents this method - // from breaking when QB isn't enabled. - if (! empty($this->aliasedTables) && in_array($parts[0], $this->aliasedTables, true)) { - if ($protectIdentifiers === true) { - foreach ($parts as $key => $val) { - if (! in_array($val, $this->reservedIdentifiers, true)) { - $parts[$key] = $this->escapeIdentifiers($val); - } - } - - $item = implode('.', $parts); - } - - return $item . $alias; - } - - // Is there a table prefix defined in the config file? If not, no need to do anything - if ($this->DBPrefix !== '') { - // We now add the table prefix based on some logic. - // Do we have 4 segments (hostname.database.table.column)? - // If so, we add the table prefix to the column name in the 3rd segment. - if (isset($parts[3])) { - $i = 2; - } - // Do we have 3 segments (database.table.column)? - // If so, we add the table prefix to the column name in 2nd position - elseif (isset($parts[2])) { - $i = 1; - } - // Do we have 2 segments (table.column)? - // If so, we add the table prefix to the column name in 1st segment - else { - $i = 0; - } - - // This flag is set when the supplied $item does not contain a field name. - // This can happen when this function is being called from a JOIN. - if ($fieldExists === false) { - $i++; - } - - // Verify table prefix and replace if necessary - if ($this->swapPre !== '' && strpos($parts[$i], $this->swapPre) === 0) { - $parts[$i] = preg_replace('/^' . $this->swapPre . '(\S+?)/', $this->DBPrefix . '\\1', $parts[$i]); - } - // We only add the table prefix if it does not already exist - elseif (strpos($parts[$i], $this->DBPrefix) !== 0) { - $parts[$i] = $this->DBPrefix . $parts[$i]; - } - - // Put the parts back together - $item = implode('.', $parts); - } - - if ($protectIdentifiers === true) { - $item = $this->escapeIdentifiers($item); - } - - return $item . $alias; - } - - /** - * Escape the SQL Identifiers - * - * This function escapes column and table names - * - * @param array|string $item - * - * @return array|string - * @phpstan-return ($item is array ? array : string) - */ - public function escapeIdentifiers($item) - { - if ($this->escapeChar === '' || empty($item) || in_array($item, $this->reservedIdentifiers, true)) { - return $item; - } - - if (is_array($item)) { - foreach ($item as $key => $value) { - $item[$key] = $this->escapeIdentifiers($value); - } - - return $item; - } - - // Avoid breaking functions and literal values inside queries - if (ctype_digit($item) - || $item[0] === "'" - || ($this->escapeChar !== '"' && $item[0] === '"') - || strpos($item, '(') !== false) { - return $item; - } - - if ($this->pregEscapeChar === []) { - if (is_array($this->escapeChar)) { - $this->pregEscapeChar = [ - preg_quote($this->escapeChar[0], '/'), - preg_quote($this->escapeChar[1], '/'), - $this->escapeChar[0], - $this->escapeChar[1], - ]; - } else { - $this->pregEscapeChar[0] = $this->pregEscapeChar[1] = preg_quote($this->escapeChar, '/'); - $this->pregEscapeChar[2] = $this->pregEscapeChar[3] = $this->escapeChar; - } - } - - foreach ($this->reservedIdentifiers as $id) { - /** @psalm-suppress NoValue I don't know why ERROR. */ - if (strpos($item, '.' . $id) !== false) { - return preg_replace( - '/' . $this->pregEscapeChar[0] . '?([^' . $this->pregEscapeChar[1] . '\.]+)' . $this->pregEscapeChar[1] . '?\./i', - $this->pregEscapeChar[2] . '$1' . $this->pregEscapeChar[3] . '.', - $item - ); - } - } - - /** @psalm-suppress NoValue I don't know why ERROR. */ - return preg_replace( - '/' . $this->pregEscapeChar[0] . '?([^' . $this->pregEscapeChar[1] . '\.]+)' . $this->pregEscapeChar[1] . '?(\.)?/i', - $this->pregEscapeChar[2] . '$1' . $this->pregEscapeChar[3] . '$2', - $item - ); - } - - /** - * Prepends a database prefix if one exists in configuration - * - * @throws DatabaseException - */ - public function prefixTable(string $table = ''): string - { - if ($table === '') { - throw new DatabaseException('A table name is required for that operation.'); - } - - return $this->DBPrefix . $table; - } - - /** - * Returns the total number of rows affected by this query. - */ - abstract public function affectedRows(): int; - - /** - * "Smart" Escape String - * - * Escapes data based on type. - * Sets boolean and null types - * - * @param array|bool|float|int|object|string|null $str - * - * @return array|float|int|string - * @phpstan-return ($str is array ? array : float|int|string) - */ - public function escape($str) - { - if (is_array($str)) { - return array_map([&$this, 'escape'], $str); - } - - /** @psalm-suppress NoValue I don't know why ERROR. */ - if (is_string($str) || (is_object($str) && method_exists($str, '__toString'))) { - if ($str instanceof RawSql) { - return $str->__toString(); - } - - return "'" . $this->escapeString($str) . "'"; - } - - if (is_bool($str)) { - return ($str === false) ? 0 : 1; - } - - return $str ?? 'NULL'; - } - - /** - * Escape String - * - * @param string|string[] $str Input string - * @param bool $like Whether or not the string will be used in a LIKE condition - * - * @return string|string[] - */ - public function escapeString($str, bool $like = false) - { - if (is_array($str)) { - foreach ($str as $key => $val) { - $str[$key] = $this->escapeString($val, $like); - } - - return $str; - } - - $str = $this->_escapeString($str); - - // escape LIKE condition wildcards - if ($like === true) { - return str_replace( - [ - $this->likeEscapeChar, - '%', - '_', - ], - [ - $this->likeEscapeChar . $this->likeEscapeChar, - $this->likeEscapeChar . '%', - $this->likeEscapeChar . '_', - ], - $str - ); - } - - return $str; - } - - /** - * Escape LIKE String - * - * Calls the individual driver for platform - * specific escaping for LIKE conditions - * - * @param string|string[] $str - * - * @return string|string[] - */ - public function escapeLikeString($str) - { - return $this->escapeString($str, true); - } - - /** - * Platform independent string escape. - * - * Will likely be overridden in child classes. - */ - protected function _escapeString(string $str): string - { - return str_replace("'", "''", remove_invisible_characters($str, false)); - } - - /** - * This function enables you to call PHP database functions that are not natively included - * in CodeIgniter, in a platform independent manner. - * - * @param array ...$params - * - * @throws DatabaseException - */ - public function callFunction(string $functionName, ...$params): bool - { - $driver = $this->getDriverFunctionPrefix(); - - if (strpos($driver, $functionName) === false) { - $functionName = $driver . $functionName; - } - - if (! function_exists($functionName)) { - if ($this->DBDebug) { - throw new DatabaseException('This feature is not available for the database you are using.'); - } - - return false; - } - - return $functionName(...$params); - } - - /** - * Get the prefix of the function to access the DB. - */ - protected function getDriverFunctionPrefix(): string - { - return strtolower($this->DBDriver) . '_'; - } - - // -------------------------------------------------------------------- - // META Methods - // -------------------------------------------------------------------- - - /** - * Returns an array of table names - * - * @return array|false - * - * @throws DatabaseException - */ - public function listTables(bool $constrainByPrefix = false) - { - if (isset($this->dataCache['table_names']) && $this->dataCache['table_names']) { - return $constrainByPrefix - ? preg_grep("/^{$this->DBPrefix}/", $this->dataCache['table_names']) - : $this->dataCache['table_names']; - } - - $sql = $this->_listTables($constrainByPrefix); - - if ($sql === false) { - if ($this->DBDebug) { - throw new DatabaseException('This feature is not available for the database you are using.'); - } - - return false; - } - - $this->dataCache['table_names'] = []; - - $query = $this->query($sql); - - foreach ($query->getResultArray() as $row) { - $table = $row['table_name'] ?? $row['TABLE_NAME'] ?? $row[array_key_first($row)]; - - $this->dataCache['table_names'][] = $table; - } - - return $this->dataCache['table_names']; - } - - /** - * Determine if a particular table exists - * - * @param bool $cached Whether to use data cache - */ - public function tableExists(string $tableName, bool $cached = true): bool - { - if ($cached === true) { - return in_array($this->protectIdentifiers($tableName, true, false, false), $this->listTables(), true); - } - - if (false === ($sql = $this->_listTables(false, $tableName))) { - if ($this->DBDebug) { - throw new DatabaseException('This feature is not available for the database you are using.'); - } - - return false; - } - - $tableExists = $this->query($sql)->getResultArray() !== []; - - // if cache has been built already - if (! empty($this->dataCache['table_names'])) { - $key = array_search( - strtolower($tableName), - array_map('strtolower', $this->dataCache['table_names']), - true - ); - - // table doesn't exist but still in cache - lets reset cache, it can be rebuilt later - // OR if table does exist but is not found in cache - if (($key !== false && ! $tableExists) || ($key === false && $tableExists)) { - $this->resetDataCache(); - } - } - - return $tableExists; - } - - /** - * Fetch Field Names - * - * @return array|false - * - * @throws DatabaseException - */ - public function getFieldNames(string $table) - { - // Is there a cached result? - if (isset($this->dataCache['field_names'][$table])) { - return $this->dataCache['field_names'][$table]; - } - - if (empty($this->connID)) { - $this->initialize(); - } - - if (false === ($sql = $this->_listColumns($table))) { - if ($this->DBDebug) { - throw new DatabaseException('This feature is not available for the database you are using.'); - } - - return false; - } - - $query = $this->query($sql); - - $this->dataCache['field_names'][$table] = []; - - foreach ($query->getResultArray() as $row) { - // Do we know from where to get the column's name? - if (! isset($key)) { - if (isset($row['column_name'])) { - $key = 'column_name'; - } elseif (isset($row['COLUMN_NAME'])) { - $key = 'COLUMN_NAME'; - } else { - // We have no other choice but to just get the first element's key. - $key = key($row); - } - } - - $this->dataCache['field_names'][$table][] = $row[$key]; - } - - return $this->dataCache['field_names'][$table]; - } - - /** - * Determine if a particular field exists - */ - public function fieldExists(string $fieldName, string $tableName): bool - { - return in_array($fieldName, $this->getFieldNames($tableName), true); - } - - /** - * Returns an object with field data - * - * @return stdClass[] - */ - public function getFieldData(string $table) - { - return $this->_fieldData($this->protectIdentifiers($table, true, false, false)); - } - - /** - * Returns an object with key data - * - * @return array - */ - public function getIndexData(string $table) - { - return $this->_indexData($this->protectIdentifiers($table, true, false, false)); - } - - /** - * Returns an object with foreign key data - * - * @return array - */ - public function getForeignKeyData(string $table) - { - return $this->_foreignKeyData($this->protectIdentifiers($table, true, false, false)); - } - - /** - * Converts array of arrays generated by _foreignKeyData() to array of objects - * - * @return array[ - * {constraint_name} => - * stdClass[ - * 'constraint_name' => string, - * 'table_name' => string, - * 'column_name' => string[], - * 'foreign_table_name' => string, - * 'foreign_column_name' => string[], - * 'on_delete' => string, - * 'on_update' => string, - * 'match' => string - * ] - * ] - */ - protected function foreignKeyDataToObjects(array $data) - { - $retVal = []; - - foreach ($data as $row) { - $name = $row['constraint_name']; - - // for sqlite generate name - if ($name === null) { - $name = $row['table_name'] . '_' . implode('_', $row['column_name']) . '_foreign'; - } - - $obj = new stdClass(); - $obj->constraint_name = $name; - $obj->table_name = $row['table_name']; - $obj->column_name = $row['column_name']; - $obj->foreign_table_name = $row['foreign_table_name']; - $obj->foreign_column_name = $row['foreign_column_name']; - $obj->on_delete = $row['on_delete']; - $obj->on_update = $row['on_update']; - $obj->match = $row['match']; - - $retVal[$name] = $obj; - } - - return $retVal; - } - - /** - * Disables foreign key checks temporarily. - * - * @return bool - */ - public function disableForeignKeyChecks() - { - $sql = $this->_disableForeignKeyChecks(); - - if ($sql === '') { - // The feature is not supported. - return false; - } - - return $this->query($sql); - } - - /** - * Enables foreign key checks temporarily. - * - * @return bool - */ - public function enableForeignKeyChecks() - { - $sql = $this->_enableForeignKeyChecks(); - - if ($sql === '') { - // The feature is not supported. - return false; - } - - return $this->query($sql); - } - - /** - * Allows the engine to be set into a mode where queries are not - * actually executed, but they are still generated, timed, etc. - * - * This is primarily used by the prepared query functionality. - * - * @return $this - */ - public function pretend(bool $pretend = true) - { - $this->pretend = $pretend; - - return $this; - } - - /** - * Empties our data cache. Especially helpful during testing. - * - * @return $this - */ - public function resetDataCache() - { - $this->dataCache = []; - - return $this; - } - - /** - * Determines if the statement is a write-type query or not. - * - * @param string $sql - */ - public function isWriteType($sql): bool - { - return (bool) preg_match('/^\s*"?(SET|INSERT|UPDATE|DELETE|REPLACE|CREATE|DROP|TRUNCATE|LOAD|COPY|ALTER|RENAME|GRANT|REVOKE|LOCK|UNLOCK|REINDEX|MERGE)\s/i', $sql); - } - - /** - * Returns the last error code and message. - * - * Must return an array with keys 'code' and 'message': - * - * @return array<string, int|string|null> - * @phpstan-return array{code: int|string|null, message: string|null} - */ - abstract public function error(): array; - - /** - * Insert ID - * - * @return int|string - */ - abstract public function insertID(); - - /** - * Generates the SQL for listing tables in a platform-dependent manner. - * - * @param string|null $tableName If $tableName is provided will return only this table if exists. - * - * @return false|string - */ - abstract protected function _listTables(bool $constrainByPrefix = false, ?string $tableName = null); - - /** - * Generates a platform-specific query string so that the column names can be fetched. - * - * @return false|string - */ - abstract protected function _listColumns(string $table = ''); - - /** - * Platform-specific field data information. - * - * @see getFieldData() - */ - abstract protected function _fieldData(string $table): array; - - /** - * Platform-specific index data. - * - * @see getIndexData() - */ - abstract protected function _indexData(string $table): array; - - /** - * Platform-specific foreign keys data. - * - * @see getForeignKeyData() - */ - abstract protected function _foreignKeyData(string $table): array; - - /** - * Platform-specific SQL statement to disable foreign key checks. - * - * If this feature is not supported, return empty string. - * - * @TODO This method should be moved to an interface that represents foreign key support. - * - * @return string - * - * @see disableForeignKeyChecks() - */ - protected function _disableForeignKeyChecks() - { - return ''; - } - - /** - * Platform-specific SQL statement to enable foreign key checks. - * - * If this feature is not supported, return empty string. - * - * @TODO This method should be moved to an interface that represents foreign key support. - * - * @return string - * - * @see enableForeignKeyChecks() - */ - protected function _enableForeignKeyChecks() - { - return ''; - } - - /** - * Accessor for properties if they exist. - * - * @return array|bool|float|int|object|resource|string|null - */ - public function __get(string $key) - { - if (property_exists($this, $key)) { - return $this->{$key}; - } - - return null; - } - - /** - * Checker for properties existence. - */ - public function __isset(string $key): bool - { - return property_exists($this, $key); - } -} diff --git a/system4.4.6/Database/BasePreparedQuery.php b/system4.4.6/Database/BasePreparedQuery.php deleted file mode 100644 index 4e9d8166..00000000 --- a/system4.4.6/Database/BasePreparedQuery.php +++ /dev/null @@ -1,260 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database; - -use ArgumentCountError; -use BadMethodCallException; -use CodeIgniter\Database\Exceptions\DatabaseException; -use CodeIgniter\Events\Events; -use ErrorException; - -/** - * @template TConnection - * @template TStatement - * @template TResult - * - * @implements PreparedQueryInterface<TConnection, TStatement, TResult> - */ -abstract class BasePreparedQuery implements PreparedQueryInterface -{ - /** - * The prepared statement itself. - * - * @var object|resource|null - * @phpstan-var TStatement|null - */ - protected $statement; - - /** - * The error code, if any. - * - * @var int - */ - protected $errorCode; - - /** - * The error message, if any. - * - * @var string - */ - protected $errorString; - - /** - * Holds the prepared query object - * that is cloned during execute. - * - * @var Query - */ - protected $query; - - /** - * A reference to the db connection to use. - * - * @var BaseConnection - * @phpstan-var BaseConnection<TConnection, TResult> - */ - protected $db; - - public function __construct(BaseConnection $db) - { - $this->db = $db; - } - - /** - * Prepares the query against the database, and saves the connection - * info necessary to execute the query later. - * - * NOTE: This version is based on SQL code. Child classes should - * override this method. - * - * @return $this - */ - public function prepare(string $sql, array $options = [], string $queryClass = Query::class) - { - // We only supports positional placeholders (?) - // in order to work with the execute method below, so we - // need to replace our named placeholders (:name) - $sql = preg_replace('/:[^\s,)]+/', '?', $sql); - - /** @var Query $query */ - $query = new $queryClass($this->db); - - $query->setQuery($sql); - - if (! empty($this->db->swapPre) && ! empty($this->db->DBPrefix)) { - $query->swapPrefix($this->db->DBPrefix, $this->db->swapPre); - } - - $this->query = $query; - - return $this->_prepare($query->getOriginalQuery(), $options); - } - - /** - * The database-dependent portion of the prepare statement. - * - * @return $this - */ - abstract public function _prepare(string $sql, array $options = []); - - /** - * Takes a new set of data and runs it against the currently - * prepared query. Upon success, will return a Results object. - * - * @return bool|ResultInterface - * @phpstan-return bool|ResultInterface<TConnection, TResult> - * - * @throws DatabaseException - */ - public function execute(...$data) - { - // Execute the Query. - $startTime = microtime(true); - - try { - $exception = null; - $result = $this->_execute($data); - } catch (ArgumentCountError|ErrorException $exception) { - $result = false; - } - - // Update our query object - $query = clone $this->query; - $query->setBinds($data); - - if ($result === false) { - $query->setDuration($startTime, $startTime); - - // This will trigger a rollback if transactions are being used - if ($this->db->transDepth !== 0) { - $this->db->transStatus = false; - } - - if ($this->db->DBDebug) { - // We call this function in order to roll-back queries - // if transactions are enabled. If we don't call this here - // the error message will trigger an exit, causing the - // transactions to remain in limbo. - while ($this->db->transDepth !== 0) { - $transDepth = $this->db->transDepth; - $this->db->transComplete(); - - if ($transDepth === $this->db->transDepth) { - log_message('error', 'Database: Failure during an automated transaction commit/rollback!'); - break; - } - } - - // Let others do something with this query. - Events::trigger('DBQuery', $query); - - if ($exception !== null) { - throw new DatabaseException($exception->getMessage(), $exception->getCode(), $exception); - } - - return false; - } - - // Let others do something with this query. - Events::trigger('DBQuery', $query); - - return false; - } - - $query->setDuration($startTime); - - // Let others do something with this query - Events::trigger('DBQuery', $query); - - if ($this->db->isWriteType($query)) { - return true; - } - - // Return a result object - $resultClass = str_replace('PreparedQuery', 'Result', static::class); - - $resultID = $this->_getResult(); - - return new $resultClass($this->db->connID, $resultID); - } - - /** - * The database dependant version of the execute method. - */ - abstract public function _execute(array $data): bool; - - /** - * Returns the result object for the prepared query. - * - * @return object|resource|null - */ - abstract public function _getResult(); - - /** - * Explicitly closes the prepared statement. - * - * @throws BadMethodCallException - */ - public function close(): bool - { - if (! isset($this->statement)) { - throw new BadMethodCallException('Cannot call close on a non-existing prepared statement.'); - } - - try { - return $this->_close(); - } finally { - $this->statement = null; - } - } - - /** - * The database-dependent version of the close method. - */ - abstract protected function _close(): bool; - - /** - * Returns the SQL that has been prepared. - */ - public function getQueryString(): string - { - if (! $this->query instanceof QueryInterface) { - throw new BadMethodCallException('Cannot call getQueryString on a prepared query until after the query has been prepared.'); - } - - return $this->query->getQuery(); - } - - /** - * A helper to determine if any error exists. - */ - public function hasError(): bool - { - return ! empty($this->errorString); - } - - /** - * Returns the error code created while executing this statement. - */ - public function getErrorCode(): int - { - return $this->errorCode; - } - - /** - * Returns the error message created while executing this statement. - */ - public function getErrorMessage(): string - { - return $this->errorString; - } -} diff --git a/system4.4.6/Database/BaseResult.php b/system4.4.6/Database/BaseResult.php deleted file mode 100644 index d7b32218..00000000 --- a/system4.4.6/Database/BaseResult.php +++ /dev/null @@ -1,543 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database; - -use CodeIgniter\Entity\Entity; -use stdClass; - -/** - * @template TConnection - * @template TResult - * - * @implements ResultInterface<TConnection, TResult> - */ -abstract class BaseResult implements ResultInterface -{ - /** - * Connection ID - * - * @var object|resource - * @phpstan-var TConnection - */ - public $connID; - - /** - * Result ID - * - * @var false|object|resource - * @phpstan-var false|TResult - */ - public $resultID; - - /** - * Result Array - * - * @var array[] - */ - public $resultArray = []; - - /** - * Result Object - * - * @var object[] - */ - public $resultObject = []; - - /** - * Custom Result Object - * - * @var array - */ - public $customResultObject = []; - - /** - * Current Row index - * - * @var int - */ - public $currentRow = 0; - - /** - * The number of records in the query result - * - * @var int|null - */ - protected $numRows; - - /** - * Row data - * - * @var array|null - */ - public $rowData; - - /** - * Constructor - * - * @param object|resource $connID - * @param object|resource $resultID - * @phpstan-param TConnection $connID - * @phpstan-param TResult $resultID - */ - public function __construct(&$connID, &$resultID) - { - $this->connID = $connID; - $this->resultID = $resultID; - } - - /** - * Retrieve the results of the query. Typically an array of - * individual data rows, which can be either an 'array', an - * 'object', or a custom class name. - * - * @param string $type The row type. Either 'array', 'object', or a class name to use - */ - public function getResult(string $type = 'object'): array - { - if ($type === 'array') { - return $this->getResultArray(); - } - - if ($type === 'object') { - return $this->getResultObject(); - } - - return $this->getCustomResultObject($type); - } - - /** - * Returns the results as an array of custom objects. - * - * @phpstan-param class-string $className - * - * @return array - */ - public function getCustomResultObject(string $className) - { - if (isset($this->customResultObject[$className])) { - return $this->customResultObject[$className]; - } - - if (! $this->isValidResultId()) { - return []; - } - - // Don't fetch the result set again if we already have it - $_data = null; - if (($c = count($this->resultArray)) > 0) { - $_data = 'resultArray'; - } elseif (($c = count($this->resultObject)) > 0) { - $_data = 'resultObject'; - } - - if ($_data !== null) { - for ($i = 0; $i < $c; $i++) { - $this->customResultObject[$className][$i] = new $className(); - - foreach ($this->{$_data}[$i] as $key => $value) { - $this->customResultObject[$className][$i]->{$key} = $value; - } - } - - return $this->customResultObject[$className]; - } - - if ($this->rowData !== null) { - $this->dataSeek(); - } - $this->customResultObject[$className] = []; - - while ($row = $this->fetchObject($className)) { - if (! is_subclass_of($row, Entity::class) && method_exists($row, 'syncOriginal')) { - $row->syncOriginal(); - } - - $this->customResultObject[$className][] = $row; - } - - return $this->customResultObject[$className]; - } - - /** - * Returns the results as an array of arrays. - * - * If no results, an empty array is returned. - */ - public function getResultArray(): array - { - if ($this->resultArray !== []) { - return $this->resultArray; - } - - // In the event that query caching is on, the result_id variable - // will not be a valid resource so we'll simply return an empty - // array. - if (! $this->isValidResultId()) { - return []; - } - - if ($this->resultObject) { - foreach ($this->resultObject as $row) { - $this->resultArray[] = (array) $row; - } - - return $this->resultArray; - } - - if ($this->rowData !== null) { - $this->dataSeek(); - } - - while ($row = $this->fetchAssoc()) { - $this->resultArray[] = $row; - } - - return $this->resultArray; - } - - /** - * Returns the results as an array of objects. - * - * If no results, an empty array is returned. - * - * @return array<int, stdClass> - * @phpstan-return list<stdClass> - */ - public function getResultObject(): array - { - if ($this->resultObject !== []) { - return $this->resultObject; - } - - // In the event that query caching is on, the result_id variable - // will not be a valid resource so we'll simply return an empty - // array. - if (! $this->isValidResultId()) { - return []; - } - - if ($this->resultArray) { - foreach ($this->resultArray as $row) { - $this->resultObject[] = (object) $row; - } - - return $this->resultObject; - } - - if ($this->rowData !== null) { - $this->dataSeek(); - } - - while ($row = $this->fetchObject()) { - if (! is_subclass_of($row, Entity::class) && method_exists($row, 'syncOriginal')) { - $row->syncOriginal(); - } - - $this->resultObject[] = $row; - } - - return $this->resultObject; - } - - /** - * Wrapper object to return a row as either an array, an object, or - * a custom class. - * - * If the row doesn't exist, returns null. - * - * @template T of object - * - * @param int|string $n The index of the results to return, or column name. - * @param string $type The type of result object. 'array', 'object' or class name. - * @phpstan-param class-string<T>|'array'|'object' $type - * - * @return array|object|stdClass|null - * @phpstan-return ($type is 'object' ? stdClass|null : ($type is 'array' ? array|null : T|null)) - */ - public function getRow($n = 0, string $type = 'object') - { - // $n is a column name. - if (! is_numeric($n)) { - // We cache the row data for subsequent uses - if (! is_array($this->rowData)) { - $this->rowData = $this->getRowArray(); - } - - // array_key_exists() instead of isset() to allow for NULL values - if (empty($this->rowData) || ! array_key_exists($n, $this->rowData)) { - return null; - } - - return $this->rowData[$n]; - } - - if ($type === 'object') { - return $this->getRowObject($n); - } - - if ($type === 'array') { - return $this->getRowArray($n); - } - - return $this->getCustomRowObject($n, $type); - } - - /** - * Returns a row as a custom class instance. - * - * If the row doesn't exist, returns null. - * - * @template T of object - * - * @param int $n The index of the results to return. - * @phpstan-param class-string<T> $className - * - * @return object|null - * @phpstan-return T|null - */ - public function getCustomRowObject(int $n, string $className) - { - if (! isset($this->customResultObject[$className])) { - $this->getCustomResultObject($className); - } - - if (empty($this->customResultObject[$className])) { - return null; - } - - if ($n !== $this->currentRow && isset($this->customResultObject[$className][$n])) { - $this->currentRow = $n; - } - - return $this->customResultObject[$className][$this->currentRow]; - } - - /** - * Returns a single row from the results as an array. - * - * If row doesn't exist, returns null. - * - * @return array|null - */ - public function getRowArray(int $n = 0) - { - $result = $this->getResultArray(); - if ($result === []) { - return null; - } - - if ($n !== $this->currentRow && isset($result[$n])) { - $this->currentRow = $n; - } - - return $result[$this->currentRow]; - } - - /** - * Returns a single row from the results as an object. - * - * If row doesn't exist, returns null. - * - * @return object|stdClass|null - */ - public function getRowObject(int $n = 0) - { - $result = $this->getResultObject(); - if ($result === []) { - return null; - } - - if ($n !== $this->customResultObject && isset($result[$n])) { - $this->currentRow = $n; - } - - return $result[$this->currentRow]; - } - - /** - * Assigns an item into a particular column slot. - * - * @param array|string $key - * @param array|object|stdClass|null $value - * - * @return void - */ - public function setRow($key, $value = null) - { - // We cache the row data for subsequent uses - if (! is_array($this->rowData)) { - $this->rowData = $this->getRowArray(); - } - - if (is_array($key)) { - foreach ($key as $k => $v) { - $this->rowData[$k] = $v; - } - - return; - } - - if ($key !== '' && $value !== null) { - $this->rowData[$key] = $value; - } - } - - /** - * Returns the "first" row of the current results. - * - * @return array|object|null - */ - public function getFirstRow(string $type = 'object') - { - $result = $this->getResult($type); - - return ($result === []) ? null : $result[0]; - } - - /** - * Returns the "last" row of the current results. - * - * @return array|object|null - */ - public function getLastRow(string $type = 'object') - { - $result = $this->getResult($type); - - return ($result === []) ? null : $result[count($result) - 1]; - } - - /** - * Returns the "next" row of the current results. - * - * @return array|object|null - */ - public function getNextRow(string $type = 'object') - { - $result = $this->getResult($type); - if ($result === []) { - return null; - } - - return isset($result[$this->currentRow + 1]) ? $result[++$this->currentRow] : null; - } - - /** - * Returns the "previous" row of the current results. - * - * @return array|object|null - */ - public function getPreviousRow(string $type = 'object') - { - $result = $this->getResult($type); - if ($result === []) { - return null; - } - - if (isset($result[$this->currentRow - 1])) { - $this->currentRow--; - } - - return $result[$this->currentRow]; - } - - /** - * Returns an unbuffered row and move the pointer to the next row. - * - * @return array|object|null - */ - public function getUnbufferedRow(string $type = 'object') - { - if ($type === 'array') { - return $this->fetchAssoc(); - } - - if ($type === 'object') { - return $this->fetchObject(); - } - - return $this->fetchObject($type); - } - - /** - * Number of rows in the result set; checks for previous count, falls - * back on counting resultArray or resultObject, finally fetching resultArray - * if nothing was previously fetched - */ - public function getNumRows(): int - { - if (is_int($this->numRows)) { - return $this->numRows; - } - if ($this->resultArray !== []) { - return $this->numRows = count($this->resultArray); - } - if ($this->resultObject !== []) { - return $this->numRows = count($this->resultObject); - } - - return $this->numRows = count($this->getResultArray()); - } - - private function isValidResultId(): bool - { - return is_resource($this->resultID) || is_object($this->resultID); - } - - /** - * Gets the number of fields in the result set. - */ - abstract public function getFieldCount(): int; - - /** - * Generates an array of column names in the result set. - */ - abstract public function getFieldNames(): array; - - /** - * Generates an array of objects representing field meta-data. - */ - abstract public function getFieldData(): array; - - /** - * Frees the current result. - * - * @return void - */ - abstract public function freeResult(); - - /** - * Moves the internal pointer to the desired offset. This is called - * internally before fetching results to make sure the result set - * starts at zero. - * - * @return bool - */ - abstract public function dataSeek(int $n = 0); - - /** - * Returns the result set as an array. - * - * Overridden by driver classes. - * - * @return array|false|null - */ - abstract protected function fetchAssoc(); - - /** - * Returns the result set as an object. - * - * Overridden by child classes. - * - * @return Entity|false|object|stdClass - */ - abstract protected function fetchObject(string $className = 'stdClass'); -} diff --git a/system4.4.6/Database/BaseUtils.php b/system4.4.6/Database/BaseUtils.php deleted file mode 100644 index d26bde15..00000000 --- a/system4.4.6/Database/BaseUtils.php +++ /dev/null @@ -1,322 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database; - -use CodeIgniter\Database\Exceptions\DatabaseException; - -/** - * Class BaseUtils - */ -abstract class BaseUtils -{ - /** - * Database object - * - * @var object - */ - protected $db; - - /** - * List databases statement - * - * @var bool|string - */ - protected $listDatabases = false; - - /** - * OPTIMIZE TABLE statement - * - * @var bool|string - */ - protected $optimizeTable = false; - - /** - * REPAIR TABLE statement - * - * @var bool|string - */ - protected $repairTable = false; - - /** - * Class constructor - */ - public function __construct(ConnectionInterface $db) - { - $this->db = $db; - } - - /** - * List databases - * - * @return array|bool - * - * @throws DatabaseException - */ - public function listDatabases() - { - // Is there a cached result? - if (isset($this->db->dataCache['db_names'])) { - return $this->db->dataCache['db_names']; - } - - if ($this->listDatabases === false) { - if ($this->db->DBDebug) { - throw new DatabaseException('Unsupported feature of the database platform you are using.'); - } - - return false; - } - - $this->db->dataCache['db_names'] = []; - - $query = $this->db->query($this->listDatabases); - if ($query === false) { - return $this->db->dataCache['db_names']; - } - - for ($i = 0, $query = $query->getResultArray(), $c = count($query); $i < $c; $i++) { - $this->db->dataCache['db_names'][] = current($query[$i]); - } - - return $this->db->dataCache['db_names']; - } - - /** - * Determine if a particular database exists - */ - public function databaseExists(string $databaseName): bool - { - return in_array($databaseName, $this->listDatabases(), true); - } - - /** - * Optimize Table - * - * @return bool - * - * @throws DatabaseException - */ - public function optimizeTable(string $tableName) - { - if ($this->optimizeTable === false) { - if ($this->db->DBDebug) { - throw new DatabaseException('Unsupported feature of the database platform you are using.'); - } - - return false; - } - - $query = $this->db->query(sprintf($this->optimizeTable, $this->db->escapeIdentifiers($tableName))); - - return $query !== false; - } - - /** - * Optimize Database - * - * @return mixed - * - * @throws DatabaseException - */ - public function optimizeDatabase() - { - if ($this->optimizeTable === false) { - if ($this->db->DBDebug) { - throw new DatabaseException('Unsupported feature of the database platform you are using.'); - } - - return false; - } - - $result = []; - - foreach ($this->db->listTables() as $tableName) { - $res = $this->db->query(sprintf($this->optimizeTable, $this->db->escapeIdentifiers($tableName))); - if (is_bool($res)) { - return $res; - } - - // Build the result array... - - $res = $res->getResultArray(); - - // Postgre & SQLite3 returns empty array - if (empty($res)) { - $key = $tableName; - } else { - $res = current($res); - $key = str_replace($this->db->database . '.', '', current($res)); - $keys = array_keys($res); - unset($res[$keys[0]]); - } - - $result[$key] = $res; - } - - return $result; - } - - /** - * Repair Table - * - * @return mixed - * - * @throws DatabaseException - */ - public function repairTable(string $tableName) - { - if ($this->repairTable === false) { - if ($this->db->DBDebug) { - throw new DatabaseException('Unsupported feature of the database platform you are using.'); - } - - return false; - } - - $query = $this->db->query(sprintf($this->repairTable, $this->db->escapeIdentifiers($tableName))); - if (is_bool($query)) { - return $query; - } - - $query = $query->getResultArray(); - - return current($query); - } - - /** - * Generate CSV from a query result object - * - * @return string - */ - public function getCSVFromResult(ResultInterface $query, string $delim = ',', string $newline = "\n", string $enclosure = '"') - { - $out = ''; - - foreach ($query->getFieldNames() as $name) { - $out .= $enclosure . str_replace($enclosure, $enclosure . $enclosure, $name) . $enclosure . $delim; - } - - $out = substr($out, 0, -strlen($delim)) . $newline; - - // Next blast through the result array and build out the rows - while ($row = $query->getUnbufferedRow('array')) { - $line = []; - - foreach ($row as $item) { - $line[] = $enclosure . str_replace($enclosure, $enclosure . $enclosure, $item ?? '') . $enclosure; - } - - $out .= implode($delim, $line) . $newline; - } - - return $out; - } - - /** - * Generate XML data from a query result object - */ - public function getXMLFromResult(ResultInterface $query, array $params = []): string - { - foreach (['root' => 'root', 'element' => 'element', 'newline' => "\n", 'tab' => "\t"] as $key => $val) { - if (! isset($params[$key])) { - $params[$key] = $val; - } - } - - $root = $params['root']; - $newline = $params['newline']; - $tab = $params['tab']; - $element = $params['element']; - - helper('xml'); - $xml = '<' . $root . '>' . $newline; - - while ($row = $query->getUnbufferedRow()) { - $xml .= $tab . '<' . $element . '>' . $newline; - - foreach ($row as $key => $val) { - $val = (! empty($val)) ? xml_convert($val) : ''; - - $xml .= $tab . $tab . '<' . $key . '>' . $val . '</' . $key . '>' . $newline; - } - - $xml .= $tab . '</' . $element . '>' . $newline; - } - - return $xml . '</' . $root . '>' . $newline; - } - - /** - * Database Backup - * - * @param array|string $params - * - * @return false|never|string - * - * @throws DatabaseException - */ - public function backup($params = []) - { - if (is_string($params)) { - $params = ['tables' => $params]; - } - - $prefs = [ - 'tables' => [], - 'ignore' => [], - 'filename' => '', - 'format' => 'gzip', // gzip, txt - 'add_drop' => true, - 'add_insert' => true, - 'newline' => "\n", - 'foreign_key_checks' => true, - ]; - - if (! empty($params)) { - foreach (array_keys($prefs) as $key) { - if (isset($params[$key])) { - $prefs[$key] = $params[$key]; - } - } - } - - if (empty($prefs['tables'])) { - $prefs['tables'] = $this->db->listTables(); - } - - if (! in_array($prefs['format'], ['gzip', 'txt'], true)) { - $prefs['format'] = 'txt'; - } - - if ($prefs['format'] === 'gzip' && ! function_exists('gzencode')) { - if ($this->db->DBDebug) { - throw new DatabaseException('The file compression format you chose is not supported by your server.'); - } - - $prefs['format'] = 'txt'; - } - - if ($prefs['format'] === 'txt') { - return $this->_backup($prefs); - } - - // @TODO gzencode() requires `ext-zlib`, but _backup() is not implemented in all databases. - return gzencode($this->_backup($prefs)); - } - - /** - * Platform dependent version of the backup function. - * - * @return false|never|string - */ - abstract public function _backup(?array $prefs = null); -} diff --git a/system4.4.6/Database/Config.php b/system4.4.6/Database/Config.php deleted file mode 100644 index 92556c6d..00000000 --- a/system4.4.6/Database/Config.php +++ /dev/null @@ -1,151 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database; - -use CodeIgniter\Config\BaseConfig; -use Config\Database as DbConfig; -use InvalidArgumentException; - -/** - * Class Config - * - * @see \CodeIgniter\Database\ConfigTest - */ -class Config extends BaseConfig -{ - /** - * Cache for instance of any connections that - * have been requested as a "shared" instance. - * - * @var array - */ - protected static $instances = []; - - /** - * The main instance used to manage all of - * our open database connections. - * - * @var Database|null - */ - protected static $factory; - - /** - * Returns the database connection - * - * @param array|BaseConnection|non-empty-string|null $group The name of the connection group to use, - * or an array of configuration settings. - * @param bool $getShared Whether to return a shared instance of the connection. - * - * @return BaseConnection - */ - public static function connect($group = null, bool $getShared = true) - { - // If a DB connection is passed in, just pass it back - if ($group instanceof BaseConnection) { - return $group; - } - - if (is_array($group)) { - $config = $group; - $group = 'custom-' . md5(json_encode($config)); - } else { - $dbConfig = config(DbConfig::class); - - if ($group === null) { - $group = (ENVIRONMENT === 'testing') ? 'tests' : $dbConfig->defaultGroup; - } - - assert(is_string($group)); - - if (! isset($dbConfig->{$group})) { - throw new InvalidArgumentException($group . ' is not a valid database connection group.'); - } - - $config = $dbConfig->{$group}; - } - - if ($getShared && isset(static::$instances[$group])) { - return static::$instances[$group]; - } - - static::ensureFactory(); - - $connection = static::$factory->load($config, $group); - - static::$instances[$group] = $connection; - - return $connection; - } - - /** - * Returns an array of all db connections currently made. - */ - public static function getConnections(): array - { - return static::$instances; - } - - /** - * Loads and returns an instance of the Forge for the specified - * database group, and loads the group if it hasn't been loaded yet. - * - * @param array|ConnectionInterface|string|null $group - * - * @return Forge - */ - public static function forge($group = null) - { - $db = static::connect($group); - - return static::$factory->loadForge($db); - } - - /** - * Returns a new instance of the Database Utilities class. - * - * @param array|string|null $group - * - * @return BaseUtils - */ - public static function utils($group = null) - { - $db = static::connect($group); - - return static::$factory->loadUtils($db); - } - - /** - * Returns a new instance of the Database Seeder. - * - * @param non-empty-string|null $group - * - * @return Seeder - */ - public static function seeder(?string $group = null) - { - $config = config(DbConfig::class); - - return new Seeder($config, static::connect($group)); - } - - /** - * Ensures the database Connection Manager/Factory is loaded and ready to use. - */ - protected static function ensureFactory() - { - if (static::$factory instanceof Database) { - return; - } - - static::$factory = new Database(); - } -} diff --git a/system4.4.6/Database/ConnectionInterface.php b/system4.4.6/Database/ConnectionInterface.php deleted file mode 100644 index ed459337..00000000 --- a/system4.4.6/Database/ConnectionInterface.php +++ /dev/null @@ -1,166 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database; - -/** - * @template TConnection - * @template TResult - * - * @property false|object|resource $connID - * @property-read string $DBDriver - */ -interface ConnectionInterface -{ - /** - * Initializes the database connection/settings. - * - * @return void - */ - public function initialize(); - - /** - * Connect to the database. - * - * @return false|object|resource - * @phpstan-return false|TConnection - */ - public function connect(bool $persistent = false); - - /** - * Create a persistent database connection. - * - * @return false|object|resource - * @phpstan-return false|TConnection - */ - public function persistentConnect(); - - /** - * Keep or establish the connection if no queries have been sent for - * a length of time exceeding the server's idle timeout. - * - * @return void - */ - public function reconnect(); - - /** - * Returns the actual connection object. If both a 'read' and 'write' - * connection has been specified, you can pass either term in to - * get that connection. If you pass either alias in and only a single - * connection is present, it must return the sole connection. - * - * @return false|object|resource - * @phpstan-return false|TConnection - */ - public function getConnection(?string $alias = null); - - /** - * Select a specific database table to use. - * - * @return bool - */ - public function setDatabase(string $databaseName); - - /** - * Returns the name of the current database being used. - */ - public function getDatabase(): string; - - /** - * Returns the last error encountered by this connection. - * Must return this format: ['code' => string|int, 'message' => string] - * intval(code) === 0 means "no error". - * - * @return array<string, int|string> - */ - public function error(): array; - - /** - * The name of the platform in use (MySQLi, mssql, etc) - */ - public function getPlatform(): string; - - /** - * Returns a string containing the version of the database being used. - */ - public function getVersion(): string; - - /** - * Orchestrates a query against the database. Queries must use - * Database\Statement objects to store the query and build it. - * This method works with the cache. - * - * Should automatically handle different connections for read/write - * queries if needed. - * - * @param array|string|null $binds - * - * @return BaseResult|bool|Query - * @phpstan-return BaseResult<TConnection, TResult>|bool|Query - */ - public function query(string $sql, $binds = null); - - /** - * Performs a basic query against the database. No binding or caching - * is performed, nor are transactions handled. Simply takes a raw - * query string and returns the database-specific result id. - * - * @return false|object|resource - * @phpstan-return false|TResult - */ - public function simpleQuery(string $sql); - - /** - * Returns an instance of the query builder for this connection. - * - * @param array|string $tableName Table name. - * - * @return BaseBuilder Builder. - */ - public function table($tableName); - - /** - * Returns the last query's statement object. - * - * @return Query - */ - public function getLastQuery(); - - /** - * "Smart" Escaping - * - * Escapes data based on type. - * Sets boolean and null types. - * - * @param array|bool|float|int|object|string|null $str - * - * @return array|float|int|string - * @phpstan-return ($str is array ? array : float|int|string) - */ - public function escape($str); - - /** - * Allows for custom calls to the database engine that are not - * supported through our database layer. - * - * @param array ...$params - * - * @return array|bool|float|int|object|resource|string|null - */ - public function callFunction(string $functionName, ...$params); - - /** - * Determines if the statement is a write-type query or not. - * - * @param string $sql - */ - public function isWriteType($sql): bool; -} diff --git a/system4.4.6/Database/Database.php b/system4.4.6/Database/Database.php deleted file mode 100644 index 58a63e15..00000000 --- a/system4.4.6/Database/Database.php +++ /dev/null @@ -1,139 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database; - -use InvalidArgumentException; - -/** - * Database Connection Factory - * - * Creates and returns an instance of the appropriate Database Connection. - */ -class Database -{ - /** - * Maintains an array of the instances of all connections that have - * been created. - * - * Helps to keep track of all open connections for performance - * monitoring, logging, etc. - * - * @var array - */ - protected $connections = []; - - /** - * Parses the connection binds and creates a Database Connection instance. - * - * @return BaseConnection - * - * @throws InvalidArgumentException - */ - public function load(array $params = [], string $alias = '') - { - if ($alias === '') { - throw new InvalidArgumentException('You must supply the parameter: alias.'); - } - - if (! empty($params['DSN']) && strpos($params['DSN'], '://') !== false) { - $params = $this->parseDSN($params); - } - - if (empty($params['DBDriver'])) { - throw new InvalidArgumentException('You have not selected a database type to connect to.'); - } - - $this->connections[$alias] = $this->initDriver($params['DBDriver'], 'Connection', $params); - - return $this->connections[$alias]; - } - - /** - * Creates a Forge instance for the current database type. - */ - public function loadForge(ConnectionInterface $db): Forge - { - if (! $db->connID) { - $db->initialize(); - } - - return $this->initDriver($db->DBDriver, 'Forge', $db); - } - - /** - * Creates an instance of Utils for the current database type. - */ - public function loadUtils(ConnectionInterface $db): BaseUtils - { - if (! $db->connID) { - $db->initialize(); - } - - return $this->initDriver($db->DBDriver, 'Utils', $db); - } - - /** - * Parses universal DSN string - * - * @throws InvalidArgumentException - */ - protected function parseDSN(array $params): array - { - $dsn = parse_url($params['DSN']); - - if (! $dsn) { - throw new InvalidArgumentException('Your DSN connection string is invalid.'); - } - - $dsnParams = [ - 'DSN' => '', - 'DBDriver' => $dsn['scheme'], - 'hostname' => isset($dsn['host']) ? rawurldecode($dsn['host']) : '', - 'port' => isset($dsn['port']) ? rawurldecode((string) $dsn['port']) : '', - 'username' => isset($dsn['user']) ? rawurldecode($dsn['user']) : '', - 'password' => isset($dsn['pass']) ? rawurldecode($dsn['pass']) : '', - 'database' => isset($dsn['path']) ? rawurldecode(substr($dsn['path'], 1)) : '', - ]; - - if (isset($dsn['query']) && ($dsn['query'] !== '')) { - parse_str($dsn['query'], $extra); - - foreach ($extra as $key => $val) { - if (is_string($val) && in_array(strtolower($val), ['true', 'false', 'null'], true)) { - $val = $val === 'null' ? null : filter_var($val, FILTER_VALIDATE_BOOLEAN); - } - - $dsnParams[$key] = $val; - } - } - - return array_merge($params, $dsnParams); - } - - /** - * Creates a database object. - * - * @param string $driver Driver name. FQCN can be used. - * @param string $class 'Connection'|'Forge'|'Utils' - * @param array|object $argument The constructor parameter. - * - * @return BaseConnection|BaseUtils|Forge - */ - protected function initDriver(string $driver, string $class, $argument): object - { - $classname = (strpos($driver, '\\') === false) - ? "CodeIgniter\\Database\\{$driver}\\{$class}" - : $driver . '\\' . $class; - - return new $classname($argument); - } -} diff --git a/system4.4.6/Database/Exceptions/DataException.php b/system4.4.6/Database/Exceptions/DataException.php deleted file mode 100644 index 09b9ff32..00000000 --- a/system4.4.6/Database/Exceptions/DataException.php +++ /dev/null @@ -1,85 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\Exceptions; - -use CodeIgniter\Exceptions\DebugTraceableTrait; -use RuntimeException; - -class DataException extends RuntimeException implements ExceptionInterface -{ - use DebugTraceableTrait; - - /** - * Used by the Model's trigger() method when the callback cannot be found. - * - * @return DataException - */ - public static function forInvalidMethodTriggered(string $method) - { - return new static(lang('Database.invalidEvent', [$method])); - } - - /** - * Used by Model's insert/update methods when there isn't - * any data to actually work with. - * - * @return DataException - */ - public static function forEmptyDataset(string $mode) - { - return new static(lang('Database.emptyDataset', [$mode])); - } - - /** - * Used by Model's insert/update methods when there is no - * primary key defined and Model has option `useAutoIncrement` - * set to false. - * - * @return DataException - */ - public static function forEmptyPrimaryKey(string $mode) - { - return new static(lang('Database.emptyPrimaryKey', [$mode])); - } - - /** - * Thrown when an argument for one of the Model's methods - * were empty or otherwise invalid, and they could not be - * to work correctly for that method. - * - * @return DataException - */ - public static function forInvalidArgument(string $argument) - { - return new static(lang('Database.invalidArgument', [$argument])); - } - - public static function forInvalidAllowedFields(string $model) - { - return new static(lang('Database.invalidAllowedFields', [$model])); - } - - public static function forTableNotFound(string $table) - { - return new static(lang('Database.tableNotFound', [$table])); - } - - public static function forEmptyInputGiven(string $argument) - { - return new static(lang('Database.forEmptyInputGiven', [$argument])); - } - - public static function forFindColumnHaveMultipleColumns() - { - return new static(lang('Database.forFindColumnHaveMultipleColumns')); - } -} diff --git a/system4.4.6/Database/Exceptions/DatabaseException.php b/system4.4.6/Database/Exceptions/DatabaseException.php deleted file mode 100644 index 4a587878..00000000 --- a/system4.4.6/Database/Exceptions/DatabaseException.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\Exceptions; - -use CodeIgniter\Exceptions\HasExitCodeInterface; -use Error; - -class DatabaseException extends Error implements ExceptionInterface, HasExitCodeInterface -{ - public function getExitCode(): int - { - return EXIT_DATABASE; - } -} diff --git a/system4.4.6/Database/Exceptions/ExceptionInterface.php b/system4.4.6/Database/Exceptions/ExceptionInterface.php deleted file mode 100644 index 81565234..00000000 --- a/system4.4.6/Database/Exceptions/ExceptionInterface.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\Exceptions; - -/** - * Provides a domain-level interface for broad capture - * of all database-related exceptions. - * - * catch (\CodeIgniter\Database\Exceptions\ExceptionInterface) { ... } - */ -interface ExceptionInterface extends \CodeIgniter\Exceptions\ExceptionInterface -{ -} diff --git a/system4.4.6/Database/Forge.php b/system4.4.6/Database/Forge.php deleted file mode 100644 index afc7d1cd..00000000 --- a/system4.4.6/Database/Forge.php +++ /dev/null @@ -1,1245 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database; - -use CodeIgniter\Database\Exceptions\DatabaseException; -use InvalidArgumentException; -use RuntimeException; -use Throwable; - -/** - * The Forge class transforms migrations to executable - * SQL statements. - */ -class Forge -{ - /** - * The active database connection. - * - * @var BaseConnection - */ - protected $db; - - /** - * List of fields. - * - * @var array<string, array|string> [name => attributes] - */ - protected $fields = []; - - /** - * List of keys. - * - * @var list<array{fields?: string[], keyName?: string}> - */ - protected $keys = []; - - /** - * List of unique keys. - * - * @var array - */ - protected $uniqueKeys = []; - - /** - * Primary keys. - * - * @var array{fields?: string[], keyName?: string} - */ - protected $primaryKeys = []; - - /** - * List of foreign keys. - * - * @var array - */ - protected $foreignKeys = []; - - /** - * Character set used. - * - * @var string - */ - protected $charset = ''; - - /** - * CREATE DATABASE statement - * - * @var false|string - */ - protected $createDatabaseStr = 'CREATE DATABASE %s'; - - /** - * CREATE DATABASE IF statement - * - * @var string - */ - protected $createDatabaseIfStr; - - /** - * CHECK DATABASE EXIST statement - * - * @var string - */ - protected $checkDatabaseExistStr; - - /** - * DROP DATABASE statement - * - * @var false|string - */ - protected $dropDatabaseStr = 'DROP DATABASE %s'; - - /** - * CREATE TABLE statement - * - * @var string - */ - protected $createTableStr = "%s %s (%s\n)"; - - /** - * CREATE TABLE IF statement - * - * @var bool|string - * - * @deprecated This is no longer used. - */ - protected $createTableIfStr = 'CREATE TABLE IF NOT EXISTS'; - - /** - * CREATE TABLE keys flag - * - * Whether table keys are created from within the - * CREATE TABLE statement. - * - * @var bool - */ - protected $createTableKeys = false; - - /** - * DROP TABLE IF EXISTS statement - * - * @var bool|string - */ - protected $dropTableIfStr = 'DROP TABLE IF EXISTS'; - - /** - * RENAME TABLE statement - * - * @var false|string - */ - protected $renameTableStr = 'ALTER TABLE %s RENAME TO %s'; - - /** - * UNSIGNED support - * - * @var array|bool - */ - protected $unsigned = true; - - /** - * NULL value representation in CREATE/ALTER TABLE statements - * - * @var string - * - * @internal Used for marking nullable fields. Not covered by BC promise. - */ - protected $null = 'NULL'; - - /** - * DEFAULT value representation in CREATE/ALTER TABLE statements - * - * @var false|string - */ - protected $default = ' DEFAULT '; - - /** - * DROP CONSTRAINT statement - * - * @var string - */ - protected $dropConstraintStr; - - /** - * DROP INDEX statement - * - * @var string - */ - protected $dropIndexStr = 'DROP INDEX %s ON %s'; - - /** - * Foreign Key Allowed Actions - * - * @var array - */ - protected $fkAllowActions = ['CASCADE', 'SET NULL', 'NO ACTION', 'RESTRICT', 'SET DEFAULT']; - - /** - * Constructor. - */ - public function __construct(BaseConnection $db) - { - $this->db = $db; - } - - /** - * Provides access to the forge's current database connection. - * - * @return ConnectionInterface - */ - public function getConnection() - { - return $this->db; - } - - /** - * Create database - * - * @param bool $ifNotExists Whether to add IF NOT EXISTS condition - * - * @throws DatabaseException - */ - public function createDatabase(string $dbName, bool $ifNotExists = false): bool - { - if ($ifNotExists && $this->createDatabaseIfStr === null) { - if ($this->databaseExists($dbName)) { - return true; - } - - $ifNotExists = false; - } - - if ($this->createDatabaseStr === false) { - if ($this->db->DBDebug) { - throw new DatabaseException('This feature is not available for the database you are using.'); - } - - return false; // @codeCoverageIgnore - } - - try { - if (! $this->db->query(sprintf($ifNotExists ? $this->createDatabaseIfStr : $this->createDatabaseStr, $dbName, $this->db->charset, $this->db->DBCollat))) { - // @codeCoverageIgnoreStart - if ($this->db->DBDebug) { - throw new DatabaseException('Unable to create the specified database.'); - } - - return false; - // @codeCoverageIgnoreEnd - } - - if (! empty($this->db->dataCache['db_names'])) { - $this->db->dataCache['db_names'][] = $dbName; - } - - return true; - } catch (Throwable $e) { - if ($this->db->DBDebug) { - throw new DatabaseException('Unable to create the specified database.', 0, $e); - } - - return false; // @codeCoverageIgnore - } - } - - /** - * Determine if a database exists - * - * @throws DatabaseException - */ - private function databaseExists(string $dbName): bool - { - if ($this->checkDatabaseExistStr === null) { - if ($this->db->DBDebug) { - throw new DatabaseException('This feature is not available for the database you are using.'); - } - - return false; - } - - return $this->db->query($this->checkDatabaseExistStr, $dbName)->getRow() !== null; - } - - /** - * Drop database - * - * @throws DatabaseException - */ - public function dropDatabase(string $dbName): bool - { - if ($this->dropDatabaseStr === false) { - if ($this->db->DBDebug) { - throw new DatabaseException('This feature is not available for the database you are using.'); - } - - return false; - } - - if (! $this->db->query(sprintf($this->dropDatabaseStr, $dbName))) { - if ($this->db->DBDebug) { - throw new DatabaseException('Unable to drop the specified database.'); - } - - return false; - } - - if (! empty($this->db->dataCache['db_names'])) { - $key = array_search(strtolower($dbName), array_map('strtolower', $this->db->dataCache['db_names']), true); - if ($key !== false) { - unset($this->db->dataCache['db_names'][$key]); - } - } - - return true; - } - - /** - * Add Key - * - * @param array|string $key - * - * @return Forge - */ - public function addKey($key, bool $primary = false, bool $unique = false, string $keyName = '') - { - if ($primary) { - $this->primaryKeys = ['fields' => (array) $key, 'keyName' => $keyName]; - } else { - $this->keys[] = ['fields' => (array) $key, 'keyName' => $keyName]; - - if ($unique) { - $this->uniqueKeys[] = count($this->keys) - 1; - } - } - - return $this; - } - - /** - * Add Primary Key - * - * @param array|string $key - * - * @return Forge - */ - public function addPrimaryKey($key, string $keyName = '') - { - return $this->addKey($key, true, false, $keyName); - } - - /** - * Add Unique Key - * - * @param array|string $key - * - * @return Forge - */ - public function addUniqueKey($key, string $keyName = '') - { - return $this->addKey($key, false, true, $keyName); - } - - /** - * Add Field - * - * @param array<string, array|string>|string $fields Field array or Field string - * - * @return Forge - */ - public function addField($fields) - { - if (is_string($fields)) { - if ($fields === 'id') { - $this->addField([ - 'id' => [ - 'type' => 'INT', - 'constraint' => 9, - 'auto_increment' => true, - ], - ]); - $this->addKey('id', true); - } else { - if (strpos($fields, ' ') === false) { - throw new InvalidArgumentException('Field information is required for that operation.'); - } - - $fieldName = explode(' ', $fields, 2)[0]; - $fieldName = trim($fieldName, '`\'"'); - - $this->fields[$fieldName] = $fields; - } - } - - if (is_array($fields)) { - foreach ($fields as $name => $attributes) { - if (is_string($attributes)) { - $this->addField($attributes); - - continue; - } - - if (is_array($attributes)) { - $this->fields = array_merge($this->fields, [$name => $attributes]); - } - } - } - - return $this; - } - - /** - * Add Foreign Key - * - * @param string|string[] $fieldName - * @param string|string[] $tableField - * - * @throws DatabaseException - */ - public function addForeignKey( - $fieldName = '', - string $tableName = '', - $tableField = '', - string $onUpdate = '', - string $onDelete = '', - string $fkName = '' - ): Forge { - $fieldName = (array) $fieldName; - $tableField = (array) $tableField; - - $this->foreignKeys[] = [ - 'field' => $fieldName, - 'referenceTable' => $tableName, - 'referenceField' => $tableField, - 'onDelete' => strtoupper($onDelete), - 'onUpdate' => strtoupper($onUpdate), - 'fkName' => $fkName, - ]; - - return $this; - } - - /** - * Drop Key - * - * @throws DatabaseException - */ - public function dropKey(string $table, string $keyName, bool $prefixKeyName = true): bool - { - $keyName = $this->db->escapeIdentifiers(($prefixKeyName === true ? $this->db->DBPrefix : '') . $keyName); - $table = $this->db->escapeIdentifiers($this->db->DBPrefix . $table); - - $dropKeyAsConstraint = $this->dropKeyAsConstraint($table, $keyName); - - if ($dropKeyAsConstraint === true) { - $sql = sprintf( - $this->dropConstraintStr, - $table, - $keyName, - ); - } else { - $sql = sprintf( - $this->dropIndexStr, - $keyName, - $table, - ); - } - - if ($sql === '') { - if ($this->db->DBDebug) { - throw new DatabaseException('This feature is not available for the database you are using.'); - } - - return false; - } - - return $this->db->query($sql); - } - - /** - * Checks if key needs to be dropped as a constraint. - */ - protected function dropKeyAsConstraint(string $table, string $constraintName): bool - { - $sql = $this->_dropKeyAsConstraint($table, $constraintName); - - if ($sql === '') { - return false; - } - - return $this->db->query($sql)->getResultArray() !== []; - } - - /** - * Constructs sql to check if key is a constraint. - */ - protected function _dropKeyAsConstraint(string $table, string $constraintName): string - { - return ''; - } - - /** - * Drop Primary Key - */ - public function dropPrimaryKey(string $table, string $keyName = ''): bool - { - $sql = sprintf( - 'ALTER TABLE %s DROP CONSTRAINT %s', - $this->db->escapeIdentifiers($this->db->DBPrefix . $table), - ($keyName === '') ? $this->db->escapeIdentifiers('pk_' . $this->db->DBPrefix . $table) : $this->db->escapeIdentifiers($keyName), - ); - - return $this->db->query($sql); - } - - /** - * @return bool - * - * @throws DatabaseException - */ - public function dropForeignKey(string $table, string $foreignName) - { - $sql = sprintf( - (string) $this->dropConstraintStr, - $this->db->escapeIdentifiers($this->db->DBPrefix . $table), - $this->db->escapeIdentifiers($foreignName) - ); - - if ($sql === '') { - if ($this->db->DBDebug) { - throw new DatabaseException('This feature is not available for the database you are using.'); - } - - return false; - } - - return $this->db->query($sql); - } - - /** - * @param array $attributes Table attributes - * - * @return bool - * - * @throws DatabaseException - */ - public function createTable(string $table, bool $ifNotExists = false, array $attributes = []) - { - if ($table === '') { - throw new InvalidArgumentException('A table name is required for that operation.'); - } - - $table = $this->db->DBPrefix . $table; - - if ($this->fields === []) { - throw new RuntimeException('Field information is required.'); - } - - // If table exists lets stop here - if ($ifNotExists === true && $this->db->tableExists($table, false)) { - $this->reset(); - - return true; - } - - $sql = $this->_createTable($table, false, $attributes); - - if (($result = $this->db->query($sql)) !== false) { - if (isset($this->db->dataCache['table_names']) && ! in_array($table, $this->db->dataCache['table_names'], true)) { - $this->db->dataCache['table_names'][] = $table; - } - - // Most databases don't support creating indexes from within the CREATE TABLE statement - if (! empty($this->keys)) { - for ($i = 0, $sqls = $this->_processIndexes($table), $c = count($sqls); $i < $c; $i++) { - $this->db->query($sqls[$i]); - } - } - } - - $this->reset(); - - return $result; - } - - /** - * @param array $attributes Table attributes - * - * @return string SQL string - * - * @deprecated $ifNotExists is no longer used, and will be removed. - */ - protected function _createTable(string $table, bool $ifNotExists, array $attributes) - { - $processedFields = $this->_processFields(true); - - for ($i = 0, $c = count($processedFields); $i < $c; $i++) { - $processedFields[$i] = ($processedFields[$i]['_literal'] !== false) ? "\n\t" . $processedFields[$i]['_literal'] - : "\n\t" . $this->_processColumn($processedFields[$i]); - } - - $processedFields = implode(',', $processedFields); - - $processedFields .= $this->_processPrimaryKeys($table); - $processedFields .= current($this->_processForeignKeys($table)); - - if ($this->createTableKeys === true) { - $indexes = current($this->_processIndexes($table)); - if (is_string($indexes)) { - $processedFields .= $indexes; - } - } - - return sprintf( - $this->createTableStr . '%s', - 'CREATE TABLE', - $this->db->escapeIdentifiers($table), - $processedFields, - $this->_createTableAttributes($attributes) - ); - } - - protected function _createTableAttributes(array $attributes): string - { - $sql = ''; - - foreach (array_keys($attributes) as $key) { - if (is_string($key)) { - $sql .= ' ' . strtoupper($key) . ' ' . $this->db->escape($attributes[$key]); - } - } - - return $sql; - } - - /** - * @return bool - * - * @throws DatabaseException - */ - public function dropTable(string $tableName, bool $ifExists = false, bool $cascade = false) - { - if ($tableName === '') { - if ($this->db->DBDebug) { - throw new DatabaseException('A table name is required for that operation.'); - } - - return false; - } - - if ($this->db->DBPrefix && strpos($tableName, $this->db->DBPrefix) === 0) { - $tableName = substr($tableName, strlen($this->db->DBPrefix)); - } - - if (($query = $this->_dropTable($this->db->DBPrefix . $tableName, $ifExists, $cascade)) === true) { - return true; - } - - $this->db->disableForeignKeyChecks(); - - $query = $this->db->query($query); - - $this->db->enableForeignKeyChecks(); - - if ($query && ! empty($this->db->dataCache['table_names'])) { - $key = array_search( - strtolower($this->db->DBPrefix . $tableName), - array_map('strtolower', $this->db->dataCache['table_names']), - true - ); - - if ($key !== false) { - unset($this->db->dataCache['table_names'][$key]); - } - } - - return $query; - } - - /** - * Generates a platform-specific DROP TABLE string - * - * @return bool|string - */ - protected function _dropTable(string $table, bool $ifExists, bool $cascade) - { - $sql = 'DROP TABLE'; - - if ($ifExists) { - if ($this->dropTableIfStr === false) { - if (! $this->db->tableExists($table)) { - return true; - } - } else { - $sql = sprintf($this->dropTableIfStr, $this->db->escapeIdentifiers($table)); - } - } - - return $sql . ' ' . $this->db->escapeIdentifiers($table); - } - - /** - * @return bool - * - * @throws DatabaseException - */ - public function renameTable(string $tableName, string $newTableName) - { - if ($tableName === '' || $newTableName === '') { - throw new InvalidArgumentException('A table name is required for that operation.'); - } - - if ($this->renameTableStr === false) { - if ($this->db->DBDebug) { - throw new DatabaseException('This feature is not available for the database you are using.'); - } - - return false; - } - - $result = $this->db->query(sprintf( - $this->renameTableStr, - $this->db->escapeIdentifiers($this->db->DBPrefix . $tableName), - $this->db->escapeIdentifiers($this->db->DBPrefix . $newTableName) - )); - - if ($result && ! empty($this->db->dataCache['table_names'])) { - $key = array_search( - strtolower($this->db->DBPrefix . $tableName), - array_map('strtolower', $this->db->dataCache['table_names']), - true - ); - - if ($key !== false) { - $this->db->dataCache['table_names'][$key] = $this->db->DBPrefix . $newTableName; - } - } - - return $result; - } - - /** - * @param array<string, array|string>|string $fields Field array or Field string - * - * @throws DatabaseException - */ - public function addColumn(string $table, $fields): bool - { - // Work-around for literal column definitions - if (is_string($fields)) { - $fields = [$fields]; - } - - foreach (array_keys($fields) as $name) { - $this->addField([$name => $fields[$name]]); - } - - $sqls = $this->_alterTable('ADD', $this->db->DBPrefix . $table, $this->_processFields()); - $this->reset(); - - if ($sqls === false) { - if ($this->db->DBDebug) { - throw new DatabaseException('This feature is not available for the database you are using.'); - } - - return false; - } - - foreach ($sqls as $sql) { - if ($this->db->query($sql) === false) { - return false; - } - } - - return true; - } - - /** - * @param array|string $columnNames column names to DROP - * - * @return bool - * - * @throws DatabaseException - */ - public function dropColumn(string $table, $columnNames) - { - $sql = $this->_alterTable('DROP', $this->db->DBPrefix . $table, $columnNames); - - if ($sql === false) { - if ($this->db->DBDebug) { - throw new DatabaseException('This feature is not available for the database you are using.'); - } - - return false; - } - - return $this->db->query($sql); - } - - /** - * @param array<string, array|string>|string $fields Field array or Field string - * - * @throws DatabaseException - */ - public function modifyColumn(string $table, $fields): bool - { - // Work-around for literal column definitions - if (is_string($fields)) { - $fields = [$fields]; - } - - foreach (array_keys($fields) as $name) { - $this->addField([$name => $fields[$name]]); - } - - if ($this->fields === []) { - throw new RuntimeException('Field information is required'); - } - - $sqls = $this->_alterTable('CHANGE', $this->db->DBPrefix . $table, $this->_processFields()); - $this->reset(); - - if ($sqls === false) { - if ($this->db->DBDebug) { - throw new DatabaseException('This feature is not available for the database you are using.'); - } - - return false; - } - - if (is_array($sqls)) { - foreach ($sqls as $sql) { - if ($this->db->query($sql) === false) { - return false; - } - } - } - - return true; - } - - /** - * @param 'ADD'|'CHANGE'|'DROP' $alterType - * @param array|string $processedFields Processed column definitions - * or column names to DROP - * - * @return false|list<string>|string|null SQL string - * @phpstan-return ($alterType is 'DROP' ? string : list<string>|false|null) - */ - protected function _alterTable(string $alterType, string $table, $processedFields) - { - $sql = 'ALTER TABLE ' . $this->db->escapeIdentifiers($table) . ' '; - - // DROP has everything it needs now. - if ($alterType === 'DROP') { - $columnNamesToDrop = $processedFields; - - if (is_string($columnNamesToDrop)) { - $columnNamesToDrop = explode(',', $columnNamesToDrop); - } - - $columnNamesToDrop = array_map(fn ($field) => 'DROP COLUMN ' . $this->db->escapeIdentifiers(trim($field)), $columnNamesToDrop); - - return $sql . implode(', ', $columnNamesToDrop); - } - - $sql .= ($alterType === 'ADD') ? 'ADD ' : $alterType . ' COLUMN '; - - $sqls = []; - - foreach ($processedFields as $field) { - $sqls[] = $sql . ($field['_literal'] !== false - ? $field['_literal'] - : $this->_processColumn($field)); - } - - return $sqls; - } - - /** - * Returns $processedFields array from $this->fields data. - */ - protected function _processFields(bool $createTable = false): array - { - $processedFields = []; - - foreach ($this->fields as $name => $attributes) { - if (! is_array($attributes)) { - $processedFields[] = ['_literal' => $attributes]; - - continue; - } - - $attributes = array_change_key_case($attributes, CASE_UPPER); - - if ($createTable === true && empty($attributes['TYPE'])) { - continue; - } - - if (isset($attributes['TYPE'])) { - $this->_attributeType($attributes); - } - - $field = [ - 'name' => $name, - 'new_name' => $attributes['NAME'] ?? null, - 'type' => $attributes['TYPE'] ?? null, - 'length' => '', - 'unsigned' => '', - 'null' => '', - 'unique' => '', - 'default' => '', - 'auto_increment' => '', - '_literal' => false, - ]; - - if (isset($attributes['TYPE'])) { - $this->_attributeUnsigned($attributes, $field); - } - - if ($createTable === false) { - if (isset($attributes['AFTER'])) { - $field['after'] = $attributes['AFTER']; - } elseif (isset($attributes['FIRST'])) { - $field['first'] = (bool) $attributes['FIRST']; - } - } - - $this->_attributeDefault($attributes, $field); - - if (isset($attributes['NULL'])) { - $nullString = ' ' . $this->null; - - if ($attributes['NULL'] === true) { - $field['null'] = empty($this->null) ? '' : $nullString; - } elseif ($attributes['NULL'] === $nullString) { - $field['null'] = $nullString; - } elseif ($attributes['NULL'] === '') { - $field['null'] = ''; - } else { - $field['null'] = ' NOT ' . $this->null; - } - } elseif ($createTable === true) { - $field['null'] = ' NOT ' . $this->null; - } - - $this->_attributeAutoIncrement($attributes, $field); - $this->_attributeUnique($attributes, $field); - - if (isset($attributes['COMMENT'])) { - $field['comment'] = $this->db->escape($attributes['COMMENT']); - } - - if (isset($attributes['TYPE']) && ! empty($attributes['CONSTRAINT'])) { - if (is_array($attributes['CONSTRAINT'])) { - $attributes['CONSTRAINT'] = $this->db->escape($attributes['CONSTRAINT']); - $attributes['CONSTRAINT'] = implode(',', $attributes['CONSTRAINT']); - } - - $field['length'] = '(' . $attributes['CONSTRAINT'] . ')'; - } - - $processedFields[] = $field; - } - - return $processedFields; - } - - /** - * Converts $processedField array to field definition string. - */ - protected function _processColumn(array $processedField): string - { - return $this->db->escapeIdentifiers($processedField['name']) - . ' ' . $processedField['type'] . $processedField['length'] - . $processedField['unsigned'] - . $processedField['default'] - . $processedField['null'] - . $processedField['auto_increment'] - . $processedField['unique']; - } - - /** - * Performs a data type mapping between different databases. - */ - protected function _attributeType(array &$attributes) - { - // Usually overridden by drivers - } - - /** - * Depending on the unsigned property value: - * - * - TRUE will always set $field['unsigned'] to 'UNSIGNED' - * - FALSE will always set $field['unsigned'] to '' - * - array(TYPE) will set $field['unsigned'] to 'UNSIGNED', - * if $attributes['TYPE'] is found in the array - * - array(TYPE => UTYPE) will change $field['type'], - * from TYPE to UTYPE in case of a match - */ - protected function _attributeUnsigned(array &$attributes, array &$field) - { - if (empty($attributes['UNSIGNED']) || $attributes['UNSIGNED'] !== true) { - return; - } - - // Reset the attribute in order to avoid issues if we do type conversion - $attributes['UNSIGNED'] = false; - - if (is_array($this->unsigned)) { - foreach (array_keys($this->unsigned) as $key) { - if (is_int($key) && strcasecmp($attributes['TYPE'], $this->unsigned[$key]) === 0) { - $field['unsigned'] = ' UNSIGNED'; - - return; - } - - if (is_string($key) && strcasecmp($attributes['TYPE'], $key) === 0) { - $field['type'] = $key; - - return; - } - } - - return; - } - - $field['unsigned'] = ($this->unsigned === true) ? ' UNSIGNED' : ''; - } - - protected function _attributeDefault(array &$attributes, array &$field) - { - if ($this->default === false) { - return; - } - - if (array_key_exists('DEFAULT', $attributes)) { - if ($attributes['DEFAULT'] === null) { - $field['default'] = empty($this->null) ? '' : $this->default . $this->null; - - // Override the NULL attribute if that's our default - $attributes['NULL'] = true; - $field['null'] = empty($this->null) ? '' : ' ' . $this->null; - } elseif ($attributes['DEFAULT'] instanceof RawSql) { - $field['default'] = $this->default . $attributes['DEFAULT']; - } else { - $field['default'] = $this->default . $this->db->escape($attributes['DEFAULT']); - } - } - } - - protected function _attributeUnique(array &$attributes, array &$field) - { - if (! empty($attributes['UNIQUE']) && $attributes['UNIQUE'] === true) { - $field['unique'] = ' UNIQUE'; - } - } - - protected function _attributeAutoIncrement(array &$attributes, array &$field) - { - if (! empty($attributes['AUTO_INCREMENT']) && $attributes['AUTO_INCREMENT'] === true - && stripos($field['type'], 'int') !== false - ) { - $field['auto_increment'] = ' AUTO_INCREMENT'; - } - } - - /** - * Generates SQL to add primary key - * - * @param bool $asQuery When true returns stand alone SQL, else partial SQL used with CREATE TABLE - */ - protected function _processPrimaryKeys(string $table, bool $asQuery = false): string - { - $sql = ''; - - if (isset($this->primaryKeys['fields'])) { - for ($i = 0, $c = count($this->primaryKeys['fields']); $i < $c; $i++) { - if (! isset($this->fields[$this->primaryKeys['fields'][$i]])) { - unset($this->primaryKeys['fields'][$i]); - } - } - } - - if (isset($this->primaryKeys['fields']) && $this->primaryKeys['fields'] !== []) { - if ($asQuery === true) { - $sql .= 'ALTER TABLE ' . $this->db->escapeIdentifiers($this->db->DBPrefix . $table) . ' ADD '; - } else { - $sql .= ",\n\t"; - } - $sql .= 'CONSTRAINT ' . $this->db->escapeIdentifiers(($this->primaryKeys['keyName'] === '' ? - 'pk_' . $table : - $this->primaryKeys['keyName'])) - . ' PRIMARY KEY(' . implode(', ', $this->db->escapeIdentifiers($this->primaryKeys['fields'])) . ')'; - } - - return $sql; - } - - /** - * Executes Sql to add indexes without createTable - */ - public function processIndexes(string $table): bool - { - $sqls = []; - $fk = $this->foreignKeys; - - if ($this->fields === []) { - $this->fields = array_flip(array_map( - static fn ($columnName) => $columnName->name, - $this->db->getFieldData($this->db->DBPrefix . $table) - )); - } - - $fields = $this->fields; - - if ($this->keys !== []) { - $sqls = $this->_processIndexes($this->db->DBPrefix . $table, true); - } - - if ($this->primaryKeys !== []) { - $sqls[] = $this->_processPrimaryKeys($table, true); - } - - $this->foreignKeys = $fk; - $this->fields = $fields; - - if ($this->foreignKeys !== []) { - $sqls = array_merge($sqls, $this->_processForeignKeys($table, true)); - } - - foreach ($sqls as $sql) { - if ($this->db->query($sql) === false) { - return false; - } - } - - $this->reset(); - - return true; - } - - /** - * Generates SQL to add indexes - * - * @param bool $asQuery When true returns stand alone SQL, else partial SQL used with CREATE TABLE - */ - protected function _processIndexes(string $table, bool $asQuery = false): array - { - $sqls = []; - - for ($i = 0, $c = count($this->keys); $i < $c; $i++) { - for ($i2 = 0, $c2 = count($this->keys[$i]['fields']); $i2 < $c2; $i2++) { - if (! isset($this->fields[$this->keys[$i]['fields'][$i2]])) { - unset($this->keys[$i]['fields'][$i2]); - } - } - - if (count($this->keys[$i]['fields']) <= 0) { - continue; - } - - $keyName = $this->db->escapeIdentifiers(($this->keys[$i]['keyName'] === '') ? - $table . '_' . implode('_', $this->keys[$i]['fields']) : - $this->keys[$i]['keyName']); - - if (in_array($i, $this->uniqueKeys, true)) { - if ($this->db->DBDriver === 'SQLite3') { - $sqls[] = 'CREATE UNIQUE INDEX ' . $keyName - . ' ON ' . $this->db->escapeIdentifiers($table) - . ' (' . implode(', ', $this->db->escapeIdentifiers($this->keys[$i]['fields'])) . ')'; - } else { - $sqls[] = 'ALTER TABLE ' . $this->db->escapeIdentifiers($table) - . ' ADD CONSTRAINT ' . $keyName - . ' UNIQUE (' . implode(', ', $this->db->escapeIdentifiers($this->keys[$i]['fields'])) . ')'; - } - - continue; - } - - $sqls[] = 'CREATE INDEX ' . $keyName - . ' ON ' . $this->db->escapeIdentifiers($table) - . ' (' . implode(', ', $this->db->escapeIdentifiers($this->keys[$i]['fields'])) . ')'; - } - - return $sqls; - } - - /** - * Generates SQL to add foreign keys - * - * @param bool $asQuery When true returns stand alone SQL, else partial SQL used with CREATE TABLE - */ - protected function _processForeignKeys(string $table, bool $asQuery = false): array - { - $errorNames = []; - - foreach ($this->foreignKeys as $fkeyInfo) { - foreach ($fkeyInfo['field'] as $fieldName) { - if (! isset($this->fields[$fieldName])) { - $errorNames[] = $fieldName; - } - } - } - - if ($errorNames !== []) { - $errorNames = [implode(', ', $errorNames)]; - - throw new DatabaseException(lang('Database.fieldNotExists', $errorNames)); - } - - $sqls = ['']; - - foreach ($this->foreignKeys as $index => $fkey) { - if ($asQuery === false) { - $index = 0; - } else { - $sqls[$index] = ''; - } - - $nameIndex = $fkey['fkName'] !== '' ? - $fkey['fkName'] : - $table . '_' . implode('_', $fkey['field']) . ($this->db->DBDriver === 'OCI8' ? '_fk' : '_foreign'); - - $nameIndexFilled = $this->db->escapeIdentifiers($nameIndex); - $foreignKeyFilled = implode(', ', $this->db->escapeIdentifiers($fkey['field'])); - $referenceTableFilled = $this->db->escapeIdentifiers($this->db->DBPrefix . $fkey['referenceTable']); - $referenceFieldFilled = implode(', ', $this->db->escapeIdentifiers($fkey['referenceField'])); - - if ($asQuery === true) { - $sqls[$index] .= 'ALTER TABLE ' . $this->db->escapeIdentifiers($this->db->DBPrefix . $table) . ' ADD '; - } else { - $sqls[$index] .= ",\n\t"; - } - - $formatSql = 'CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s(%s)'; - $sqls[$index] .= sprintf($formatSql, $nameIndexFilled, $foreignKeyFilled, $referenceTableFilled, $referenceFieldFilled); - - if ($fkey['onDelete'] !== false && in_array($fkey['onDelete'], $this->fkAllowActions, true)) { - $sqls[$index] .= ' ON DELETE ' . $fkey['onDelete']; - } - - if ($this->db->DBDriver !== 'OCI8' && $fkey['onUpdate'] !== false && in_array($fkey['onUpdate'], $this->fkAllowActions, true)) { - $sqls[$index] .= ' ON UPDATE ' . $fkey['onUpdate']; - } - } - - return $sqls; - } - - /** - * Resets table creation vars - */ - public function reset() - { - $this->fields = $this->keys = $this->uniqueKeys = $this->primaryKeys = $this->foreignKeys = []; - } -} diff --git a/system4.4.6/Database/Migration.php b/system4.4.6/Database/Migration.php deleted file mode 100644 index f12509d6..00000000 --- a/system4.4.6/Database/Migration.php +++ /dev/null @@ -1,72 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database; - -use Config\Database; - -/** - * Class Migration - */ -abstract class Migration -{ - /** - * The name of the database group to use. - * - * @var string|null - */ - protected $DBGroup; - - /** - * Database Connection instance - * - * @var ConnectionInterface - */ - protected $db; - - /** - * Database Forge instance. - * - * @var Forge - */ - protected $forge; - - public function __construct(?Forge $forge = null) - { - if (isset($this->DBGroup)) { - $this->forge = Database::forge($this->DBGroup); - } elseif ($forge !== null) { - $this->forge = $forge; - } else { - $this->forge = Database::forge(config(Database::class)->defaultGroup); - } - - $this->db = $this->forge->getConnection(); - } - - /** - * Returns the database group name this migration uses. - */ - public function getDBGroup(): ?string - { - return $this->DBGroup; - } - - /** - * Perform a migration step. - */ - abstract public function up(); - - /** - * Revert a migration step. - */ - abstract public function down(); -} diff --git a/system4.4.6/Database/MigrationRunner.php b/system4.4.6/Database/MigrationRunner.php deleted file mode 100644 index 435c1185..00000000 --- a/system4.4.6/Database/MigrationRunner.php +++ /dev/null @@ -1,869 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database; - -use CodeIgniter\CLI\CLI; -use CodeIgniter\Events\Events; -use CodeIgniter\Exceptions\ConfigException; -use CodeIgniter\I18n\Time; -use Config\Database; -use Config\Migrations as MigrationsConfig; -use Config\Services; -use RuntimeException; -use stdClass; - -/** - * Class MigrationRunner - */ -class MigrationRunner -{ - /** - * Whether or not migrations are allowed to run. - * - * @var bool - */ - protected $enabled = false; - - /** - * Name of table to store meta information - * - * @var string - */ - protected $table; - - /** - * The Namespace where migrations can be found. - * `null` is all namespaces. - * - * @var string|null - */ - protected $namespace; - - /** - * The database Group to migrate. - * - * @var string - */ - protected $group; - - /** - * The migration name. - * - * @var string - */ - protected $name; - - /** - * The pattern used to locate migration file versions. - * - * @var string - */ - protected $regex = '/\A(\d{4}[_-]?\d{2}[_-]?\d{2}[_-]?\d{6})_(\w+)\z/'; - - /** - * The main database connection. Used to store - * migration information in. - * - * @var BaseConnection - */ - protected $db; - - /** - * If true, will continue instead of throwing - * exceptions. - * - * @var bool - */ - protected $silent = false; - - /** - * used to return messages for CLI. - * - * @var array - */ - protected $cliMessages = []; - - /** - * Tracks whether we have already ensured - * the table exists or not. - * - * @var bool - */ - protected $tableChecked = false; - - /** - * The full path to locate migration files. - * - * @var string - */ - protected $path; - - /** - * The database Group filter. - * - * @var string|null - */ - protected $groupFilter; - - /** - * Used to skip current migration. - * - * @var bool - */ - protected $groupSkip = false; - - /** - * The migration can manage multiple databases. So it should always use the - * default DB group so that it creates the `migrations` table in the default - * DB group. Therefore, passing $db is for testing purposes only. - * - * @param array|ConnectionInterface|string|null $db DB group. For testing purposes only. - * - * @throws ConfigException - */ - public function __construct(MigrationsConfig $config, $db = null) - { - $this->enabled = $config->enabled ?? false; - $this->table = $config->table ?? 'migrations'; - - $this->namespace = APP_NAMESPACE; - - // Even if a DB connection is passed, since it is a test, - // it is assumed to use the default group name - $this->group = is_string($db) ? $db : config(Database::class)->defaultGroup; - - $this->db = db_connect($db); - } - - /** - * Locate and run all new migrations - * - * @return bool - * - * @throws ConfigException - * @throws RuntimeException - */ - public function latest(?string $group = null) - { - if (! $this->enabled) { - throw ConfigException::forDisabledMigrations(); - } - - $this->ensureTable(); - - if ($group !== null) { - $this->groupFilter = $group; - $this->setGroup($group); - } - - $migrations = $this->findMigrations(); - - if ($migrations === []) { - return true; - } - - foreach ($this->getHistory((string) $group) as $history) { - unset($migrations[$this->getObjectUid($history)]); - } - - $batch = $this->getLastBatch() + 1; - - foreach ($migrations as $migration) { - if ($this->migrate('up', $migration)) { - if ($this->groupSkip === true) { - $this->groupSkip = false; - - continue; - } - - $this->addHistory($migration, $batch); - } else { - $this->regress(-1); - - $message = lang('Migrations.generalFault'); - - if ($this->silent) { - $this->cliMessages[] = "\t" . CLI::color($message, 'red'); - - return false; - } - - throw new RuntimeException($message); - } - } - - $data = get_object_vars($this); - $data['method'] = 'latest'; - Events::trigger('migrate', $data); - - return true; - } - - /** - * Migrate down to a previous batch - * - * Calls each migration step required to get to the provided batch - * - * @param int $targetBatch Target batch number, or negative for a relative batch, 0 for all - * @param string|null $group Deprecated. The designation has no effect. - * - * @return bool True on success, FALSE on failure or no migrations are found - * - * @throws ConfigException - * @throws RuntimeException - */ - public function regress(int $targetBatch = 0, ?string $group = null) - { - if (! $this->enabled) { - throw ConfigException::forDisabledMigrations(); - } - - $this->ensureTable(); - - $batches = $this->getBatches(); - - if ($targetBatch < 0) { - $targetBatch = $batches[count($batches) - 1 + $targetBatch] ?? 0; - } - - if ($batches === [] && $targetBatch === 0) { - return true; - } - - if ($targetBatch !== 0 && ! in_array($targetBatch, $batches, true)) { - $message = lang('Migrations.batchNotFound') . $targetBatch; - - if ($this->silent) { - $this->cliMessages[] = "\t" . CLI::color($message, 'red'); - - return false; - } - - throw new RuntimeException($message); - } - - $tmpNamespace = $this->namespace; - - $this->namespace = null; - $allMigrations = $this->findMigrations(); - - $migrations = []; - - while ($batch = array_pop($batches)) { - if ($batch <= $targetBatch) { - break; - } - - foreach ($this->getBatchHistory($batch, 'desc') as $history) { - $uid = $this->getObjectUid($history); - - if (! isset($allMigrations[$uid])) { - $message = lang('Migrations.gap') . ' ' . $history->version; - - if ($this->silent) { - $this->cliMessages[] = "\t" . CLI::color($message, 'red'); - - return false; - } - - throw new RuntimeException($message); - } - - $migration = $allMigrations[$uid]; - $migration->history = $history; - $migrations[] = $migration; - } - } - - foreach ($migrations as $migration) { - if ($this->migrate('down', $migration)) { - $this->removeHistory($migration->history); - } else { - $message = lang('Migrations.generalFault'); - - if ($this->silent) { - $this->cliMessages[] = "\t" . CLI::color($message, 'red'); - - return false; - } - - throw new RuntimeException($message); - } - } - - $data = get_object_vars($this); - $data['method'] = 'regress'; - Events::trigger('migrate', $data); - - $this->namespace = $tmpNamespace; - - return true; - } - - /** - * Migrate a single file regardless of order or batches. - * Method "up" or "down" determined by presence in history. - * NOTE: This is not recommended and provided mostly for testing. - * - * @param string $path Full path to a valid migration file - * @param string $path Namespace of the target migration - */ - public function force(string $path, string $namespace, ?string $group = null) - { - if (! $this->enabled) { - throw ConfigException::forDisabledMigrations(); - } - - $this->ensureTable(); - - if ($group !== null) { - $this->groupFilter = $group; - $this->setGroup($group); - } - - $migration = $this->migrationFromFile($path, $namespace); - if (empty($migration)) { - $message = lang('Migrations.notFound'); - - if ($this->silent) { - $this->cliMessages[] = "\t" . CLI::color($message, 'red'); - - return false; - } - - throw new RuntimeException($message); - } - - $method = 'up'; - $this->setNamespace($migration->namespace); - - foreach ($this->getHistory($this->group) as $history) { - if ($this->getObjectUid($history) === $migration->uid) { - $method = 'down'; - $migration->history = $history; - break; - } - } - - if ($method === 'up') { - $batch = $this->getLastBatch() + 1; - - if ($this->migrate('up', $migration) && $this->groupSkip === false) { - $this->addHistory($migration, $batch); - - return true; - } - - $this->groupSkip = false; - } elseif ($this->migrate('down', $migration)) { - $this->removeHistory($migration->history); - - return true; - } - - $message = lang('Migrations.generalFault'); - - if ($this->silent) { - $this->cliMessages[] = "\t" . CLI::color($message, 'red'); - - return false; - } - - throw new RuntimeException($message); - } - - /** - * Retrieves list of available migration scripts - * - * @return array List of all located migrations by their UID - */ - public function findMigrations(): array - { - $namespaces = $this->namespace ? [$this->namespace] : array_keys(Services::autoloader()->getNamespace()); - $migrations = []; - - foreach ($namespaces as $namespace) { - if (ENVIRONMENT !== 'testing' && $namespace === 'Tests\Support') { - continue; - } - - foreach ($this->findNamespaceMigrations($namespace) as $migration) { - $migrations[$migration->uid] = $migration; - } - } - - // Sort migrations ascending by their UID (version) - ksort($migrations); - - return $migrations; - } - - /** - * Retrieves a list of available migration scripts for one namespace - */ - public function findNamespaceMigrations(string $namespace): array - { - $migrations = []; - $locator = Services::locator(true); - - if (! empty($this->path)) { - helper('filesystem'); - $dir = rtrim($this->path, DIRECTORY_SEPARATOR) . '/'; - $files = get_filenames($dir, true, false, false); - } else { - $files = $locator->listNamespaceFiles($namespace, '/Database/Migrations/'); - } - - foreach ($files as $file) { - $file = empty($this->path) ? $file : $this->path . str_replace($this->path, '', $file); - - if ($migration = $this->migrationFromFile($file, $namespace)) { - $migrations[] = $migration; - } - } - - return $migrations; - } - - /** - * Create a migration object from a file path. - * - * @param string $path Full path to a valid migration file. - * - * @return false|object Returns the migration object, or false on failure - */ - protected function migrationFromFile(string $path, string $namespace) - { - if (substr($path, -4) !== '.php') { - return false; - } - - $filename = basename($path, '.php'); - - if (! preg_match($this->regex, $filename)) { - return false; - } - - $locator = Services::locator(true); - - $migration = new stdClass(); - - $migration->version = $this->getMigrationNumber($filename); - $migration->name = $this->getMigrationName($filename); - $migration->path = $path; - $migration->class = $locator->getClassname($path); - $migration->namespace = $namespace; - $migration->uid = $this->getObjectUid($migration); - - return $migration; - } - - /** - * Allows other scripts to modify on the fly as needed. - * - * @return MigrationRunner - */ - public function setNamespace(?string $namespace) - { - $this->namespace = $namespace; - - return $this; - } - - /** - * Allows other scripts to modify on the fly as needed. - * - * @return MigrationRunner - */ - public function setGroup(string $group) - { - $this->group = $group; - - return $this; - } - - /** - * @return MigrationRunner - */ - public function setName(string $name) - { - $this->name = $name; - - return $this; - } - - /** - * If $silent == true, then will not throw exceptions and will - * attempt to continue gracefully. - * - * @return MigrationRunner - */ - public function setSilent(bool $silent) - { - $this->silent = $silent; - - return $this; - } - - /** - * Extracts the migration number from a filename - * - * @param string $migration A migration filename w/o path. - */ - protected function getMigrationNumber(string $migration): string - { - preg_match($this->regex, $migration, $matches); - - return count($matches) ? $matches[1] : '0'; - } - - /** - * Extracts the migration name from a filename - * - * Note: The migration name should be the classname, but maybe they are - * different. - * - * @param string $migration A migration filename w/o path. - */ - protected function getMigrationName(string $migration): string - { - preg_match($this->regex, $migration, $matches); - - return count($matches) ? $matches[2] : ''; - } - - /** - * Uses the non-repeatable portions of a migration or history - * to create a sortable unique key - * - * @param object $object migration or $history - */ - public function getObjectUid($object): string - { - return preg_replace('/[^0-9]/', '', $object->version) . $object->class; - } - - /** - * Retrieves messages formatted for CLI output - */ - public function getCliMessages(): array - { - return $this->cliMessages; - } - - /** - * Clears any CLI messages. - * - * @return MigrationRunner - */ - public function clearCliMessages() - { - $this->cliMessages = []; - - return $this; - } - - /** - * Truncates the history table. - */ - public function clearHistory() - { - if ($this->db->tableExists($this->table)) { - $this->db->table($this->table)->truncate(); - } - } - - /** - * Add a history to the table. - * - * @param object $migration - */ - protected function addHistory($migration, int $batch) - { - $this->db->table($this->table)->insert([ - 'version' => $migration->version, - 'class' => $migration->class, - 'group' => $this->group, - 'namespace' => $migration->namespace, - 'time' => Time::now()->getTimestamp(), - 'batch' => $batch, - ]); - - if (is_cli()) { - $this->cliMessages[] = sprintf( - "\t%s(%s) %s_%s", - CLI::color(lang('Migrations.added'), 'yellow'), - $migration->namespace, - $migration->version, - $migration->class - ); - } - } - - /** - * Removes a single history - * - * @param object $history - */ - protected function removeHistory($history) - { - $this->db->table($this->table)->where('id', $history->id)->delete(); - - if (is_cli()) { - $this->cliMessages[] = sprintf( - "\t%s(%s) %s_%s", - CLI::color(lang('Migrations.removed'), 'yellow'), - $history->namespace, - $history->version, - $history->class - ); - } - } - - /** - * Grabs the full migration history from the database for a group - */ - public function getHistory(string $group = 'default'): array - { - $this->ensureTable(); - - $builder = $this->db->table($this->table); - - // If group was specified then use it - if ($group !== '') { - $builder->where('group', $group); - } - - // If a namespace was specified then use it - if ($this->namespace) { - $builder->where('namespace', $this->namespace); - } - - $query = $builder->orderBy('id', 'ASC')->get(); - - return ! empty($query) ? $query->getResultObject() : []; - } - - /** - * Returns the migration history for a single batch. - * - * @param string $order - */ - public function getBatchHistory(int $batch, $order = 'asc'): array - { - $this->ensureTable(); - - $query = $this->db->table($this->table) - ->where('batch', $batch) - ->orderBy('id', $order) - ->get(); - - return ! empty($query) ? $query->getResultObject() : []; - } - - /** - * Returns all the batches from the database history in order - */ - public function getBatches(): array - { - $this->ensureTable(); - - $batches = $this->db->table($this->table) - ->select('batch') - ->distinct() - ->orderBy('batch', 'asc') - ->get() - ->getResultArray(); - - return array_map('intval', array_column($batches, 'batch')); - } - - /** - * Returns the value of the last batch in the database. - */ - public function getLastBatch(): int - { - $this->ensureTable(); - - $batch = $this->db->table($this->table) - ->selectMax('batch') - ->get() - ->getResultObject(); - - $batch = is_array($batch) && count($batch) - ? end($batch)->batch - : 0; - - return (int) $batch; - } - - /** - * Returns the version number of the first migration for a batch. - * Mostly just for tests. - */ - public function getBatchStart(int $batch): string - { - if ($batch < 0) { - $batches = $this->getBatches(); - $batch = $batches[count($batches) - 1] ?? 0; - } - - $migration = $this->db->table($this->table) - ->where('batch', $batch) - ->orderBy('id', 'asc') - ->limit(1) - ->get() - ->getResultObject(); - - return count($migration) ? $migration[0]->version : '0'; - } - - /** - * Returns the version number of the last migration for a batch. - * Mostly just for tests. - */ - public function getBatchEnd(int $batch): string - { - if ($batch < 0) { - $batches = $this->getBatches(); - $batch = $batches[count($batches) - 1] ?? 0; - } - - $migration = $this->db->table($this->table) - ->where('batch', $batch) - ->orderBy('id', 'desc') - ->limit(1) - ->get() - ->getResultObject(); - - return count($migration) ? $migration[0]->version : 0; - } - - /** - * Ensures that we have created our migrations table - * in the database. - */ - public function ensureTable() - { - if ($this->tableChecked || $this->db->tableExists($this->table)) { - return; - } - - $forge = Database::forge($this->db); - - $forge->addField([ - 'id' => [ - 'type' => 'BIGINT', - 'constraint' => 20, - 'unsigned' => true, - 'auto_increment' => true, - ], - 'version' => [ - 'type' => 'VARCHAR', - 'constraint' => 255, - 'null' => false, - ], - 'class' => [ - 'type' => 'VARCHAR', - 'constraint' => 255, - 'null' => false, - ], - 'group' => [ - 'type' => 'VARCHAR', - 'constraint' => 255, - 'null' => false, - ], - 'namespace' => [ - 'type' => 'VARCHAR', - 'constraint' => 255, - 'null' => false, - ], - 'time' => [ - 'type' => 'INT', - 'constraint' => 11, - 'null' => false, - ], - 'batch' => [ - 'type' => 'INT', - 'constraint' => 11, - 'unsigned' => true, - 'null' => false, - ], - ]); - - $forge->addPrimaryKey('id'); - $forge->createTable($this->table, true); - - $this->tableChecked = true; - } - - /** - * Handles the actual running of a migration. - * - * @param string $direction "up" or "down" - * @param object $migration The migration to run - */ - protected function migrate($direction, $migration): bool - { - include_once $migration->path; - - $class = $migration->class; - $this->setName($migration->name); - - // Validate the migration file structure - if (! class_exists($class, false)) { - $message = sprintf(lang('Migrations.classNotFound'), $class); - - if ($this->silent) { - $this->cliMessages[] = "\t" . CLI::color($message, 'red'); - - return false; - } - - throw new RuntimeException($message); - } - - /** @var Migration $instance */ - $instance = new $class(Database::forge($this->db)); - $group = $instance->getDBGroup() ?? $this->group; - - if (ENVIRONMENT !== 'testing' && $group === 'tests' && $this->groupFilter !== 'tests') { - // @codeCoverageIgnoreStart - $this->groupSkip = true; - - return true; - // @codeCoverageIgnoreEnd - } - - if ($direction === 'up' && $this->groupFilter !== null && $this->groupFilter !== $group) { - $this->groupSkip = true; - - return true; - } - - if (! is_callable([$instance, $direction])) { - $message = sprintf(lang('Migrations.missingMethod'), $direction); - - if ($this->silent) { - $this->cliMessages[] = "\t" . CLI::color($message, 'red'); - - return false; - } - - throw new RuntimeException($message); - } - - $instance->{$direction}(); - - return true; - } -} diff --git a/system4.4.6/Database/ModelFactory.php b/system4.4.6/Database/ModelFactory.php deleted file mode 100644 index 76a30e6c..00000000 --- a/system4.4.6/Database/ModelFactory.php +++ /dev/null @@ -1,53 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database; - -use CodeIgniter\Config\Factories; - -/** - * Returns new or shared Model instances - * - * @deprecated Use CodeIgniter\Config\Factories::models() - * - * @codeCoverageIgnore - * @see \CodeIgniter\Database\ModelFactoryTest - */ -class ModelFactory -{ - /** - * Creates new Model instances or returns a shared instance - * - * @return mixed - */ - public static function get(string $name, bool $getShared = true, ?ConnectionInterface $connection = null) - { - return Factories::models($name, ['getShared' => $getShared], $connection); - } - - /** - * Helper method for injecting mock instances while testing. - * - * @param object $instance - */ - public static function injectMock(string $name, $instance) - { - Factories::injectMock('models', $name, $instance); - } - - /** - * Resets the static arrays - */ - public static function reset() - { - Factories::reset('models'); - } -} diff --git a/system4.4.6/Database/MySQLi/Builder.php b/system4.4.6/Database/MySQLi/Builder.php deleted file mode 100644 index 096bbedd..00000000 --- a/system4.4.6/Database/MySQLi/Builder.php +++ /dev/null @@ -1,145 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\MySQLi; - -use CodeIgniter\Database\BaseBuilder; -use CodeIgniter\Database\Exceptions\DatabaseException; -use CodeIgniter\Database\RawSql; - -/** - * Builder for MySQLi - */ -class Builder extends BaseBuilder -{ - /** - * Identifier escape character - * - * @var string - */ - protected $escapeChar = '`'; - - /** - * Specifies which sql statements - * support the ignore option. - * - * @var array - */ - protected $supportedIgnoreStatements = [ - 'update' => 'IGNORE', - 'insert' => 'IGNORE', - 'delete' => 'IGNORE', - ]; - - /** - * FROM tables - * - * Groups tables in FROM clauses if needed, so there is no confusion - * about operator precedence. - * - * Note: This is only used (and overridden) by MySQL. - */ - protected function _fromTables(): string - { - if ($this->QBJoin !== [] && count($this->QBFrom) > 1) { - return '(' . implode(', ', $this->QBFrom) . ')'; - } - - return implode(', ', $this->QBFrom); - } - - /** - * Generates a platform-specific batch update string from the supplied data - */ - protected function _updateBatch(string $table, array $keys, array $values): string - { - $sql = $this->QBOptions['sql'] ?? ''; - - // if this is the first iteration of batch then we need to build skeleton sql - if ($sql === '') { - $constraints = $this->QBOptions['constraints'] ?? []; - - if ($constraints === []) { - if ($this->db->DBDebug) { - throw new DatabaseException('You must specify a constraint to match on for batch updates.'); // @codeCoverageIgnore - } - - return ''; // @codeCoverageIgnore - } - - $updateFields = $this->QBOptions['updateFields'] ?? - $this->updateFields($keys, false, $constraints)->QBOptions['updateFields'] ?? - []; - - $alias = $this->QBOptions['alias'] ?? '`_u`'; - - $sql = 'UPDATE ' . $this->compileIgnore('update') . $table . "\n"; - - $sql .= "INNER JOIN (\n{:_table_:}"; - - $sql .= ') ' . $alias . "\n"; - - $sql .= 'ON ' . implode( - ' AND ', - array_map( - static fn ($key, $value) => ( - ($value instanceof RawSql && is_string($key)) - ? - $table . '.' . $key . ' = ' . $value - : - ( - $value instanceof RawSql - ? - $value - : - $table . '.' . $value . ' = ' . $alias . '.' . $value - ) - ), - array_keys($constraints), - $constraints - ) - ) . "\n"; - - $sql .= "SET\n"; - - $sql .= implode( - ",\n", - array_map( - static fn ($key, $value) => $table . '.' . $key . ($value instanceof RawSql ? - ' = ' . $value : - ' = ' . $alias . '.' . $value), - array_keys($updateFields), - $updateFields - ) - ); - - $this->QBOptions['sql'] = $sql; - } - - if (isset($this->QBOptions['setQueryAsData'])) { - $data = $this->QBOptions['setQueryAsData']; - } else { - $data = implode( - " UNION ALL\n", - array_map( - static fn ($value) => 'SELECT ' . implode(', ', array_map( - static fn ($key, $index) => $index . ' ' . $key, - $keys, - $value - )), - $values - ) - ) . "\n"; - } - - return str_replace('{:_table_:}', $data, $sql); - } -} diff --git a/system4.4.6/Database/MySQLi/Connection.php b/system4.4.6/Database/MySQLi/Connection.php deleted file mode 100644 index 3139185f..00000000 --- a/system4.4.6/Database/MySQLi/Connection.php +++ /dev/null @@ -1,628 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\MySQLi; - -use CodeIgniter\Database\BaseConnection; -use CodeIgniter\Database\Exceptions\DatabaseException; -use LogicException; -use mysqli; -use mysqli_result; -use mysqli_sql_exception; -use stdClass; -use Throwable; - -/** - * Connection for MySQLi - * - * @extends BaseConnection<mysqli, mysqli_result> - */ -class Connection extends BaseConnection -{ - /** - * Database driver - * - * @var string - */ - public $DBDriver = 'MySQLi'; - - /** - * DELETE hack flag - * - * Whether to use the MySQL "delete hack" which allows the number - * of affected rows to be shown. Uses a preg_replace when enabled, - * adding a bit more processing to all queries. - * - * @var bool - */ - public $deleteHack = true; - - /** - * Identifier escape character - * - * @var string - */ - public $escapeChar = '`'; - - /** - * MySQLi object - * - * Has to be preserved without being assigned to $conn_id. - * - * @var false|mysqli - */ - public $mysqli; - - /** - * MySQLi constant - * - * For unbuffered queries use `MYSQLI_USE_RESULT`. - * - * Default mode for buffered queries uses `MYSQLI_STORE_RESULT`. - * - * @var int - */ - public $resultMode = MYSQLI_STORE_RESULT; - - /** - * Use MYSQLI_OPT_INT_AND_FLOAT_NATIVE - * - * @var bool - */ - public $numberNative = false; - - /** - * Connect to the database. - * - * @return false|mysqli - * - * @throws DatabaseException - */ - public function connect(bool $persistent = false) - { - // Do we have a socket path? - if ($this->hostname[0] === '/') { - $hostname = null; - $port = null; - $socket = $this->hostname; - } else { - $hostname = ($persistent === true) ? 'p:' . $this->hostname : $this->hostname; - $port = empty($this->port) ? null : $this->port; - $socket = ''; - } - - $clientFlags = ($this->compress === true) ? MYSQLI_CLIENT_COMPRESS : 0; - $this->mysqli = mysqli_init(); - - mysqli_report(MYSQLI_REPORT_ALL & ~MYSQLI_REPORT_INDEX); - - $this->mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 10); - - if ($this->numberNative === true) { - $this->mysqli->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1); - } - - if (isset($this->strictOn)) { - if ($this->strictOn) { - $this->mysqli->options( - MYSQLI_INIT_COMMAND, - "SET SESSION sql_mode = CONCAT(@@sql_mode, ',', 'STRICT_ALL_TABLES')" - ); - } else { - $this->mysqli->options( - MYSQLI_INIT_COMMAND, - "SET SESSION sql_mode = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( - @@sql_mode, - 'STRICT_ALL_TABLES,', ''), - ',STRICT_ALL_TABLES', ''), - 'STRICT_ALL_TABLES', ''), - 'STRICT_TRANS_TABLES,', ''), - ',STRICT_TRANS_TABLES', ''), - 'STRICT_TRANS_TABLES', '')" - ); - } - } - - if (is_array($this->encrypt)) { - $ssl = []; - - if (! empty($this->encrypt['ssl_key'])) { - $ssl['key'] = $this->encrypt['ssl_key']; - } - if (! empty($this->encrypt['ssl_cert'])) { - $ssl['cert'] = $this->encrypt['ssl_cert']; - } - if (! empty($this->encrypt['ssl_ca'])) { - $ssl['ca'] = $this->encrypt['ssl_ca']; - } - if (! empty($this->encrypt['ssl_capath'])) { - $ssl['capath'] = $this->encrypt['ssl_capath']; - } - if (! empty($this->encrypt['ssl_cipher'])) { - $ssl['cipher'] = $this->encrypt['ssl_cipher']; - } - - if ($ssl !== []) { - if (isset($this->encrypt['ssl_verify'])) { - if ($this->encrypt['ssl_verify']) { - if (defined('MYSQLI_OPT_SSL_VERIFY_SERVER_CERT')) { - $this->mysqli->options(MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, 1); - } - } - // Apparently (when it exists), setting MYSQLI_OPT_SSL_VERIFY_SERVER_CERT - // to FALSE didn't do anything, so PHP 5.6.16 introduced yet another - // constant ... - // - // https://secure.php.net/ChangeLog-5.php#5.6.16 - // https://bugs.php.net/bug.php?id=68344 - elseif (defined('MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT') && version_compare($this->mysqli->client_info, 'mysqlnd 5.6', '>=')) { - $clientFlags += MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT; - } - } - - $this->mysqli->ssl_set( - $ssl['key'] ?? null, - $ssl['cert'] ?? null, - $ssl['ca'] ?? null, - $ssl['capath'] ?? null, - $ssl['cipher'] ?? null - ); - } - - $clientFlags += MYSQLI_CLIENT_SSL; - } - - try { - if ($this->mysqli->real_connect( - $hostname, - $this->username, - $this->password, - $this->database, - $port, - $socket, - $clientFlags - )) { - // Prior to version 5.7.3, MySQL silently downgrades to an unencrypted connection if SSL setup fails - if (($clientFlags & MYSQLI_CLIENT_SSL) && version_compare($this->mysqli->client_info, 'mysqlnd 5.7.3', '<=') - && empty($this->mysqli->query("SHOW STATUS LIKE 'ssl_cipher'")->fetch_object()->Value) - ) { - $this->mysqli->close(); - $message = 'MySQLi was configured for an SSL connection, but got an unencrypted connection instead!'; - log_message('error', $message); - - if ($this->DBDebug) { - throw new DatabaseException($message); - } - - return false; - } - - if (! $this->mysqli->set_charset($this->charset)) { - log_message('error', "Database: Unable to set the configured connection charset ('{$this->charset}')."); - - $this->mysqli->close(); - - if ($this->DBDebug) { - throw new DatabaseException('Unable to set client connection character set: ' . $this->charset); - } - - return false; - } - - return $this->mysqli; - } - } catch (Throwable $e) { - // Clean sensitive information from errors. - $msg = $e->getMessage(); - - $msg = str_replace($this->username, '****', $msg); - $msg = str_replace($this->password, '****', $msg); - - throw new DatabaseException($msg, $e->getCode(), $e); - } - - return false; - } - - /** - * Keep or establish the connection if no queries have been sent for - * a length of time exceeding the server's idle timeout. - */ - public function reconnect() - { - $this->close(); - $this->initialize(); - } - - /** - * Close the database connection. - */ - protected function _close() - { - $this->connID->close(); - } - - /** - * Select a specific database table to use. - */ - public function setDatabase(string $databaseName): bool - { - if ($databaseName === '') { - $databaseName = $this->database; - } - - if (empty($this->connID)) { - $this->initialize(); - } - - if ($this->connID->select_db($databaseName)) { - $this->database = $databaseName; - - return true; - } - - return false; - } - - /** - * Returns a string containing the version of the database being used. - */ - public function getVersion(): string - { - if (isset($this->dataCache['version'])) { - return $this->dataCache['version']; - } - - if (empty($this->mysqli)) { - $this->initialize(); - } - - return $this->dataCache['version'] = $this->mysqli->server_info; - } - - /** - * Executes the query against the database. - * - * @return false|mysqli_result; - */ - protected function execute(string $sql) - { - while ($this->connID->more_results()) { - $this->connID->next_result(); - if ($res = $this->connID->store_result()) { - $res->free(); - } - } - - try { - return $this->connID->query($this->prepQuery($sql), $this->resultMode); - } catch (mysqli_sql_exception $e) { - log_message('error', (string) $e); - - if ($this->DBDebug) { - throw new DatabaseException($e->getMessage(), $e->getCode(), $e); - } - } - - return false; - } - - /** - * Prep the query. If needed, each database adapter can prep the query string - */ - protected function prepQuery(string $sql): string - { - // mysqli_affected_rows() returns 0 for "DELETE FROM TABLE" queries. This hack - // modifies the query so that it a proper number of affected rows is returned. - if ($this->deleteHack === true && preg_match('/^\s*DELETE\s+FROM\s+(\S+)\s*$/i', $sql)) { - return trim($sql) . ' WHERE 1=1'; - } - - return $sql; - } - - /** - * Returns the total number of rows affected by this query. - */ - public function affectedRows(): int - { - return $this->connID->affected_rows ?? 0; - } - - /** - * Platform-dependant string escape - */ - protected function _escapeString(string $str): string - { - if (! $this->connID) { - $this->initialize(); - } - - return $this->connID->real_escape_string($str); - } - - /** - * Escape Like String Direct - * There are a few instances where MySQLi queries cannot take the - * additional "ESCAPE x" parameter for specifying the escape character - * in "LIKE" strings, and this handles those directly with a backslash. - * - * @param string|string[] $str Input string - * - * @return string|string[] - */ - public function escapeLikeStringDirect($str) - { - if (is_array($str)) { - foreach ($str as $key => $val) { - $str[$key] = $this->escapeLikeStringDirect($val); - } - - return $str; - } - - $str = $this->_escapeString($str); - - // Escape LIKE condition wildcards - return str_replace( - [$this->likeEscapeChar, '%', '_'], - ['\\' . $this->likeEscapeChar, '\\%', '\\_'], - $str - ); - } - - /** - * Generates the SQL for listing tables in a platform-dependent manner. - * Uses escapeLikeStringDirect(). - * - * @param string|null $tableName If $tableName is provided will return only this table if exists. - */ - protected function _listTables(bool $prefixLimit = false, ?string $tableName = null): string - { - $sql = 'SHOW TABLES FROM ' . $this->escapeIdentifiers($this->database); - - if ($tableName !== null) { - return $sql . ' LIKE ' . $this->escape($tableName); - } - - if ($prefixLimit !== false && $this->DBPrefix !== '') { - return $sql . " LIKE '" . $this->escapeLikeStringDirect($this->DBPrefix) . "%'"; - } - - return $sql; - } - - /** - * Generates a platform-specific query string so that the column names can be fetched. - */ - protected function _listColumns(string $table = ''): string - { - return 'SHOW COLUMNS FROM ' . $this->protectIdentifiers($table, true, null, false); - } - - /** - * Returns an array of objects with field data - * - * @return stdClass[] - * - * @throws DatabaseException - */ - protected function _fieldData(string $table): array - { - $table = $this->protectIdentifiers($table, true, null, false); - - if (($query = $this->query('SHOW COLUMNS FROM ' . $table)) === false) { - throw new DatabaseException(lang('Database.failGetFieldData')); - } - $query = $query->getResultObject(); - - $retVal = []; - - for ($i = 0, $c = count($query); $i < $c; $i++) { - $retVal[$i] = new stdClass(); - $retVal[$i]->name = $query[$i]->Field; - - sscanf($query[$i]->Type, '%[a-z](%d)', $retVal[$i]->type, $retVal[$i]->max_length); - - $retVal[$i]->nullable = $query[$i]->Null === 'YES'; - $retVal[$i]->default = $query[$i]->Default; - $retVal[$i]->primary_key = (int) ($query[$i]->Key === 'PRI'); - } - - return $retVal; - } - - /** - * Returns an array of objects with index data - * - * @return stdClass[] - * - * @throws DatabaseException - * @throws LogicException - */ - protected function _indexData(string $table): array - { - $table = $this->protectIdentifiers($table, true, null, false); - - if (($query = $this->query('SHOW INDEX FROM ' . $table)) === false) { - throw new DatabaseException(lang('Database.failGetIndexData')); - } - - if (! $indexes = $query->getResultArray()) { - return []; - } - - $keys = []; - - foreach ($indexes as $index) { - if (empty($keys[$index['Key_name']])) { - $keys[$index['Key_name']] = new stdClass(); - $keys[$index['Key_name']]->name = $index['Key_name']; - - if ($index['Key_name'] === 'PRIMARY') { - $type = 'PRIMARY'; - } elseif ($index['Index_type'] === 'FULLTEXT') { - $type = 'FULLTEXT'; - } elseif ($index['Non_unique']) { - $type = $index['Index_type'] === 'SPATIAL' ? 'SPATIAL' : 'INDEX'; - } else { - $type = 'UNIQUE'; - } - - $keys[$index['Key_name']]->type = $type; - } - - $keys[$index['Key_name']]->fields[] = $index['Column_name']; - } - - return $keys; - } - - /** - * Returns an array of objects with Foreign key data - * - * @return stdClass[] - * - * @throws DatabaseException - */ - protected function _foreignKeyData(string $table): array - { - $sql = ' - SELECT - tc.CONSTRAINT_NAME, - tc.TABLE_NAME, - kcu.COLUMN_NAME, - rc.REFERENCED_TABLE_NAME, - kcu.REFERENCED_COLUMN_NAME, - rc.DELETE_RULE, - rc.UPDATE_RULE, - rc.MATCH_OPTION - FROM information_schema.table_constraints AS tc - INNER JOIN information_schema.referential_constraints AS rc - ON tc.constraint_name = rc.constraint_name - AND tc.constraint_schema = rc.constraint_schema - INNER JOIN information_schema.key_column_usage AS kcu - ON tc.constraint_name = kcu.constraint_name - AND tc.constraint_schema = kcu.constraint_schema - WHERE - tc.constraint_type = ' . $this->escape('FOREIGN KEY') . ' AND - tc.table_schema = ' . $this->escape($this->database) . ' AND - tc.table_name = ' . $this->escape($table); - - if (($query = $this->query($sql)) === false) { - throw new DatabaseException(lang('Database.failGetForeignKeyData')); - } - - $query = $query->getResultObject(); - $indexes = []; - - foreach ($query as $row) { - $indexes[$row->CONSTRAINT_NAME]['constraint_name'] = $row->CONSTRAINT_NAME; - $indexes[$row->CONSTRAINT_NAME]['table_name'] = $row->TABLE_NAME; - $indexes[$row->CONSTRAINT_NAME]['column_name'][] = $row->COLUMN_NAME; - $indexes[$row->CONSTRAINT_NAME]['foreign_table_name'] = $row->REFERENCED_TABLE_NAME; - $indexes[$row->CONSTRAINT_NAME]['foreign_column_name'][] = $row->REFERENCED_COLUMN_NAME; - $indexes[$row->CONSTRAINT_NAME]['on_delete'] = $row->DELETE_RULE; - $indexes[$row->CONSTRAINT_NAME]['on_update'] = $row->UPDATE_RULE; - $indexes[$row->CONSTRAINT_NAME]['match'] = $row->MATCH_OPTION; - } - - return $this->foreignKeyDataToObjects($indexes); - } - - /** - * Returns platform-specific SQL to disable foreign key checks. - * - * @return string - */ - protected function _disableForeignKeyChecks() - { - return 'SET FOREIGN_KEY_CHECKS=0'; - } - - /** - * Returns platform-specific SQL to enable foreign key checks. - * - * @return string - */ - protected function _enableForeignKeyChecks() - { - return 'SET FOREIGN_KEY_CHECKS=1'; - } - - /** - * Returns the last error code and message. - * Must return this format: ['code' => string|int, 'message' => string] - * intval(code) === 0 means "no error". - * - * @return array<string, int|string> - */ - public function error(): array - { - if (! empty($this->mysqli->connect_errno)) { - return [ - 'code' => $this->mysqli->connect_errno, - 'message' => $this->mysqli->connect_error, - ]; - } - - return [ - 'code' => $this->connID->errno, - 'message' => $this->connID->error, - ]; - } - - /** - * Insert ID - */ - public function insertID(): int - { - return $this->connID->insert_id; - } - - /** - * Begin Transaction - */ - protected function _transBegin(): bool - { - $this->connID->autocommit(false); - - return $this->connID->begin_transaction(); - } - - /** - * Commit Transaction - */ - protected function _transCommit(): bool - { - if ($this->connID->commit()) { - $this->connID->autocommit(true); - - return true; - } - - return false; - } - - /** - * Rollback Transaction - */ - protected function _transRollback(): bool - { - if ($this->connID->rollback()) { - $this->connID->autocommit(true); - - return true; - } - - return false; - } -} diff --git a/system4.4.6/Database/MySQLi/Forge.php b/system4.4.6/Database/MySQLi/Forge.php deleted file mode 100644 index adc6c6cc..00000000 --- a/system4.4.6/Database/MySQLi/Forge.php +++ /dev/null @@ -1,264 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\MySQLi; - -use CodeIgniter\Database\Forge as BaseForge; - -/** - * Forge for MySQLi - */ -class Forge extends BaseForge -{ - /** - * CREATE DATABASE statement - * - * @var string - */ - protected $createDatabaseStr = 'CREATE DATABASE %s CHARACTER SET %s COLLATE %s'; - - /** - * CREATE DATABASE IF statement - * - * @var string - */ - protected $createDatabaseIfStr = 'CREATE DATABASE IF NOT EXISTS %s CHARACTER SET %s COLLATE %s'; - - /** - * DROP CONSTRAINT statement - * - * @var string - */ - protected $dropConstraintStr = 'ALTER TABLE %s DROP FOREIGN KEY %s'; - - /** - * CREATE TABLE keys flag - * - * Whether table keys are created from within the - * CREATE TABLE statement. - * - * @var bool - */ - protected $createTableKeys = true; - - /** - * UNSIGNED support - * - * @var array - */ - protected $_unsigned = [ - 'TINYINT', - 'SMALLINT', - 'MEDIUMINT', - 'INT', - 'INTEGER', - 'BIGINT', - 'REAL', - 'DOUBLE', - 'DOUBLE PRECISION', - 'FLOAT', - 'DECIMAL', - 'NUMERIC', - ]; - - /** - * Table Options list which required to be quoted - * - * @var array - */ - protected $_quoted_table_options = [ - 'COMMENT', - 'COMPRESSION', - 'CONNECTION', - 'DATA DIRECTORY', - 'INDEX DIRECTORY', - 'ENCRYPTION', - 'PASSWORD', - ]; - - /** - * NULL value representation in CREATE/ALTER TABLE statements - * - * @var string - * - * @internal - */ - protected $null = 'NULL'; - - /** - * CREATE TABLE attributes - * - * @param array $attributes Associative array of table attributes - */ - protected function _createTableAttributes(array $attributes): string - { - $sql = ''; - - foreach (array_keys($attributes) as $key) { - if (is_string($key)) { - $sql .= ' ' . strtoupper($key) . ' = '; - - if (in_array(strtoupper($key), $this->_quoted_table_options, true)) { - $sql .= $this->db->escape($attributes[$key]); - } else { - $sql .= $this->db->escapeString($attributes[$key]); - } - } - } - - if (! empty($this->db->charset) && ! strpos($sql, 'CHARACTER SET') && ! strpos($sql, 'CHARSET')) { - $sql .= ' DEFAULT CHARACTER SET = ' . $this->db->escapeString($this->db->charset); - } - - if (! empty($this->db->DBCollat) && ! strpos($sql, 'COLLATE')) { - $sql .= ' COLLATE = ' . $this->db->escapeString($this->db->DBCollat); - } - - return $sql; - } - - /** - * ALTER TABLE - * - * @param string $alterType ALTER type - * @param string $table Table name - * @param array|string $processedFields Processed column definitions - * or column names to DROP - * - * @return list<string>|string SQL string - * @phpstan-return ($alterType is 'DROP' ? string : list<string>) - */ - protected function _alterTable(string $alterType, string $table, $processedFields) - { - if ($alterType === 'DROP') { - return parent::_alterTable($alterType, $table, $processedFields); - } - - $sql = 'ALTER TABLE ' . $this->db->escapeIdentifiers($table); - - foreach ($processedFields as $i => $field) { - if ($field['_literal'] !== false) { - $processedFields[$i] = ($alterType === 'ADD') ? "\n\tADD " . $field['_literal'] : "\n\tMODIFY " . $field['_literal']; - } else { - if ($alterType === 'ADD') { - $processedFields[$i]['_literal'] = "\n\tADD "; - } else { - $processedFields[$i]['_literal'] = empty($field['new_name']) ? "\n\tMODIFY " : "\n\tCHANGE "; - } - - $processedFields[$i] = $processedFields[$i]['_literal'] . $this->_processColumn($processedFields[$i]); - } - } - - return [$sql . implode(',', $processedFields)]; - } - - /** - * Process column - */ - protected function _processColumn(array $processedField): string - { - $extraClause = isset($processedField['after']) ? ' AFTER ' . $this->db->escapeIdentifiers($processedField['after']) : ''; - - if (empty($extraClause) && isset($processedField['first']) && $processedField['first'] === true) { - $extraClause = ' FIRST'; - } - - return $this->db->escapeIdentifiers($processedField['name']) - . (empty($processedField['new_name']) ? '' : ' ' . $this->db->escapeIdentifiers($processedField['new_name'])) - . ' ' . $processedField['type'] . $processedField['length'] - . $processedField['unsigned'] - . $processedField['null'] - . $processedField['default'] - . $processedField['auto_increment'] - . $processedField['unique'] - . (empty($processedField['comment']) ? '' : ' COMMENT ' . $processedField['comment']) - . $extraClause; - } - - /** - * Generates SQL to add indexes - * - * @param bool $asQuery When true returns stand alone SQL, else partial SQL used with CREATE TABLE - */ - protected function _processIndexes(string $table, bool $asQuery = false): array - { - $sqls = ['']; - $index = 0; - - for ($i = 0, $c = count($this->keys); $i < $c; $i++) { - $index = $i; - if ($asQuery === false) { - $index = 0; - } - - if (isset($this->keys[$i]['fields'])) { - for ($i2 = 0, $c2 = count($this->keys[$i]['fields']); $i2 < $c2; $i2++) { - if (! isset($this->fields[$this->keys[$i]['fields'][$i2]])) { - unset($this->keys[$i]['fields'][$i2]); - - continue; - } - } - } - - if (! is_array($this->keys[$i]['fields'])) { - $this->keys[$i]['fields'] = [$this->keys[$i]['fields']]; - } - - $unique = in_array($i, $this->uniqueKeys, true) ? 'UNIQUE ' : ''; - - $keyName = $this->db->escapeIdentifiers(($this->keys[$i]['keyName'] === '') ? - implode('_', $this->keys[$i]['fields']) : - $this->keys[$i]['keyName']); - - if ($asQuery === true) { - $sqls[$index] = 'ALTER TABLE ' . $this->db->escapeIdentifiers($table) . " ADD {$unique}KEY " - . $keyName - . ' (' . implode(', ', $this->db->escapeIdentifiers($this->keys[$i]['fields'])) . ')'; - } else { - $sqls[$index] .= ",\n\t{$unique}KEY " . $keyName - . ' (' . implode(', ', $this->db->escapeIdentifiers($this->keys[$i]['fields'])) . ')'; - } - } - - $this->keys = []; - - return $sqls; - } - - /** - * Drop Key - */ - public function dropKey(string $table, string $keyName, bool $prefixKeyName = true): bool - { - $sql = sprintf( - $this->dropIndexStr, - $this->db->escapeIdentifiers($keyName), - $this->db->escapeIdentifiers($this->db->DBPrefix . $table), - ); - - return $this->db->query($sql); - } - - /** - * Drop Primary Key - */ - public function dropPrimaryKey(string $table, string $keyName = ''): bool - { - $sql = sprintf( - 'ALTER TABLE %s DROP PRIMARY KEY', - $this->db->escapeIdentifiers($this->db->DBPrefix . $table) - ); - - return $this->db->query($sql); - } -} diff --git a/system4.4.6/Database/MySQLi/PreparedQuery.php b/system4.4.6/Database/MySQLi/PreparedQuery.php deleted file mode 100644 index 594fcba2..00000000 --- a/system4.4.6/Database/MySQLi/PreparedQuery.php +++ /dev/null @@ -1,112 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\MySQLi; - -use BadMethodCallException; -use CodeIgniter\Database\BasePreparedQuery; -use CodeIgniter\Database\Exceptions\DatabaseException; -use mysqli; -use mysqli_result; -use mysqli_sql_exception; -use mysqli_stmt; - -/** - * Prepared query for MySQLi - * - * @extends BasePreparedQuery<mysqli, mysqli_stmt, mysqli_result> - */ -class PreparedQuery extends BasePreparedQuery -{ - /** - * Prepares the query against the database, and saves the connection - * info necessary to execute the query later. - * - * NOTE: This version is based on SQL code. Child classes should - * override this method. - * - * @param array $options Passed to the connection's prepare statement. - * Unused in the MySQLi driver. - */ - public function _prepare(string $sql, array $options = []): PreparedQuery - { - // Mysqli driver doesn't like statements - // with terminating semicolons. - $sql = rtrim($sql, ';'); - - if (! $this->statement = $this->db->mysqli->prepare($sql)) { - $this->errorCode = $this->db->mysqli->errno; - $this->errorString = $this->db->mysqli->error; - - if ($this->db->DBDebug) { - throw new DatabaseException($this->errorString . ' code: ' . $this->errorCode); - } - } - - return $this; - } - - /** - * Takes a new set of data and runs it against the currently - * prepared query. Upon success, will return a Results object. - */ - public function _execute(array $data): bool - { - if (! isset($this->statement)) { - throw new BadMethodCallException('You must call prepare before trying to execute a prepared statement.'); - } - - // First off -bind the parameters - $bindTypes = ''; - - // Determine the type string - foreach ($data as $item) { - if (is_int($item)) { - $bindTypes .= 'i'; - } elseif (is_numeric($item)) { - $bindTypes .= 'd'; - } else { - $bindTypes .= 's'; - } - } - - // Bind it - $this->statement->bind_param($bindTypes, ...$data); - - try { - return $this->statement->execute(); - } catch (mysqli_sql_exception $e) { - if ($this->db->DBDebug) { - throw new DatabaseException($e->getMessage(), $e->getCode(), $e); - } - - return false; - } - } - - /** - * Returns the result object for the prepared query or false on failure. - * - * @return false|mysqli_result - */ - public function _getResult() - { - return $this->statement->get_result(); - } - - /** - * Deallocate prepared statements. - */ - protected function _close(): bool - { - return $this->statement->close(); - } -} diff --git a/system4.4.6/Database/MySQLi/Result.php b/system4.4.6/Database/MySQLi/Result.php deleted file mode 100644 index 578169de..00000000 --- a/system4.4.6/Database/MySQLi/Result.php +++ /dev/null @@ -1,168 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\MySQLi; - -use CodeIgniter\Database\BaseResult; -use CodeIgniter\Entity\Entity; -use mysqli; -use mysqli_result; -use stdClass; - -/** - * Result for MySQLi - * - * @extends BaseResult<mysqli, mysqli_result> - */ -class Result extends BaseResult -{ - /** - * Gets the number of fields in the result set. - */ - public function getFieldCount(): int - { - return $this->resultID->field_count; - } - - /** - * Generates an array of column names in the result set. - */ - public function getFieldNames(): array - { - $fieldNames = []; - $this->resultID->field_seek(0); - - while ($field = $this->resultID->fetch_field()) { - $fieldNames[] = $field->name; - } - - return $fieldNames; - } - - /** - * Generates an array of objects representing field meta-data. - */ - public function getFieldData(): array - { - static $dataTypes = [ - MYSQLI_TYPE_DECIMAL => 'decimal', - MYSQLI_TYPE_NEWDECIMAL => 'newdecimal', - MYSQLI_TYPE_FLOAT => 'float', - MYSQLI_TYPE_DOUBLE => 'double', - - MYSQLI_TYPE_BIT => 'bit', - MYSQLI_TYPE_SHORT => 'short', - MYSQLI_TYPE_LONG => 'long', - MYSQLI_TYPE_LONGLONG => 'longlong', - MYSQLI_TYPE_INT24 => 'int24', - - MYSQLI_TYPE_YEAR => 'year', - - MYSQLI_TYPE_TIMESTAMP => 'timestamp', - MYSQLI_TYPE_DATE => 'date', - MYSQLI_TYPE_TIME => 'time', - MYSQLI_TYPE_DATETIME => 'datetime', - MYSQLI_TYPE_NEWDATE => 'newdate', - - MYSQLI_TYPE_SET => 'set', - - MYSQLI_TYPE_VAR_STRING => 'var_string', - MYSQLI_TYPE_STRING => 'string', - - MYSQLI_TYPE_GEOMETRY => 'geometry', - MYSQLI_TYPE_TINY_BLOB => 'tiny_blob', - MYSQLI_TYPE_MEDIUM_BLOB => 'medium_blob', - MYSQLI_TYPE_LONG_BLOB => 'long_blob', - MYSQLI_TYPE_BLOB => 'blob', - ]; - - $retVal = []; - $fieldData = $this->resultID->fetch_fields(); - - foreach ($fieldData as $i => $data) { - $retVal[$i] = new stdClass(); - $retVal[$i]->name = $data->name; - $retVal[$i]->type = $data->type; - $retVal[$i]->type_name = in_array($data->type, [1, 247], true) ? 'char' : ($dataTypes[$data->type] ?? null); - $retVal[$i]->max_length = $data->max_length; - $retVal[$i]->primary_key = $data->flags & 2; - $retVal[$i]->length = $data->length; - $retVal[$i]->default = $data->def; - } - - return $retVal; - } - - /** - * Frees the current result. - * - * @return void - */ - public function freeResult() - { - if (is_object($this->resultID)) { - $this->resultID->free(); - $this->resultID = false; - } - } - - /** - * Moves the internal pointer to the desired offset. This is called - * internally before fetching results to make sure the result set - * starts at zero. - * - * @return bool - */ - public function dataSeek(int $n = 0) - { - return $this->resultID->data_seek($n); - } - - /** - * Returns the result set as an array. - * - * Overridden by driver classes. - * - * @return array|false|null - */ - protected function fetchAssoc() - { - return $this->resultID->fetch_assoc(); - } - - /** - * Returns the result set as an object. - * - * Overridden by child classes. - * - * @return Entity|false|object|stdClass - */ - protected function fetchObject(string $className = 'stdClass') - { - if (is_subclass_of($className, Entity::class)) { - return empty($data = $this->fetchAssoc()) ? false : (new $className())->injectRawData($data); - } - - return $this->resultID->fetch_object($className); - } - - /** - * Returns the number of rows in the resultID (i.e., mysqli_result object) - */ - public function getNumRows(): int - { - if (! is_int($this->numRows)) { - $this->numRows = $this->resultID->num_rows; - } - - return $this->numRows; - } -} diff --git a/system4.4.6/Database/MySQLi/Utils.php b/system4.4.6/Database/MySQLi/Utils.php deleted file mode 100644 index 08989f75..00000000 --- a/system4.4.6/Database/MySQLi/Utils.php +++ /dev/null @@ -1,45 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\MySQLi; - -use CodeIgniter\Database\BaseUtils; -use CodeIgniter\Database\Exceptions\DatabaseException; - -/** - * Utils for MySQLi - */ -class Utils extends BaseUtils -{ - /** - * List databases statement - * - * @var string - */ - protected $listDatabases = 'SHOW DATABASES'; - - /** - * OPTIMIZE TABLE statement - * - * @var string - */ - protected $optimizeTable = 'OPTIMIZE TABLE %s'; - - /** - * Platform dependent version of the backup function. - * - * @return never - */ - public function _backup(?array $prefs = null) - { - throw new DatabaseException('Unsupported feature of the database platform you are using.'); - } -} diff --git a/system4.4.6/Database/OCI8/Builder.php b/system4.4.6/Database/OCI8/Builder.php deleted file mode 100644 index f5527ce7..00000000 --- a/system4.4.6/Database/OCI8/Builder.php +++ /dev/null @@ -1,524 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\OCI8; - -use CodeIgniter\Database\BaseBuilder; -use CodeIgniter\Database\Exceptions\DatabaseException; -use CodeIgniter\Database\RawSql; - -/** - * Builder for OCI8 - */ -class Builder extends BaseBuilder -{ - /** - * Identifier escape character - * - * @var string - */ - protected $escapeChar = '"'; - - /** - * ORDER BY random keyword - * - * @var array - */ - protected $randomKeyword = [ - '"DBMS_RANDOM"."RANDOM"', - ]; - - /** - * COUNT string - * - * @used-by CI_DB_driver::count_all() - * @used-by BaseBuilder::count_all_results() - * - * @var string - */ - protected $countString = 'SELECT COUNT(1) '; - - /** - * Limit used flag - * - * If we use LIMIT, we'll add a field that will - * throw off num_fields later. - * - * @var bool - */ - protected $limitUsed = false; - - /** - * A reference to the database connection. - * - * @var Connection - */ - protected $db; - - /** - * Generates a platform-specific insert string from the supplied data. - */ - protected function _insertBatch(string $table, array $keys, array $values): string - { - $sql = $this->QBOptions['sql'] ?? ''; - - // if this is the first iteration of batch then we need to build skeleton sql - if ($sql === '') { - $insertKeys = implode(', ', $keys); - $hasPrimaryKey = in_array('PRIMARY', array_column($this->db->getIndexData($table), 'type'), true); - - // ORA-00001 measures - $sql = 'INSERT' . ($hasPrimaryKey ? '' : ' ALL') . ' INTO ' . $table . ' (' . $insertKeys . ")\n{:_table_:}"; - - $this->QBOptions['sql'] = $sql; - } - - if (isset($this->QBOptions['setQueryAsData'])) { - $data = $this->QBOptions['setQueryAsData']; - } else { - $data = implode( - " FROM DUAL UNION ALL\n", - array_map( - static fn ($value) => 'SELECT ' . implode(', ', array_map( - static fn ($key, $index) => $index . ' ' . $key, - $keys, - $value - )), - $values - ) - ) . " FROM DUAL\n"; - } - - return str_replace('{:_table_:}', $data, $sql); - } - - /** - * Generates a platform-specific replace string from the supplied data - */ - protected function _replace(string $table, array $keys, array $values): string - { - $fieldNames = array_map(static fn ($columnName) => trim($columnName, '"'), $keys); - - $uniqueIndexes = array_filter($this->db->getIndexData($table), static function ($index) use ($fieldNames) { - $hasAllFields = count(array_intersect($index->fields, $fieldNames)) === count($index->fields); - - return ($index->type === 'PRIMARY') && $hasAllFields; - }); - $replaceableFields = array_filter($keys, static function ($columnName) use ($uniqueIndexes) { - foreach ($uniqueIndexes as $index) { - if (in_array(trim($columnName, '"'), $index->fields, true)) { - return false; - } - } - - return true; - }); - - $sql = 'MERGE INTO ' . $table . "\n USING (SELECT "; - - $sql .= implode(', ', array_map(static fn ($columnName, $value) => $value . ' ' . $columnName, $keys, $values)); - - $sql .= ' FROM DUAL) "_replace" ON ( '; - - $onList = []; - $onList[] = '1 != 1'; - - foreach ($uniqueIndexes as $index) { - $onList[] = '(' . implode(' AND ', array_map(static fn ($columnName) => $table . '."' . $columnName . '" = "_replace"."' . $columnName . '"', $index->fields)) . ')'; - } - - $sql .= implode(' OR ', $onList) . ') WHEN MATCHED THEN UPDATE SET '; - - $sql .= implode(', ', array_map(static fn ($columnName) => $columnName . ' = "_replace".' . $columnName, $replaceableFields)); - - $sql .= ' WHEN NOT MATCHED THEN INSERT (' . implode(', ', $replaceableFields) . ') VALUES '; - - return $sql . (' (' . implode(', ', array_map(static fn ($columnName) => '"_replace".' . $columnName, $replaceableFields)) . ')'); - } - - /** - * Generates a platform-specific truncate string from the supplied data - * - * If the database does not support the truncate() command, - * then this method maps to 'DELETE FROM table' - */ - protected function _truncate(string $table): string - { - return 'TRUNCATE TABLE ' . $table; - } - - /** - * Compiles a delete string and runs the query - * - * @param mixed $where - * - * @return mixed - * - * @throws DatabaseException - */ - public function delete($where = '', ?int $limit = null, bool $resetData = true) - { - if ($limit !== null && $limit !== 0) { - $this->QBLimit = $limit; - } - - return parent::delete($where, null, $resetData); - } - - /** - * Generates a platform-specific delete string from the supplied data - */ - protected function _delete(string $table): string - { - if ($this->QBLimit) { - $this->where('rownum <= ', $this->QBLimit, false); - $this->QBLimit = false; - } - - return parent::_delete($table); - } - - /** - * Generates a platform-specific update string from the supplied data - */ - protected function _update(string $table, array $values): string - { - $valStr = []; - - foreach ($values as $key => $val) { - $valStr[] = $key . ' = ' . $val; - } - - if ($this->QBLimit) { - $this->where('rownum <= ', $this->QBLimit, false); - } - - return 'UPDATE ' . $this->compileIgnore('update') . $table . ' SET ' . implode(', ', $valStr) - . $this->compileWhereHaving('QBWhere') - . $this->compileOrderBy(); - } - - /** - * Generates a platform-specific LIMIT clause. - */ - protected function _limit(string $sql, bool $offsetIgnore = false): string - { - $offset = (int) ($offsetIgnore === false ? $this->QBOffset : 0); - if (version_compare($this->db->getVersion(), '12.1', '>=')) { - // OFFSET-FETCH can be used only with the ORDER BY clause - if (empty($this->QBOrderBy)) { - $sql .= ' ORDER BY 1'; - } - - return $sql . ' OFFSET ' . $offset . ' ROWS FETCH NEXT ' . $this->QBLimit . ' ROWS ONLY'; - } - - $this->limitUsed = true; - $limitTemplateQuery = 'SELECT * FROM (SELECT INNER_QUERY.*, ROWNUM RNUM FROM (%s) INNER_QUERY WHERE ROWNUM < %d)' . ($offset ? ' WHERE RNUM >= %d' : ''); - - return sprintf($limitTemplateQuery, $sql, $offset + $this->QBLimit + 1, $offset); - } - - /** - * Resets the query builder values. Called by the get() function - */ - protected function resetSelect() - { - $this->limitUsed = false; - parent::resetSelect(); - } - - /** - * Generates a platform-specific batch update string from the supplied data - */ - protected function _updateBatch(string $table, array $keys, array $values): string - { - $sql = $this->QBOptions['sql'] ?? ''; - - // if this is the first iteration of batch then we need to build skeleton sql - if ($sql === '') { - $constraints = $this->QBOptions['constraints'] ?? []; - - if ($constraints === []) { - if ($this->db->DBDebug) { - throw new DatabaseException('You must specify a constraint to match on for batch updates.'); - } - - return ''; // @codeCoverageIgnore - } - - $updateFields = $this->QBOptions['updateFields'] ?? - $this->updateFields($keys, false, $constraints)->QBOptions['updateFields'] ?? - []; - - $alias = $this->QBOptions['alias'] ?? '"_u"'; - - // Oracle doesn't support ignore on updates so we will use MERGE - $sql = 'MERGE INTO ' . $table . "\n"; - - $sql .= "USING (\n{:_table_:}"; - - $sql .= ') ' . $alias . "\n"; - - $sql .= 'ON (' . implode( - ' AND ', - array_map( - static fn ($key, $value) => ( - ($value instanceof RawSql && is_string($key)) - ? - $table . '.' . $key . ' = ' . $value - : - ( - $value instanceof RawSql - ? - $value - : - $table . '.' . $value . ' = ' . $alias . '.' . $value - ) - ), - array_keys($constraints), - $constraints - ) - ) . ")\n"; - - $sql .= "WHEN MATCHED THEN UPDATE\n"; - - $sql .= "SET\n"; - - $sql .= implode( - ",\n", - array_map( - static fn ($key, $value) => $table . '.' . $key . ($value instanceof RawSql ? - ' = ' . $value : - ' = ' . $alias . '.' . $value), - array_keys($updateFields), - $updateFields - ) - ); - - $this->QBOptions['sql'] = $sql; - } - - if (isset($this->QBOptions['setQueryAsData'])) { - $data = $this->QBOptions['setQueryAsData']; - } else { - $data = implode( - " UNION ALL\n", - array_map( - static fn ($value) => 'SELECT ' . implode(', ', array_map( - static fn ($key, $index) => $index . ' ' . $key, - $keys, - $value - )) . ' FROM DUAL', - $values - ) - ) . "\n"; - } - - return str_replace('{:_table_:}', $data, $sql); - } - - /** - * Generates a platform-specific upsertBatch string from the supplied data - * - * @throws DatabaseException - */ - protected function _upsertBatch(string $table, array $keys, array $values): string - { - $sql = $this->QBOptions['sql'] ?? ''; - - // if this is the first iteration of batch then we need to build skeleton sql - if ($sql === '') { - $constraints = $this->QBOptions['constraints'] ?? []; - - if (empty($constraints)) { - $fieldNames = array_map(static fn ($columnName) => trim($columnName, '"'), $keys); - - $uniqueIndexes = array_filter($this->db->getIndexData($table), static function ($index) use ($fieldNames) { - $hasAllFields = count(array_intersect($index->fields, $fieldNames)) === count($index->fields); - - return ($index->type === 'PRIMARY' || $index->type === 'UNIQUE') && $hasAllFields; - }); - - // only take first index - foreach ($uniqueIndexes as $index) { - $constraints = $index->fields; - break; - } - - $constraints = $this->onConstraint($constraints)->QBOptions['constraints'] ?? []; - } - - if (empty($constraints)) { - if ($this->db->DBDebug) { - throw new DatabaseException('No constraint found for upsert.'); - } - - return ''; // @codeCoverageIgnore - } - - $alias = $this->QBOptions['alias'] ?? '"_upsert"'; - - $updateFields = $this->QBOptions['updateFields'] ?? $this->updateFields($keys, false, $constraints)->QBOptions['updateFields'] ?? []; - - $sql = 'MERGE INTO ' . $table . "\nUSING (\n{:_table_:}"; - - $sql .= ") {$alias}\nON ("; - - $sql .= implode( - ' AND ', - array_map( - static fn ($key, $value) => ( - ($value instanceof RawSql && is_string($key)) - ? - $table . '.' . $key . ' = ' . $value - : - ( - $value instanceof RawSql - ? - $value - : - $table . '.' . $value . ' = ' . $alias . '.' . $value - ) - ), - array_keys($constraints), - $constraints - ) - ) . ")\n"; - - $sql .= "WHEN MATCHED THEN UPDATE SET\n"; - - $sql .= implode( - ",\n", - array_map( - static fn ($key, $value) => $key . ($value instanceof RawSql ? - " = {$value}" : - " = {$alias}.{$value}"), - array_keys($updateFields), - $updateFields - ) - ); - - $sql .= "\nWHEN NOT MATCHED THEN INSERT (" . implode(', ', $keys) . ")\nVALUES "; - - $sql .= (' (' - . implode(', ', array_map(static fn ($columnName) => "{$alias}.{$columnName}", $keys)) - . ')'); - - $this->QBOptions['sql'] = $sql; - } - - if (isset($this->QBOptions['setQueryAsData'])) { - $data = $this->QBOptions['setQueryAsData']; - } else { - $data = implode( - " FROM DUAL UNION ALL\n", - array_map( - static fn ($value) => 'SELECT ' . implode(', ', array_map( - static fn ($key, $index) => $index . ' ' . $key, - $keys, - $value - )), - $values - ) - ) . " FROM DUAL\n"; - } - - return str_replace('{:_table_:}', $data, $sql); - } - - /** - * Generates a platform-specific batch update string from the supplied data - */ - protected function _deleteBatch(string $table, array $keys, array $values): string - { - $sql = $this->QBOptions['sql'] ?? ''; - - // if this is the first iteration of batch then we need to build skeleton sql - if ($sql === '') { - $constraints = $this->QBOptions['constraints'] ?? []; - - if ($constraints === []) { - if ($this->db->DBDebug) { - throw new DatabaseException('You must specify a constraint to match on for batch deletes.'); // @codeCoverageIgnore - } - - return ''; // @codeCoverageIgnore - } - - $alias = $this->QBOptions['alias'] ?? '_u'; - - $sql = 'DELETE ' . $table . "\n"; - - $sql .= "WHERE EXISTS (SELECT * FROM (\n{:_table_:}"; - - $sql .= ') ' . $alias . "\n"; - - $sql .= 'WHERE ' . implode( - ' AND ', - array_map( - static fn ($key, $value) => ( - $value instanceof RawSql ? - $value : - ( - is_string($key) ? - $table . '.' . $key . ' = ' . $alias . '.' . $value : - $table . '.' . $value . ' = ' . $alias . '.' . $value - ) - ), - array_keys($constraints), - $constraints - ) - ); - - // convert binds in where - foreach ($this->QBWhere as $key => $where) { - foreach ($this->binds as $field => $bind) { - $this->QBWhere[$key]['condition'] = str_replace(':' . $field . ':', $bind[0], $where['condition']); - } - } - - $sql .= ' ' . str_replace( - 'WHERE ', - 'AND ', - $this->compileWhereHaving('QBWhere') - ) . ')'; - - $this->QBOptions['sql'] = $sql; - } - - if (isset($this->QBOptions['setQueryAsData'])) { - $data = $this->QBOptions['setQueryAsData']; - } else { - $data = implode( - " FROM DUAL UNION ALL\n", - array_map( - static fn ($value) => 'SELECT ' . implode(', ', array_map( - static fn ($key, $index) => $index . ' ' . $key, - $keys, - $value - )), - $values - ) - ) . " FROM DUAL\n"; - } - - return str_replace('{:_table_:}', $data, $sql); - } - - /** - * Gets column names from a select query - */ - protected function fieldsFromQuery(string $sql): array - { - return $this->db->query('SELECT * FROM (' . $sql . ') "_u_" WHERE ROWNUM = 1')->getFieldNames(); - } -} diff --git a/system4.4.6/Database/OCI8/Connection.php b/system4.4.6/Database/OCI8/Connection.php deleted file mode 100644 index 5d239f17..00000000 --- a/system4.4.6/Database/OCI8/Connection.php +++ /dev/null @@ -1,724 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\OCI8; - -use CodeIgniter\Database\BaseConnection; -use CodeIgniter\Database\Exceptions\DatabaseException; -use CodeIgniter\Database\Query; -use ErrorException; -use stdClass; - -/** - * Connection for OCI8 - * - * @extends BaseConnection<resource, resource> - */ -class Connection extends BaseConnection -{ - /** - * Database driver - * - * @var string - */ - protected $DBDriver = 'OCI8'; - - /** - * Identifier escape character - * - * @var string - */ - public $escapeChar = '"'; - - /** - * List of reserved identifiers - * - * Identifiers that must NOT be escaped. - * - * @var array - */ - protected $reservedIdentifiers = [ - '*', - 'rownum', - ]; - - protected $validDSNs = [ - 'tns' => '/^\(DESCRIPTION=(\(.+\)){2,}\)$/', // TNS - // Easy Connect string (Oracle 10g+) - 'ec' => '/^(\/\/)?[a-z0-9.:_-]+(:[1-9][0-9]{0,4})?(\/[a-z0-9$_]+)?(:[^\/])?(\/[a-z0-9$_]+)?$/i', - 'in' => '/^[a-z0-9$_]+$/i', // Instance name (defined in tnsnames.ora) - ]; - - /** - * Reset $stmtId flag - * - * Used by storedProcedure() to prevent execute() from - * re-setting the statement ID. - */ - protected $resetStmtId = true; - - /** - * Statement ID - * - * @var resource - */ - protected $stmtId; - - /** - * Commit mode flag - * - * @used-by PreparedQuery::_execute() - * - * @var int - */ - public $commitMode = OCI_COMMIT_ON_SUCCESS; - - /** - * Cursor ID - * - * @var resource - */ - protected $cursorId; - - /** - * Latest inserted table name. - * - * @used-by PreparedQuery::_execute() - * - * @var string|null - */ - public $lastInsertedTableName; - - /** - * confirm DSN format. - */ - private function isValidDSN(): bool - { - foreach ($this->validDSNs as $regexp) { - if (preg_match($regexp, $this->DSN)) { - return true; - } - } - - return false; - } - - /** - * Connect to the database. - * - * @return false|resource - */ - public function connect(bool $persistent = false) - { - if (empty($this->DSN) && ! $this->isValidDSN()) { - $this->buildDSN(); - } - - $func = $persistent ? 'oci_pconnect' : 'oci_connect'; - - return empty($this->charset) - ? $func($this->username, $this->password, $this->DSN) - : $func($this->username, $this->password, $this->DSN, $this->charset); - } - - /** - * Keep or establish the connection if no queries have been sent for - * a length of time exceeding the server's idle timeout. - * - * @return void - */ - public function reconnect() - { - } - - /** - * Close the database connection. - * - * @return void - */ - protected function _close() - { - if (is_resource($this->cursorId)) { - oci_free_statement($this->cursorId); - } - if (is_resource($this->stmtId)) { - oci_free_statement($this->stmtId); - } - oci_close($this->connID); - } - - /** - * Select a specific database table to use. - */ - public function setDatabase(string $databaseName): bool - { - return false; - } - - /** - * Returns a string containing the version of the database being used. - */ - public function getVersion(): string - { - if (isset($this->dataCache['version'])) { - return $this->dataCache['version']; - } - - if (! $this->connID || ($versionString = oci_server_version($this->connID)) === false) { - return ''; - } - if (preg_match('#Release\s(\d+(?:\.\d+)+)#', $versionString, $match)) { - return $this->dataCache['version'] = $match[1]; - } - - return ''; - } - - /** - * Executes the query against the database. - * - * @return false|resource - */ - protected function execute(string $sql) - { - try { - if ($this->resetStmtId === true) { - $this->stmtId = oci_parse($this->connID, $sql); - } - - oci_set_prefetch($this->stmtId, 1000); - - $result = oci_execute($this->stmtId, $this->commitMode) ? $this->stmtId : false; - $insertTableName = $this->parseInsertTableName($sql); - - if ($result && $insertTableName !== '') { - $this->lastInsertedTableName = $insertTableName; - } - - return $result; - } catch (ErrorException $e) { - log_message('error', (string) $e); - - if ($this->DBDebug) { - throw new DatabaseException($e->getMessage(), $e->getCode(), $e); - } - } - - return false; - } - - /** - * Get the table name for the insert statement from sql. - */ - public function parseInsertTableName(string $sql): string - { - $commentStrippedSql = preg_replace(['/\/\*(.|\n)*?\*\//m', '/--.+/'], '', $sql); - $isInsertQuery = strpos(strtoupper(ltrim($commentStrippedSql)), 'INSERT') === 0; - - if (! $isInsertQuery) { - return ''; - } - - preg_match('/(?is)\b(?:into)\s+("?\w+"?)/', $commentStrippedSql, $match); - $tableName = $match[1] ?? ''; - - return strpos($tableName, '"') === 0 ? trim($tableName, '"') : strtoupper($tableName); - } - - /** - * Returns the total number of rows affected by this query. - */ - public function affectedRows(): int - { - return oci_num_rows($this->stmtId); - } - - /** - * Generates the SQL for listing tables in a platform-dependent manner. - * - * @param string|null $tableName If $tableName is provided will return only this table if exists. - */ - protected function _listTables(bool $prefixLimit = false, ?string $tableName = null): string - { - $sql = 'SELECT "TABLE_NAME" FROM "USER_TABLES"'; - - if ($tableName !== null) { - return $sql . ' WHERE "TABLE_NAME" LIKE ' . $this->escape($tableName); - } - - if ($prefixLimit !== false && $this->DBPrefix !== '') { - return $sql . ' WHERE "TABLE_NAME" LIKE \'' . $this->escapeLikeString($this->DBPrefix) . "%' " - . sprintf($this->likeEscapeStr, $this->likeEscapeChar); - } - - return $sql; - } - - /** - * Generates a platform-specific query string so that the column names can be fetched. - */ - protected function _listColumns(string $table = ''): string - { - if (strpos($table, '.') !== false) { - sscanf($table, '%[^.].%s', $owner, $table); - } else { - $owner = $this->username; - } - - return 'SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS - WHERE UPPER(OWNER) = ' . $this->escape(strtoupper($owner)) . ' - AND UPPER(TABLE_NAME) = ' . $this->escape(strtoupper($this->DBPrefix . $table)); - } - - /** - * Returns an array of objects with field data - * - * @return stdClass[] - * - * @throws DatabaseException - */ - protected function _fieldData(string $table): array - { - if (strpos($table, '.') !== false) { - sscanf($table, '%[^.].%s', $owner, $table); - } else { - $owner = $this->username; - } - - $sql = 'SELECT COLUMN_NAME, DATA_TYPE, CHAR_LENGTH, DATA_PRECISION, DATA_LENGTH, DATA_DEFAULT, NULLABLE - FROM ALL_TAB_COLUMNS - WHERE UPPER(OWNER) = ' . $this->escape(strtoupper($owner)) . ' - AND UPPER(TABLE_NAME) = ' . $this->escape(strtoupper($table)); - - if (($query = $this->query($sql)) === false) { - throw new DatabaseException(lang('Database.failGetFieldData')); - } - $query = $query->getResultObject(); - - $retval = []; - - for ($i = 0, $c = count($query); $i < $c; $i++) { - $retval[$i] = new stdClass(); - $retval[$i]->name = $query[$i]->COLUMN_NAME; - $retval[$i]->type = $query[$i]->DATA_TYPE; - - $length = $query[$i]->CHAR_LENGTH > 0 ? $query[$i]->CHAR_LENGTH : $query[$i]->DATA_PRECISION; - $length ??= $query[$i]->DATA_LENGTH; - - $retval[$i]->max_length = $length; - - $retval[$i]->nullable = $query[$i]->NULLABLE === 'Y'; - $retval[$i]->default = $query[$i]->DATA_DEFAULT; - } - - return $retval; - } - - /** - * Returns an array of objects with index data - * - * @return stdClass[] - * - * @throws DatabaseException - */ - protected function _indexData(string $table): array - { - if (strpos($table, '.') !== false) { - sscanf($table, '%[^.].%s', $owner, $table); - } else { - $owner = $this->username; - } - - $sql = 'SELECT AIC.INDEX_NAME, UC.CONSTRAINT_TYPE, AIC.COLUMN_NAME ' - . ' FROM ALL_IND_COLUMNS AIC ' - . ' LEFT JOIN USER_CONSTRAINTS UC ON AIC.INDEX_NAME = UC.CONSTRAINT_NAME AND AIC.TABLE_NAME = UC.TABLE_NAME ' - . 'WHERE AIC.TABLE_NAME = ' . $this->escape(strtolower($table)) . ' ' - . 'AND AIC.TABLE_OWNER = ' . $this->escape(strtoupper($owner)) . ' ' - . ' ORDER BY UC.CONSTRAINT_TYPE, AIC.COLUMN_POSITION'; - - if (($query = $this->query($sql)) === false) { - throw new DatabaseException(lang('Database.failGetIndexData')); - } - $query = $query->getResultObject(); - - $retVal = []; - $constraintTypes = [ - 'P' => 'PRIMARY', - 'U' => 'UNIQUE', - ]; - - foreach ($query as $row) { - if (isset($retVal[$row->INDEX_NAME])) { - $retVal[$row->INDEX_NAME]->fields[] = $row->COLUMN_NAME; - - continue; - } - - $retVal[$row->INDEX_NAME] = new stdClass(); - $retVal[$row->INDEX_NAME]->name = $row->INDEX_NAME; - $retVal[$row->INDEX_NAME]->fields = [$row->COLUMN_NAME]; - $retVal[$row->INDEX_NAME]->type = $constraintTypes[$row->CONSTRAINT_TYPE] ?? 'INDEX'; - } - - return $retVal; - } - - /** - * Returns an array of objects with Foreign key data - * - * @return stdClass[] - * - * @throws DatabaseException - */ - protected function _foreignKeyData(string $table): array - { - $sql = 'SELECT - acc.constraint_name, - acc.table_name, - acc.column_name, - ccu.table_name foreign_table_name, - accu.column_name foreign_column_name, - ac.delete_rule - FROM all_cons_columns acc - JOIN all_constraints ac ON acc.owner = ac.owner - AND acc.constraint_name = ac.constraint_name - JOIN all_constraints ccu ON ac.r_owner = ccu.owner - AND ac.r_constraint_name = ccu.constraint_name - JOIN all_cons_columns accu ON accu.constraint_name = ccu.constraint_name - AND accu.position = acc.position - AND accu.table_name = ccu.table_name - WHERE ac.constraint_type = ' . $this->escape('R') . ' - AND acc.table_name = ' . $this->escape($table); - - $query = $this->query($sql); - - if ($query === false) { - throw new DatabaseException(lang('Database.failGetForeignKeyData')); - } - - $query = $query->getResultObject(); - $indexes = []; - - foreach ($query as $row) { - $indexes[$row->CONSTRAINT_NAME]['constraint_name'] = $row->CONSTRAINT_NAME; - $indexes[$row->CONSTRAINT_NAME]['table_name'] = $row->TABLE_NAME; - $indexes[$row->CONSTRAINT_NAME]['column_name'][] = $row->COLUMN_NAME; - $indexes[$row->CONSTRAINT_NAME]['foreign_table_name'] = $row->FOREIGN_TABLE_NAME; - $indexes[$row->CONSTRAINT_NAME]['foreign_column_name'][] = $row->FOREIGN_COLUMN_NAME; - $indexes[$row->CONSTRAINT_NAME]['on_delete'] = $row->DELETE_RULE; - $indexes[$row->CONSTRAINT_NAME]['on_update'] = null; - $indexes[$row->CONSTRAINT_NAME]['match'] = null; - } - - return $this->foreignKeyDataToObjects($indexes); - } - - /** - * Returns platform-specific SQL to disable foreign key checks. - * - * @return string - */ - protected function _disableForeignKeyChecks() - { - return <<<'SQL' - BEGIN - FOR c IN - (SELECT c.owner, c.table_name, c.constraint_name - FROM user_constraints c, user_tables t - WHERE c.table_name = t.table_name - AND c.status = 'ENABLED' - AND c.constraint_type = 'R' - AND t.iot_type IS NULL - ORDER BY c.constraint_type DESC) - LOOP - dbms_utility.exec_ddl_statement('alter table "' || c.owner || '"."' || c.table_name || '" disable constraint "' || c.constraint_name || '"'); - END LOOP; - END; - SQL; - } - - /** - * Returns platform-specific SQL to enable foreign key checks. - * - * @return string - */ - protected function _enableForeignKeyChecks() - { - return <<<'SQL' - BEGIN - FOR c IN - (SELECT c.owner, c.table_name, c.constraint_name - FROM user_constraints c, user_tables t - WHERE c.table_name = t.table_name - AND c.status = 'DISABLED' - AND c.constraint_type = 'R' - AND t.iot_type IS NULL - ORDER BY c.constraint_type DESC) - LOOP - dbms_utility.exec_ddl_statement('alter table "' || c.owner || '"."' || c.table_name || '" enable constraint "' || c.constraint_name || '"'); - END LOOP; - END; - SQL; - } - - /** - * Get cursor. Returns a cursor from the database - * - * @return resource - */ - public function getCursor() - { - return $this->cursorId = oci_new_cursor($this->connID); - } - - /** - * Executes a stored procedure - * - * @param string $procedureName procedure name to execute - * @param array $params params array keys - * KEY OPTIONAL NOTES - * name no the name of the parameter should be in :<param_name> format - * value no the value of the parameter. If this is an OUT or IN OUT parameter, - * this should be a reference to a variable - * type yes the type of the parameter - * length yes the max size of the parameter - * - * @return bool|Query|Result - */ - public function storedProcedure(string $procedureName, array $params) - { - if ($procedureName === '') { - throw new DatabaseException(lang('Database.invalidArgument', [$procedureName])); - } - - // Build the query string - $sql = sprintf( - 'BEGIN %s (' . substr(str_repeat(',%s', count($params)), 1) . '); END;', - $procedureName, - ...array_map(static fn ($row) => $row['name'], $params) - ); - - $this->resetStmtId = false; - $this->stmtId = oci_parse($this->connID, $sql); - $this->bindParams($params); - $result = $this->query($sql); - $this->resetStmtId = true; - - return $result; - } - - /** - * Bind parameters - * - * @param array $params - * - * @return void - */ - protected function bindParams($params) - { - if (! is_array($params) || ! is_resource($this->stmtId)) { - return; - } - - foreach ($params as $param) { - oci_bind_by_name( - $this->stmtId, - $param['name'], - $param['value'], - $param['length'] ?? -1, - $param['type'] ?? SQLT_CHR - ); - } - } - - /** - * Returns the last error code and message. - * - * Must return an array with keys 'code' and 'message': - * - * return ['code' => null, 'message' => null); - */ - public function error(): array - { - // oci_error() returns an array that already contains - // 'code' and 'message' keys, but it can return false - // if there was no error .... - $error = oci_error(); - $resources = [$this->cursorId, $this->stmtId, $this->connID]; - - foreach ($resources as $resource) { - if (is_resource($resource)) { - $error = oci_error($resource); - break; - } - } - - return is_array($error) - ? $error - : [ - 'code' => '', - 'message' => '', - ]; - } - - public function insertID(): int - { - if (empty($this->lastInsertedTableName)) { - return 0; - } - - $indexs = $this->getIndexData($this->lastInsertedTableName); - $fieldDatas = $this->getFieldData($this->lastInsertedTableName); - - if (! $indexs || ! $fieldDatas) { - return 0; - } - - $columnTypeList = array_column($fieldDatas, 'type', 'name'); - $primaryColumnName = ''; - - foreach ($indexs as $index) { - if ($index->type !== 'PRIMARY' || count($index->fields) !== 1) { - continue; - } - - $primaryColumnName = $this->protectIdentifiers($index->fields[0], false, false); - $primaryColumnType = $columnTypeList[$primaryColumnName]; - - if ($primaryColumnType !== 'NUMBER') { - $primaryColumnName = ''; - } - } - - if ($primaryColumnName === '') { - return 0; - } - - $query = $this->query('SELECT DATA_DEFAULT FROM USER_TAB_COLUMNS WHERE TABLE_NAME = ? AND COLUMN_NAME = ?', [$this->lastInsertedTableName, $primaryColumnName])->getRow(); - $lastInsertValue = str_replace('nextval', 'currval', $query->DATA_DEFAULT ?? '0'); - $query = $this->query(sprintf('SELECT %s SEQ FROM DUAL', $lastInsertValue))->getRow(); - - return (int) ($query->SEQ ?? 0); - } - - /** - * Build a DSN from the provided parameters - * - * @return void - */ - protected function buildDSN() - { - if ($this->DSN !== '') { - $this->DSN = ''; - } - - // Legacy support for TNS in the hostname configuration field - $this->hostname = str_replace(["\n", "\r", "\t", ' '], '', $this->hostname); - - if (preg_match($this->validDSNs['tns'], $this->hostname)) { - $this->DSN = $this->hostname; - - return; - } - - $isEasyConnectableHostName = $this->hostname !== '' && strpos($this->hostname, '/') === false && strpos($this->hostname, ':') === false; - $easyConnectablePort = ! empty($this->port) && ctype_digit($this->port) ? ':' . $this->port : ''; - $easyConnectableDatabase = $this->database !== '' ? '/' . ltrim($this->database, '/') : ''; - - if ($isEasyConnectableHostName && ($easyConnectablePort !== '' || $easyConnectableDatabase !== '')) { - /* If the hostname field isn't empty, doesn't contain - * ':' and/or '/' and if port and/or database aren't - * empty, then the hostname field is most likely indeed - * just a hostname. Therefore we'll try and build an - * Easy Connect string from these 3 settings, assuming - * that the database field is a service name. - */ - $this->DSN = $this->hostname . $easyConnectablePort . $easyConnectableDatabase; - - if (preg_match($this->validDSNs['ec'], $this->DSN)) { - return; - } - } - - /* At this point, we can only try and validate the hostname and - * database fields separately as DSNs. - */ - if (preg_match($this->validDSNs['ec'], $this->hostname) || preg_match($this->validDSNs['in'], $this->hostname)) { - $this->DSN = $this->hostname; - - return; - } - - $this->database = str_replace(["\n", "\r", "\t", ' '], '', $this->database); - - foreach ($this->validDSNs as $regexp) { - if (preg_match($regexp, $this->database)) { - return; - } - } - - /* Well - OK, an empty string should work as well. - * PHP will try to use environment variables to - * determine which Oracle instance to connect to. - */ - $this->DSN = ''; - } - - /** - * Begin Transaction - */ - protected function _transBegin(): bool - { - $this->commitMode = OCI_NO_AUTO_COMMIT; - - return true; - } - - /** - * Commit Transaction - */ - protected function _transCommit(): bool - { - $this->commitMode = OCI_COMMIT_ON_SUCCESS; - - return oci_commit($this->connID); - } - - /** - * Rollback Transaction - */ - protected function _transRollback(): bool - { - $this->commitMode = OCI_COMMIT_ON_SUCCESS; - - return oci_rollback($this->connID); - } - - /** - * Returns the name of the current database being used. - */ - public function getDatabase(): string - { - if (! empty($this->database)) { - return $this->database; - } - - return $this->query('SELECT DEFAULT_TABLESPACE FROM USER_USERS')->getRow()->DEFAULT_TABLESPACE ?? ''; - } - - /** - * Get the prefix of the function to access the DB. - */ - protected function getDriverFunctionPrefix(): string - { - return 'oci_'; - } -} diff --git a/system4.4.6/Database/OCI8/Forge.php b/system4.4.6/Database/OCI8/Forge.php deleted file mode 100644 index 4de36ac9..00000000 --- a/system4.4.6/Database/OCI8/Forge.php +++ /dev/null @@ -1,312 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\OCI8; - -use CodeIgniter\Database\Forge as BaseForge; - -/** - * Forge for OCI8 - */ -class Forge extends BaseForge -{ - /** - * DROP INDEX statement - * - * @var string - */ - protected $dropIndexStr = 'DROP INDEX %s'; - - /** - * CREATE DATABASE statement - * - * @var false - */ - protected $createDatabaseStr = false; - - /** - * CREATE TABLE IF statement - * - * @var false - * - * @deprecated This is no longer used. - */ - protected $createTableIfStr = false; - - /** - * DROP TABLE IF EXISTS statement - * - * @var false - */ - protected $dropTableIfStr = false; - - /** - * DROP DATABASE statement - * - * @var false - */ - protected $dropDatabaseStr = false; - - /** - * UNSIGNED support - * - * @var array|bool - */ - protected $unsigned = false; - - /** - * NULL value representation in CREATE/ALTER TABLE statements - * - * @var string - */ - protected $null = 'NULL'; - - /** - * RENAME TABLE statement - * - * @var string - */ - protected $renameTableStr = 'ALTER TABLE %s RENAME TO %s'; - - /** - * DROP CONSTRAINT statement - * - * @var string - */ - protected $dropConstraintStr = 'ALTER TABLE %s DROP CONSTRAINT %s'; - - /** - * Foreign Key Allowed Actions - * - * @var array - */ - protected $fkAllowActions = ['CASCADE', 'SET NULL', 'NO ACTION']; - - /** - * ALTER TABLE - * - * @param string $alterType ALTER type - * @param string $table Table name - * @param array|string $processedFields Processed column definitions - * or column names to DROP - * - * @return list<string>|string SQL string - * @phpstan-return ($alterType is 'DROP' ? string : list<string>) - */ - protected function _alterTable(string $alterType, string $table, $processedFields) - { - $sql = 'ALTER TABLE ' . $this->db->escapeIdentifiers($table); - - if ($alterType === 'DROP') { - $columnNamesToDrop = $processedFields; - - $fields = array_map( - fn ($field) => $this->db->escapeIdentifiers(trim($field)), - is_string($columnNamesToDrop) ? explode(',', $columnNamesToDrop) : $columnNamesToDrop - ); - - return $sql . ' DROP (' . implode(',', $fields) . ') CASCADE CONSTRAINT INVALIDATE'; - } - - if ($alterType === 'CHANGE') { - $alterType = 'MODIFY'; - } - - $nullableMap = array_column($this->db->getFieldData($table), 'nullable', 'name'); - $sqls = []; - - for ($i = 0, $c = count($processedFields); $i < $c; $i++) { - if ($alterType === 'MODIFY') { - // If a null constraint is added to a column with a null constraint, - // ORA-01451 will occur, - // so add null constraint is used only when it is different from the current null constraint. - // If a not null constraint is added to a column with a not null constraint, - // ORA-01442 will occur. - $wantToAddNull = strpos($processedFields[$i]['null'], ' NOT') === false; - $currentNullable = $nullableMap[$processedFields[$i]['name']]; - - if ($wantToAddNull === true && $currentNullable === true) { - $processedFields[$i]['null'] = ''; - } elseif ($processedFields[$i]['null'] === '' && $currentNullable === false) { - // Nullable by default - $processedFields[$i]['null'] = ' NULL'; - } elseif ($wantToAddNull === false && $currentNullable === false) { - $processedFields[$i]['null'] = ''; - } - } - - if ($processedFields[$i]['_literal'] !== false) { - $processedFields[$i] = "\n\t" . $processedFields[$i]['_literal']; - } else { - $processedFields[$i]['_literal'] = "\n\t" . $this->_processColumn($processedFields[$i]); - - if (! empty($processedFields[$i]['comment'])) { - $sqls[] = 'COMMENT ON COLUMN ' - . $this->db->escapeIdentifiers($table) . '.' . $this->db->escapeIdentifiers($processedFields[$i]['name']) - . ' IS ' . $processedFields[$i]['comment']; - } - - if ($alterType === 'MODIFY' && ! empty($processedFields[$i]['new_name'])) { - $sqls[] = $sql . ' RENAME COLUMN ' . $this->db->escapeIdentifiers($processedFields[$i]['name']) - . ' TO ' . $this->db->escapeIdentifiers($processedFields[$i]['new_name']); - } - - $processedFields[$i] = "\n\t" . $processedFields[$i]['_literal']; - } - } - - $sql .= ' ' . $alterType . ' '; - $sql .= count($processedFields) === 1 - ? $processedFields[0] - : '(' . implode(',', $processedFields) . ')'; - - // RENAME COLUMN must be executed after MODIFY - array_unshift($sqls, $sql); - - return $sqls; - } - - /** - * Field attribute AUTO_INCREMENT - * - * @return void - */ - protected function _attributeAutoIncrement(array &$attributes, array &$field) - { - if (! empty($attributes['AUTO_INCREMENT']) && $attributes['AUTO_INCREMENT'] === true - && stripos($field['type'], 'NUMBER') !== false - && version_compare($this->db->getVersion(), '12.1', '>=') - ) { - $field['auto_increment'] = ' GENERATED BY DEFAULT ON NULL AS IDENTITY'; - } - } - - /** - * Process column - */ - protected function _processColumn(array $processedField): string - { - $constraint = ''; - // @todo: can't cover multi pattern when set type. - if ($processedField['type'] === 'VARCHAR2' && strpos($processedField['length'], "('") === 0) { - $constraint = ' CHECK(' . $this->db->escapeIdentifiers($processedField['name']) - . ' IN ' . $processedField['length'] . ')'; - - $processedField['length'] = '(' . max(array_map('mb_strlen', explode("','", mb_substr($processedField['length'], 2, -2)))) . ')' . $constraint; - } elseif (isset($this->primaryKeys['fields']) && count($this->primaryKeys['fields']) === 1 && $processedField['name'] === $this->primaryKeys['fields'][0]) { - $processedField['unique'] = ''; - } - - return $this->db->escapeIdentifiers($processedField['name']) - . ' ' . $processedField['type'] . $processedField['length'] - . $processedField['unsigned'] - . $processedField['default'] - . $processedField['auto_increment'] - . $processedField['null'] - . $processedField['unique']; - } - - /** - * Performs a data type mapping between different databases. - * - * @return void - */ - protected function _attributeType(array &$attributes) - { - // Reset field lengths for data types that don't support it - // Usually overridden by drivers - switch (strtoupper($attributes['TYPE'])) { - case 'TINYINT': - $attributes['CONSTRAINT'] ??= 3; - - // no break - case 'SMALLINT': - $attributes['CONSTRAINT'] ??= 5; - - // no break - case 'MEDIUMINT': - $attributes['CONSTRAINT'] ??= 7; - - // no break - case 'INT': - case 'INTEGER': - $attributes['CONSTRAINT'] ??= 11; - - // no break - case 'BIGINT': - $attributes['CONSTRAINT'] ??= 19; - - // no break - case 'NUMERIC': - $attributes['TYPE'] = 'NUMBER'; - - return; - - case 'BOOLEAN': - $attributes['TYPE'] = 'NUMBER'; - $attributes['CONSTRAINT'] = 1; - $attributes['UNSIGNED'] = true; - - return; - - case 'DOUBLE': - $attributes['TYPE'] = 'FLOAT'; - $attributes['CONSTRAINT'] ??= 126; - - return; - - case 'DATETIME': - case 'TIME': - $attributes['TYPE'] = 'DATE'; - - return; - - case 'SET': - case 'ENUM': - case 'VARCHAR': - $attributes['CONSTRAINT'] ??= 255; - - // no break - case 'TEXT': - case 'MEDIUMTEXT': - $attributes['CONSTRAINT'] ??= 4000; - $attributes['TYPE'] = 'VARCHAR2'; - } - } - - /** - * Generates a platform-specific DROP TABLE string - * - * @return bool|string - */ - protected function _dropTable(string $table, bool $ifExists, bool $cascade) - { - $sql = parent::_dropTable($table, $ifExists, $cascade); - - if ($sql !== true && $cascade === true) { - $sql .= ' CASCADE CONSTRAINTS PURGE'; - } elseif ($sql !== true) { - $sql .= ' PURGE'; - } - - return $sql; - } - - /** - * Constructs sql to check if key is a constraint. - */ - protected function _dropKeyAsConstraint(string $table, string $constraintName): string - { - return "SELECT constraint_name FROM all_constraints WHERE table_name = '" - . trim($table, '"') . "' AND index_name = '" - . trim($constraintName, '"') . "'"; - } -} diff --git a/system4.4.6/Database/OCI8/PreparedQuery.php b/system4.4.6/Database/OCI8/PreparedQuery.php deleted file mode 100644 index 93d26070..00000000 --- a/system4.4.6/Database/OCI8/PreparedQuery.php +++ /dev/null @@ -1,118 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\OCI8; - -use BadMethodCallException; -use CodeIgniter\Database\BasePreparedQuery; -use CodeIgniter\Database\Exceptions\DatabaseException; - -/** - * Prepared query for OCI8 - * - * @extends BasePreparedQuery<resource, resource, resource> - */ -class PreparedQuery extends BasePreparedQuery -{ - /** - * A reference to the db connection to use. - * - * @var Connection - */ - protected $db; - - /** - * Latest inserted table name. - */ - private ?string $lastInsertTableName = null; - - /** - * Prepares the query against the database, and saves the connection - * info necessary to execute the query later. - * - * NOTE: This version is based on SQL code. Child classes should - * override this method. - * - * @param array $options Passed to the connection's prepare statement. - * Unused in the OCI8 driver. - */ - public function _prepare(string $sql, array $options = []): PreparedQuery - { - if (! $this->statement = oci_parse($this->db->connID, $this->parameterize($sql))) { - $error = oci_error($this->db->connID); - $this->errorCode = $error['code'] ?? 0; - $this->errorString = $error['message'] ?? ''; - - if ($this->db->DBDebug) { - throw new DatabaseException($this->errorString . ' code: ' . $this->errorCode); - } - } - - $this->lastInsertTableName = $this->db->parseInsertTableName($sql); - - return $this; - } - - /** - * Takes a new set of data and runs it against the currently - * prepared query. Upon success, will return a Results object. - */ - public function _execute(array $data): bool - { - if (! isset($this->statement)) { - throw new BadMethodCallException('You must call prepare before trying to execute a prepared statement.'); - } - - foreach (array_keys($data) as $key) { - oci_bind_by_name($this->statement, ':' . $key, $data[$key]); - } - - $result = oci_execute($this->statement, $this->db->commitMode); - - if ($result && $this->lastInsertTableName !== '') { - $this->db->lastInsertedTableName = $this->lastInsertTableName; - } - - return $result; - } - - /** - * Returns the statement resource for the prepared query or false when preparing failed. - * - * @return resource|null - */ - public function _getResult() - { - return $this->statement; - } - - /** - * Deallocate prepared statements. - */ - protected function _close(): bool - { - return oci_free_statement($this->statement); - } - - /** - * Replaces the ? placeholders with :0, :1, etc parameters for use - * within the prepared query. - */ - public function parameterize(string $sql): string - { - // Track our current value - $count = 0; - - return preg_replace_callback('/\?/', static function ($matches) use (&$count) { - return ':' . ($count++); - }, $sql); - } -} diff --git a/system4.4.6/Database/OCI8/Result.php b/system4.4.6/Database/OCI8/Result.php deleted file mode 100644 index 01025763..00000000 --- a/system4.4.6/Database/OCI8/Result.php +++ /dev/null @@ -1,117 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\OCI8; - -use CodeIgniter\Database\BaseResult; -use CodeIgniter\Entity\Entity; -use stdClass; - -/** - * Result for OCI8 - * - * @extends BaseResult<resource, resource> - */ -class Result extends BaseResult -{ - /** - * Gets the number of fields in the result set. - */ - public function getFieldCount(): int - { - return oci_num_fields($this->resultID); - } - - /** - * Generates an array of column names in the result set. - */ - public function getFieldNames(): array - { - return array_map(fn ($fieldIndex) => oci_field_name($this->resultID, $fieldIndex), range(1, $this->getFieldCount())); - } - - /** - * Generates an array of objects representing field meta-data. - */ - public function getFieldData(): array - { - return array_map(fn ($fieldIndex) => (object) [ - 'name' => oci_field_name($this->resultID, $fieldIndex), - 'type' => oci_field_type($this->resultID, $fieldIndex), - 'max_length' => oci_field_size($this->resultID, $fieldIndex), - ], range(1, $this->getFieldCount())); - } - - /** - * Frees the current result. - * - * @return void - */ - public function freeResult() - { - if (is_resource($this->resultID)) { - oci_free_statement($this->resultID); - $this->resultID = false; - } - } - - /** - * Moves the internal pointer to the desired offset. This is called - * internally before fetching results to make sure the result set - * starts at zero. - * - * @return false - */ - public function dataSeek(int $n = 0) - { - // We can't support data seek by oci - return false; - } - - /** - * Returns the result set as an array. - * - * Overridden by driver classes. - * - * @return array|false - */ - protected function fetchAssoc() - { - return oci_fetch_assoc($this->resultID); - } - - /** - * Returns the result set as an object. - * - * Overridden by child classes. - * - * @return Entity|false|object|stdClass - */ - protected function fetchObject(string $className = 'stdClass') - { - $row = oci_fetch_object($this->resultID); - - if ($className === 'stdClass' || ! $row) { - return $row; - } - if (is_subclass_of($className, Entity::class)) { - return (new $className())->injectRawData((array) $row); - } - - $instance = new $className(); - - foreach (get_object_vars($row) as $key => $value) { - $instance->{$key} = $value; - } - - return $instance; - } -} diff --git a/system4.4.6/Database/OCI8/Utils.php b/system4.4.6/Database/OCI8/Utils.php deleted file mode 100644 index 2f3a3304..00000000 --- a/system4.4.6/Database/OCI8/Utils.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\OCI8; - -use CodeIgniter\Database\BaseUtils; -use CodeIgniter\Database\Exceptions\DatabaseException; - -/** - * Utils for OCI8 - */ -class Utils extends BaseUtils -{ - /** - * List databases statement - * - * @var string - */ - protected $listDatabases = 'SELECT TABLESPACE_NAME FROM USER_TABLESPACES'; - - /** - * Platform dependent version of the backup function. - * - * @return never - */ - public function _backup(?array $prefs = null) - { - throw new DatabaseException('Unsupported feature of the database platform you are using.'); - } -} diff --git a/system4.4.6/Database/Postgre/Builder.php b/system4.4.6/Database/Postgre/Builder.php deleted file mode 100644 index 40d751b7..00000000 --- a/system4.4.6/Database/Postgre/Builder.php +++ /dev/null @@ -1,632 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\Postgre; - -use CodeIgniter\Database\BaseBuilder; -use CodeIgniter\Database\Exceptions\DatabaseException; -use CodeIgniter\Database\RawSql; -use InvalidArgumentException; - -/** - * Builder for Postgre - */ -class Builder extends BaseBuilder -{ - /** - * ORDER BY random keyword - * - * @var array - */ - protected $randomKeyword = [ - 'RANDOM()', - ]; - - /** - * Specifies which sql statements - * support the ignore option. - * - * @var array - */ - protected $supportedIgnoreStatements = [ - 'insert' => 'ON CONFLICT DO NOTHING', - ]; - - /** - * Checks if the ignore option is supported by - * the Database Driver for the specific statement. - * - * @return string - */ - protected function compileIgnore(string $statement) - { - $sql = parent::compileIgnore($statement); - - if (! empty($sql)) { - $sql = ' ' . trim($sql); - } - - return $sql; - } - - /** - * ORDER BY - * - * @param string $direction ASC, DESC or RANDOM - * - * @return BaseBuilder - */ - public function orderBy(string $orderBy, string $direction = '', ?bool $escape = null) - { - $direction = strtoupper(trim($direction)); - if ($direction === 'RANDOM') { - if (ctype_digit($orderBy)) { - $orderBy = (float) ($orderBy > 1 ? "0.{$orderBy}" : $orderBy); - } - - if (is_float($orderBy)) { - $this->db->simpleQuery("SET SEED {$orderBy}"); - } - - $orderBy = $this->randomKeyword[0]; - $direction = ''; - $escape = false; - } - - return parent::orderBy($orderBy, $direction, $escape); - } - - /** - * Increments a numeric column by the specified value. - * - * @return mixed - * - * @throws DatabaseException - */ - public function increment(string $column, int $value = 1) - { - $column = $this->db->protectIdentifiers($column); - - $sql = $this->_update($this->QBFrom[0], [$column => "to_number({$column}, '9999999') + {$value}"]); - - if (! $this->testMode) { - $this->resetWrite(); - - return $this->db->query($sql, $this->binds, false); - } - - return true; - } - - /** - * Decrements a numeric column by the specified value. - * - * @return mixed - * - * @throws DatabaseException - */ - public function decrement(string $column, int $value = 1) - { - $column = $this->db->protectIdentifiers($column); - - $sql = $this->_update($this->QBFrom[0], [$column => "to_number({$column}, '9999999') - {$value}"]); - - if (! $this->testMode) { - $this->resetWrite(); - - return $this->db->query($sql, $this->binds, false); - } - - return true; - } - - /** - * Compiles an replace into string and runs the query. - * Because PostgreSQL doesn't support the replace into command, - * we simply do a DELETE and an INSERT on the first key/value - * combo, assuming that it's either the primary key or a unique key. - * - * @param array|null $set An associative array of insert values - * - * @return mixed - * - * @throws DatabaseException - */ - public function replace(?array $set = null) - { - if ($set !== null) { - $this->set($set); - } - - if ($this->QBSet === []) { - if ($this->db->DBDebug) { - throw new DatabaseException('You must use the "set" method to update an entry.'); - } - - return false; // @codeCoverageIgnore - } - - $table = $this->QBFrom[0]; - $set = $this->binds; - - array_walk($set, static function (array &$item) { - $item = $item[0]; - }); - - $key = array_key_first($set); - $value = $set[$key]; - - $builder = $this->db->table($table); - $exists = $builder->where($key, $value, true)->get()->getFirstRow(); - - if (empty($exists) && $this->testMode) { - $result = $this->getCompiledInsert(); - } elseif (empty($exists)) { - $result = $builder->insert($set); - } elseif ($this->testMode) { - $result = $this->where($key, $value, true)->getCompiledUpdate(); - } else { - array_shift($set); - $result = $builder->where($key, $value, true)->update($set); - } - - unset($builder); - $this->resetWrite(); - $this->binds = []; - - return $result; - } - - /** - * Generates a platform-specific insert string from the supplied data - */ - protected function _insert(string $table, array $keys, array $unescapedKeys): string - { - return trim(sprintf('INSERT INTO %s (%s) VALUES (%s) %s', $table, implode(', ', $keys), implode(', ', $unescapedKeys), $this->compileIgnore('insert'))); - } - - /** - * Generates a platform-specific insert string from the supplied data. - */ - protected function _insertBatch(string $table, array $keys, array $values): string - { - $sql = $this->QBOptions['sql'] ?? ''; - - // if this is the first iteration of batch then we need to build skeleton sql - if ($sql === '') { - $sql = 'INSERT INTO ' . $table . '(' . implode(', ', $keys) . ")\n{:_table_:}\n"; - - $sql .= $this->compileIgnore('insert'); - - $this->QBOptions['sql'] = $sql; - } - - if (isset($this->QBOptions['setQueryAsData'])) { - $data = $this->QBOptions['setQueryAsData']; - } else { - $data = 'VALUES ' . implode(', ', $this->formatValues($values)); - } - - return str_replace('{:_table_:}', $data, $sql); - } - - /** - * Compiles a delete string and runs the query - * - * @param mixed $where - * - * @return mixed - * - * @throws DatabaseException - */ - public function delete($where = '', ?int $limit = null, bool $resetData = true) - { - if ($limit !== null && $limit !== 0 || ! empty($this->QBLimit)) { - throw new DatabaseException('PostgreSQL does not allow LIMITs on DELETE queries.'); - } - - return parent::delete($where, $limit, $resetData); - } - - /** - * Generates a platform-specific LIMIT clause. - */ - protected function _limit(string $sql, bool $offsetIgnore = false): string - { - return $sql . ' LIMIT ' . $this->QBLimit . ($this->QBOffset ? " OFFSET {$this->QBOffset}" : ''); - } - - /** - * Generates a platform-specific update string from the supplied data - * - * @throws DatabaseException - */ - protected function _update(string $table, array $values): string - { - if (! empty($this->QBLimit)) { - throw new DatabaseException('Postgres does not support LIMITs with UPDATE queries.'); - } - - $this->QBOrderBy = []; - - return parent::_update($table, $values); - } - - /** - * Generates a platform-specific delete string from the supplied data - */ - protected function _delete(string $table): string - { - $this->QBLimit = false; - - return parent::_delete($table); - } - - /** - * Generates a platform-specific truncate string from the supplied data - * - * If the database does not support the truncate() command, - * then this method maps to 'DELETE FROM table' - */ - protected function _truncate(string $table): string - { - return 'TRUNCATE ' . $table . ' RESTART IDENTITY'; - } - - /** - * Platform independent LIKE statement builder. - * - * In PostgreSQL, the ILIKE operator will perform case insensitive - * searches according to the current locale. - * - * @see https://www.postgresql.org/docs/9.2/static/functions-matching.html - */ - protected function _like_statement(?string $prefix, string $column, ?string $not, string $bind, bool $insensitiveSearch = false): string - { - $op = $insensitiveSearch === true ? 'ILIKE' : 'LIKE'; - - return "{$prefix} {$column} {$not} {$op} :{$bind}:"; - } - - /** - * Generates the JOIN portion of the query - * - * @param RawSql|string $cond - * - * @return BaseBuilder - */ - public function join(string $table, $cond, string $type = '', ?bool $escape = null) - { - if (! in_array('FULL OUTER', $this->joinTypes, true)) { - $this->joinTypes = array_merge($this->joinTypes, ['FULL OUTER']); - } - - return parent::join($table, $cond, $type, $escape); - } - - /** - * Generates a platform-specific batch update string from the supplied data - * - * @used-by batchExecute() - * - * @param string $table Protected table name - * @param list<string> $keys QBKeys - * @param list<list<int|string>> $values QBSet - */ - protected function _updateBatch(string $table, array $keys, array $values): string - { - $sql = $this->QBOptions['sql'] ?? ''; - - // if this is the first iteration of batch then we need to build skeleton sql - if ($sql === '') { - $constraints = $this->QBOptions['constraints'] ?? []; - - if ($constraints === []) { - if ($this->db->DBDebug) { - throw new DatabaseException('You must specify a constraint to match on for batch updates.'); // @codeCoverageIgnore - } - - return ''; // @codeCoverageIgnore - } - - $updateFields = $this->QBOptions['updateFields'] ?? - $this->updateFields($keys, false, $constraints)->QBOptions['updateFields'] ?? - []; - - $alias = $this->QBOptions['alias'] ?? '_u'; - - $sql = 'UPDATE ' . $this->compileIgnore('update') . $table . "\n"; - - $sql .= "SET\n"; - - $that = $this; - $sql .= implode( - ",\n", - array_map( - static fn ($key, $value) => $key . ($value instanceof RawSql ? - ' = ' . $value : - ' = ' . $that->cast($alias . '.' . $value, $that->getFieldType($table, $key))), - array_keys($updateFields), - $updateFields - ) - ) . "\n"; - - $sql .= "FROM (\n{:_table_:}"; - - $sql .= ') ' . $alias . "\n"; - - $sql .= 'WHERE ' . implode( - ' AND ', - array_map( - static function ($key, $value) use ($table, $alias, $that) { - if ($value instanceof RawSql && is_string($key)) { - return $table . '.' . $key . ' = ' . $value; - } - - if ($value instanceof RawSql) { - return $value; - } - - return $table . '.' . $value . ' = ' - . $that->cast($alias . '.' . $value, $that->getFieldType($table, $value)); - }, - array_keys($constraints), - $constraints - ) - ); - - $this->QBOptions['sql'] = $sql; - } - - if (isset($this->QBOptions['setQueryAsData'])) { - $data = $this->QBOptions['setQueryAsData']; - } else { - $data = implode( - " UNION ALL\n", - array_map( - static fn ($value) => 'SELECT ' . implode(', ', array_map( - static fn ($key, $index) => $index . ' ' . $key, - $keys, - $value - )), - $values - ) - ) . "\n"; - } - - return str_replace('{:_table_:}', $data, $sql); - } - - /** - * Returns cast expression. - * - * @TODO move this to BaseBuilder in 4.5.0 - * - * @param float|int|string $expression - */ - private function cast($expression, ?string $type): string - { - return ($type === null) ? $expression : 'CAST(' . $expression . ' AS ' . strtoupper($type) . ')'; - } - - /** - * Returns the filed type from database meta data. - * - * @param string $table Protected table name. - * @param string $fieldName Field name. May be protected. - */ - private function getFieldType(string $table, string $fieldName): ?string - { - $fieldName = trim($fieldName, $this->db->escapeChar); - - if (! isset($this->QBOptions['fieldTypes'][$table])) { - $this->QBOptions['fieldTypes'][$table] = []; - - foreach ($this->db->getFieldData($table) as $field) { - $type = $field->type; - - // If `character` (or `char`) lacks a specifier, it is equivalent - // to `character(1)`. - // See https://www.postgresql.org/docs/current/datatype-character.html - if ($field->type === 'character') { - $type = $field->type . '(' . $field->max_length . ')'; - } - - $this->QBOptions['fieldTypes'][$table][$field->name] = $type; - } - } - - return $this->QBOptions['fieldTypes'][$table][$fieldName] ?? null; - } - - /** - * Generates a platform-specific upsertBatch string from the supplied data - * - * @throws DatabaseException - */ - protected function _upsertBatch(string $table, array $keys, array $values): string - { - $sql = $this->QBOptions['sql'] ?? ''; - - // if this is the first iteration of batch then we need to build skeleton sql - if ($sql === '') { - $fieldNames = array_map(static fn ($columnName) => trim($columnName, '"'), $keys); - - $constraints = $this->QBOptions['constraints'] ?? []; - - if (empty($constraints)) { - $allIndexes = array_filter($this->db->getIndexData($table), static function ($index) use ($fieldNames) { - $hasAllFields = count(array_intersect($index->fields, $fieldNames)) === count($index->fields); - - return ($index->type === 'UNIQUE' || $index->type === 'PRIMARY') && $hasAllFields; - }); - - foreach (array_map(static fn ($index) => $index->fields, $allIndexes) as $index) { - $constraints[] = current($index); - // only one index can be used? - break; - } - - $constraints = $this->onConstraint($constraints)->QBOptions['constraints'] ?? []; - } - - if (empty($constraints)) { - if ($this->db->DBDebug) { - throw new DatabaseException('No constraint found for upsert.'); - } - - return ''; // @codeCoverageIgnore - } - - // in value set - replace null with DEFAULT where constraint is presumed not null - // autoincrement identity field must use DEFAULT and not NULL - // this could be removed in favour of leaving to developer but does make things easier and function like other DBMS - foreach ($constraints as $constraint) { - $key = array_search(trim($constraint, '"'), $fieldNames, true); - - if ($key !== false) { - foreach ($values as $arrayKey => $value) { - if (strtoupper($value[$key]) === 'NULL') { - $values[$arrayKey][$key] = 'DEFAULT'; - } - } - } - } - - $alias = $this->QBOptions['alias'] ?? '"excluded"'; - - if (strtolower($alias) !== '"excluded"') { - throw new InvalidArgumentException('Postgres alias is always named "excluded". A custom alias cannot be used.'); - } - - $updateFields = $this->QBOptions['updateFields'] ?? $this->updateFields($keys, false, $constraints)->QBOptions['updateFields'] ?? []; - - $sql = 'INSERT INTO ' . $table . ' ('; - - $sql .= implode(', ', $keys); - - $sql .= ")\n"; - - $sql .= '{:_table_:}'; - - $sql .= 'ON CONFLICT(' . implode(',', $constraints) . ")\n"; - - $sql .= "DO UPDATE SET\n"; - - $sql .= implode( - ",\n", - array_map( - static fn ($key, $value) => $key . ($value instanceof RawSql ? - " = {$value}" : - " = {$alias}.{$value}"), - array_keys($updateFields), - $updateFields - ) - ); - - $this->QBOptions['sql'] = $sql; - } - - if (isset($this->QBOptions['setQueryAsData'])) { - $data = $this->QBOptions['setQueryAsData']; - } else { - $data = 'VALUES ' . implode(', ', $this->formatValues($values)) . "\n"; - } - - return str_replace('{:_table_:}', $data, $sql); - } - - /** - * Generates a platform-specific batch update string from the supplied data - */ - protected function _deleteBatch(string $table, array $keys, array $values): string - { - $sql = $this->QBOptions['sql'] ?? ''; - - // if this is the first iteration of batch then we need to build skeleton sql - if ($sql === '') { - $constraints = $this->QBOptions['constraints'] ?? []; - - if ($constraints === []) { - if ($this->db->DBDebug) { - throw new DatabaseException('You must specify a constraint to match on for batch deletes.'); // @codeCoverageIgnore - } - - return ''; // @codeCoverageIgnore - } - - $alias = $this->QBOptions['alias'] ?? '_u'; - - $sql = 'DELETE FROM ' . $table . "\n"; - - $sql .= "USING (\n{:_table_:}"; - - $sql .= ') ' . $alias . "\n"; - - $that = $this; - $sql .= 'WHERE ' . implode( - ' AND ', - array_map( - static function ($key, $value) use ($table, $alias, $that) { - if ($value instanceof RawSql) { - return $value; - } - - if (is_string($key)) { - return $table . '.' . $key . ' = ' - . $that->cast( - $alias . '.' . $value, - $that->getFieldType($table, $key) - ); - } - - return $table . '.' . $value . ' = ' . $alias . '.' . $value; - }, - array_keys($constraints), - $constraints - ) - ); - - // convert binds in where - foreach ($this->QBWhere as $key => $where) { - foreach ($this->binds as $field => $bind) { - $this->QBWhere[$key]['condition'] = str_replace(':' . $field . ':', $bind[0], $where['condition']); - } - } - - $sql .= ' ' . str_replace( - 'WHERE ', - 'AND ', - $this->compileWhereHaving('QBWhere') - ); - - $this->QBOptions['sql'] = $sql; - } - - if (isset($this->QBOptions['setQueryAsData'])) { - $data = $this->QBOptions['setQueryAsData']; - } else { - $data = implode( - " UNION ALL\n", - array_map( - static fn ($value) => 'SELECT ' . implode(', ', array_map( - static fn ($key, $index) => $index . ' ' . $key, - $keys, - $value - )), - $values - ) - ) . "\n"; - } - - return str_replace('{:_table_:}', $data, $sql); - } -} diff --git a/system4.4.6/Database/Postgre/Connection.php b/system4.4.6/Database/Postgre/Connection.php deleted file mode 100644 index 64c24adb..00000000 --- a/system4.4.6/Database/Postgre/Connection.php +++ /dev/null @@ -1,586 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\Postgre; - -use CodeIgniter\Database\BaseConnection; -use CodeIgniter\Database\Exceptions\DatabaseException; -use CodeIgniter\Database\RawSql; -use ErrorException; -use PgSql\Connection as PgSqlConnection; -use PgSql\Result as PgSqlResult; -use stdClass; - -/** - * Connection for Postgre - * - * @extends BaseConnection<PgSqlConnection, PgSqlResult> - */ -class Connection extends BaseConnection -{ - /** - * Database driver - * - * @var string - */ - public $DBDriver = 'Postgre'; - - /** - * Database schema - * - * @var string - */ - public $schema = 'public'; - - /** - * Identifier escape character - * - * @var string - */ - public $escapeChar = '"'; - - protected $connect_timeout; - protected $options; - protected $sslmode; - protected $service; - - /** - * Connect to the database. - * - * @return false|resource - * @phpstan-return false|PgSqlConnection - */ - public function connect(bool $persistent = false) - { - if (empty($this->DSN)) { - $this->buildDSN(); - } - - // Convert DSN string - if (mb_strpos($this->DSN, 'pgsql:') === 0) { - $this->convertDSN(); - } - - $this->connID = $persistent === true ? pg_pconnect($this->DSN) : pg_connect($this->DSN); - - if ($this->connID !== false) { - if ($persistent === true && pg_connection_status($this->connID) === PGSQL_CONNECTION_BAD && pg_ping($this->connID) === false - ) { - return false; - } - - if (! empty($this->schema)) { - $this->simpleQuery("SET search_path TO {$this->schema},public"); - } - - if ($this->setClientEncoding($this->charset) === false) { - return false; - } - } - - return $this->connID; - } - - /** - * Converts the DSN with semicolon syntax. - */ - private function convertDSN() - { - // Strip pgsql - $this->DSN = mb_substr($this->DSN, 6); - - // Convert semicolons to spaces in DSN format like: - // pgsql:host=localhost;port=5432;dbname=database_name - // https://www.php.net/manual/en/function.pg-connect.php - $allowedParams = ['host', 'port', 'dbname', 'user', 'password', 'connect_timeout', 'options', 'sslmode', 'service']; - - $parameters = explode(';', $this->DSN); - - $output = ''; - $previousParameter = ''; - - foreach ($parameters as $parameter) { - [$key, $value] = explode('=', $parameter, 2); - if (in_array($key, $allowedParams, true)) { - if ($previousParameter !== '') { - if (array_search($key, $allowedParams, true) < array_search($previousParameter, $allowedParams, true)) { - $output .= ';'; - } else { - $output .= ' '; - } - } - $output .= $parameter; - $previousParameter = $key; - } else { - $output .= ';' . $parameter; - } - } - - $this->DSN = $output; - } - - /** - * Keep or establish the connection if no queries have been sent for - * a length of time exceeding the server's idle timeout. - */ - public function reconnect() - { - if (pg_ping($this->connID) === false) { - $this->connID = false; - } - } - - /** - * Close the database connection. - */ - protected function _close() - { - pg_close($this->connID); - } - - /** - * Select a specific database table to use. - */ - public function setDatabase(string $databaseName): bool - { - return false; - } - - /** - * Returns a string containing the version of the database being used. - */ - public function getVersion(): string - { - if (isset($this->dataCache['version'])) { - return $this->dataCache['version']; - } - - if (! $this->connID) { - $this->initialize(); - } - - $pgVersion = pg_version($this->connID); - $this->dataCache['version'] = isset($pgVersion['server']) ? - (preg_match('/^(\d+\.\d+)/', $pgVersion['server'], $matches) ? $matches[1] : '') : - ''; - - return $this->dataCache['version']; - } - - /** - * Executes the query against the database. - * - * @return false|resource - * @phpstan-return false|PgSqlResult - */ - protected function execute(string $sql) - { - try { - return pg_query($this->connID, $sql); - } catch (ErrorException $e) { - log_message('error', (string) $e); - - if ($this->DBDebug) { - throw new DatabaseException($e->getMessage(), $e->getCode(), $e); - } - } - - return false; - } - - /** - * Get the prefix of the function to access the DB. - */ - protected function getDriverFunctionPrefix(): string - { - return 'pg_'; - } - - /** - * Returns the total number of rows affected by this query. - */ - public function affectedRows(): int - { - return pg_affected_rows($this->resultID); - } - - /** - * "Smart" Escape String - * - * Escapes data based on type - * - * @param array|bool|float|int|object|string|null $str - * - * @return array|float|int|string - * @phpstan-return ($str is array ? array : float|int|string) - */ - public function escape($str) - { - if (! $this->connID) { - $this->initialize(); - } - - /** @psalm-suppress NoValue I don't know why ERROR. */ - if (is_string($str) || (is_object($str) && method_exists($str, '__toString'))) { - if ($str instanceof RawSql) { - return $str->__toString(); - } - - return pg_escape_literal($this->connID, $str); - } - - if (is_bool($str)) { - return $str ? 'TRUE' : 'FALSE'; - } - - /** @psalm-suppress NoValue I don't know why ERROR. */ - return parent::escape($str); - } - - /** - * Platform-dependant string escape - */ - protected function _escapeString(string $str): string - { - if (! $this->connID) { - $this->initialize(); - } - - return pg_escape_string($this->connID, $str); - } - - /** - * Generates the SQL for listing tables in a platform-dependent manner. - * - * @param string|null $tableName If $tableName is provided will return only this table if exists. - */ - protected function _listTables(bool $prefixLimit = false, ?string $tableName = null): string - { - $sql = 'SELECT "table_name" FROM "information_schema"."tables" WHERE "table_schema" = \'' . $this->schema . "'"; - - if ($tableName !== null) { - return $sql . ' AND "table_name" LIKE ' . $this->escape($tableName); - } - - if ($prefixLimit !== false && $this->DBPrefix !== '') { - return $sql . ' AND "table_name" LIKE \'' - . $this->escapeLikeString($this->DBPrefix) . "%' " - . sprintf($this->likeEscapeStr, $this->likeEscapeChar); - } - - return $sql; - } - - /** - * Generates a platform-specific query string so that the column names can be fetched. - */ - protected function _listColumns(string $table = ''): string - { - return 'SELECT "column_name" - FROM "information_schema"."columns" - WHERE LOWER("table_name") = ' - . $this->escape($this->DBPrefix . strtolower($table)) - . ' ORDER BY "ordinal_position"'; - } - - /** - * Returns an array of objects with field data - * - * @return stdClass[] - * - * @throws DatabaseException - */ - protected function _fieldData(string $table): array - { - $sql = 'SELECT "column_name", "data_type", "character_maximum_length", "numeric_precision", "column_default", "is_nullable" - FROM "information_schema"."columns" - WHERE LOWER("table_name") = ' - . $this->escape(strtolower($table)) - . ' ORDER BY "ordinal_position"'; - - if (($query = $this->query($sql)) === false) { - throw new DatabaseException(lang('Database.failGetFieldData')); - } - $query = $query->getResultObject(); - - $retVal = []; - - for ($i = 0, $c = count($query); $i < $c; $i++) { - $retVal[$i] = new stdClass(); - - $retVal[$i]->name = $query[$i]->column_name; - $retVal[$i]->type = $query[$i]->data_type; - $retVal[$i]->max_length = $query[$i]->character_maximum_length > 0 ? $query[$i]->character_maximum_length : $query[$i]->numeric_precision; - $retVal[$i]->nullable = $query[$i]->is_nullable === 'YES'; - $retVal[$i]->default = $query[$i]->column_default; - } - - return $retVal; - } - - /** - * Returns an array of objects with index data - * - * @return stdClass[] - * - * @throws DatabaseException - */ - protected function _indexData(string $table): array - { - $sql = 'SELECT "indexname", "indexdef" - FROM "pg_indexes" - WHERE LOWER("tablename") = ' . $this->escape(strtolower($table)) . ' - AND "schemaname" = ' . $this->escape('public'); - - if (($query = $this->query($sql)) === false) { - throw new DatabaseException(lang('Database.failGetIndexData')); - } - $query = $query->getResultObject(); - - $retVal = []; - - foreach ($query as $row) { - $obj = new stdClass(); - $obj->name = $row->indexname; - $_fields = explode(',', preg_replace('/^.*\((.+?)\)$/', '$1', trim($row->indexdef))); - $obj->fields = array_map(static fn ($v) => trim($v), $_fields); - - if (strpos($row->indexdef, 'CREATE UNIQUE INDEX pk') === 0) { - $obj->type = 'PRIMARY'; - } else { - $obj->type = (strpos($row->indexdef, 'CREATE UNIQUE') === 0) ? 'UNIQUE' : 'INDEX'; - } - - $retVal[$obj->name] = $obj; - } - - return $retVal; - } - - /** - * Returns an array of objects with Foreign key data - * - * @return stdClass[] - * - * @throws DatabaseException - */ - protected function _foreignKeyData(string $table): array - { - $sql = 'SELECT c.constraint_name, - x.table_name, - x.column_name, - y.table_name as foreign_table_name, - y.column_name as foreign_column_name, - c.delete_rule, - c.update_rule, - c.match_option - FROM information_schema.referential_constraints c - JOIN information_schema.key_column_usage x - on x.constraint_name = c.constraint_name - JOIN information_schema.key_column_usage y - on y.ordinal_position = x.position_in_unique_constraint - and y.constraint_name = c.unique_constraint_name - WHERE x.table_name = ' . $this->escape($table) . - 'order by c.constraint_name, x.ordinal_position'; - - if (($query = $this->query($sql)) === false) { - throw new DatabaseException(lang('Database.failGetForeignKeyData')); - } - - $query = $query->getResultObject(); - $indexes = []; - - foreach ($query as $row) { - $indexes[$row->constraint_name]['constraint_name'] = $row->constraint_name; - $indexes[$row->constraint_name]['table_name'] = $table; - $indexes[$row->constraint_name]['column_name'][] = $row->column_name; - $indexes[$row->constraint_name]['foreign_table_name'] = $row->foreign_table_name; - $indexes[$row->constraint_name]['foreign_column_name'][] = $row->foreign_column_name; - $indexes[$row->constraint_name]['on_delete'] = $row->delete_rule; - $indexes[$row->constraint_name]['on_update'] = $row->update_rule; - $indexes[$row->constraint_name]['match'] = $row->match_option; - } - - return $this->foreignKeyDataToObjects($indexes); - } - - /** - * Returns platform-specific SQL to disable foreign key checks. - * - * @return string - */ - protected function _disableForeignKeyChecks() - { - return 'SET CONSTRAINTS ALL DEFERRED'; - } - - /** - * Returns platform-specific SQL to enable foreign key checks. - * - * @return string - */ - protected function _enableForeignKeyChecks() - { - return 'SET CONSTRAINTS ALL IMMEDIATE;'; - } - - /** - * Returns the last error code and message. - * Must return this format: ['code' => string|int, 'message' => string] - * intval(code) === 0 means "no error". - * - * @return array<string, int|string> - */ - public function error(): array - { - return [ - 'code' => '', - 'message' => pg_last_error($this->connID) ?: '', - ]; - } - - /** - * @return int|string - */ - public function insertID() - { - $v = pg_version($this->connID); - // 'server' key is only available since PostgreSQL 7.4 - $v = explode(' ', $v['server'])[0] ?? 0; - - $table = func_num_args() > 0 ? func_get_arg(0) : null; - $column = func_num_args() > 1 ? func_get_arg(1) : null; - - if ($table === null && $v >= '8.1') { - $sql = 'SELECT LASTVAL() AS ins_id'; - } elseif ($table !== null) { - if ($column !== null && $v >= '8.0') { - $sql = "SELECT pg_get_serial_sequence('{$table}', '{$column}') AS seq"; - $query = $this->query($sql); - $query = $query->getRow(); - $seq = $query->seq; - } else { - // seq_name passed in table parameter - $seq = $table; - } - - $sql = "SELECT CURRVAL('{$seq}') AS ins_id"; - } else { - return pg_last_oid($this->resultID); - } - - $query = $this->query($sql); - $query = $query->getRow(); - - return (int) $query->ins_id; - } - - /** - * Build a DSN from the provided parameters - */ - protected function buildDSN() - { - if ($this->DSN !== '') { - $this->DSN = ''; - } - - // If UNIX sockets are used, we shouldn't set a port - if (strpos($this->hostname, '/') !== false) { - $this->port = ''; - } - - if ($this->hostname !== '') { - $this->DSN = "host={$this->hostname} "; - } - - // ctype_digit only accepts strings - $port = (string) $this->port; - - if ($port !== '' && ctype_digit($port)) { - $this->DSN .= "port={$port} "; - } - - if ($this->username !== '') { - $this->DSN .= "user={$this->username} "; - - // An empty password is valid! - // password must be set to null to ignore it. - if ($this->password !== null) { - $this->DSN .= "password='{$this->password}' "; - } - } - - if ($this->database !== '') { - $this->DSN .= "dbname={$this->database} "; - } - - // We don't have these options as elements in our standard configuration - // array, but they might be set by parse_url() if the configuration was - // provided via string> Example: - // - // Postgre://username:password@localhost:5432/database?connect_timeout=5&sslmode=1 - foreach (['connect_timeout', 'options', 'sslmode', 'service'] as $key) { - if (isset($this->{$key}) && is_string($this->{$key}) && $this->{$key} !== '') { - $this->DSN .= "{$key}='{$this->{$key}}' "; - } - } - - $this->DSN = rtrim($this->DSN); - } - - /** - * Set client encoding - */ - protected function setClientEncoding(string $charset): bool - { - return pg_set_client_encoding($this->connID, $charset) === 0; - } - - /** - * Begin Transaction - */ - protected function _transBegin(): bool - { - return (bool) pg_query($this->connID, 'BEGIN'); - } - - /** - * Commit Transaction - */ - protected function _transCommit(): bool - { - return (bool) pg_query($this->connID, 'COMMIT'); - } - - /** - * Rollback Transaction - */ - protected function _transRollback(): bool - { - return (bool) pg_query($this->connID, 'ROLLBACK'); - } - - /** - * Determines if a query is a "write" type. - * - * Overrides BaseConnection::isWriteType, adding additional read query types. - * - * @param string $sql - */ - public function isWriteType($sql): bool - { - if (preg_match('#^(INSERT|UPDATE).*RETURNING\s.+(\,\s?.+)*$#is', $sql)) { - return false; - } - - return parent::isWriteType($sql); - } -} diff --git a/system4.4.6/Database/Postgre/Forge.php b/system4.4.6/Database/Postgre/Forge.php deleted file mode 100644 index 8af1507c..00000000 --- a/system4.4.6/Database/Postgre/Forge.php +++ /dev/null @@ -1,218 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\Postgre; - -use CodeIgniter\Database\Forge as BaseForge; - -/** - * Forge for Postgre - */ -class Forge extends BaseForge -{ - /** - * CHECK DATABASE EXIST statement - * - * @var string - */ - protected $checkDatabaseExistStr = 'SELECT 1 FROM pg_database WHERE datname = ?'; - - /** - * DROP CONSTRAINT statement - * - * @var string - */ - protected $dropConstraintStr = 'ALTER TABLE %s DROP CONSTRAINT %s'; - - /** - * DROP INDEX statement - * - * @var string - */ - protected $dropIndexStr = 'DROP INDEX %s'; - - /** - * UNSIGNED support - * - * @var array - */ - protected $_unsigned = [ - 'INT2' => 'INTEGER', - 'SMALLINT' => 'INTEGER', - 'INT' => 'BIGINT', - 'INT4' => 'BIGINT', - 'INTEGER' => 'BIGINT', - 'INT8' => 'NUMERIC', - 'BIGINT' => 'NUMERIC', - 'REAL' => 'DOUBLE PRECISION', - 'FLOAT' => 'DOUBLE PRECISION', - ]; - - /** - * NULL value representation in CREATE/ALTER TABLE statements - * - * @var string - * - * @internal - */ - protected $null = 'NULL'; - - /** - * @var Connection - */ - protected $db; - - /** - * CREATE TABLE attributes - * - * @param array $attributes Associative array of table attributes - */ - protected function _createTableAttributes(array $attributes): string - { - return ''; - } - - /** - * @param array|string $processedFields Processed column definitions - * or column names to DROP - * - * @return false|list<string>|string SQL string or false - * @phpstan-return ($alterType is 'DROP' ? string : list<string>|false) - */ - protected function _alterTable(string $alterType, string $table, $processedFields) - { - if (in_array($alterType, ['DROP', 'ADD'], true)) { - return parent::_alterTable($alterType, $table, $processedFields); - } - - $sql = 'ALTER TABLE ' . $this->db->escapeIdentifiers($table); - $sqls = []; - - foreach ($processedFields as $field) { - if ($field['_literal'] !== false) { - return false; - } - - if (version_compare($this->db->getVersion(), '8', '>=') && isset($field['type'])) { - $sqls[] = $sql . ' ALTER COLUMN ' . $this->db->escapeIdentifiers($field['name']) - . " TYPE {$field['type']}{$field['length']}"; - } - - if (! empty($field['default'])) { - $sqls[] = $sql . ' ALTER COLUMN ' . $this->db->escapeIdentifiers($field['name']) - . " SET DEFAULT {$field['default']}"; - } - - $nullable = true; // Nullable by default. - if (isset($field['null']) && ($field['null'] === false || $field['null'] === ' NOT ' . $this->null)) { - $nullable = false; - } - $sqls[] = $sql . ' ALTER COLUMN ' . $this->db->escapeIdentifiers($field['name']) - . ($nullable === true ? ' DROP' : ' SET') . ' NOT NULL'; - - if (! empty($field['new_name'])) { - $sqls[] = $sql . ' RENAME COLUMN ' . $this->db->escapeIdentifiers($field['name']) - . ' TO ' . $this->db->escapeIdentifiers($field['new_name']); - } - - if (! empty($field['comment'])) { - $sqls[] = 'COMMENT ON COLUMN' . $this->db->escapeIdentifiers($table) - . '.' . $this->db->escapeIdentifiers($field['name']) - . " IS {$field['comment']}"; - } - } - - return $sqls; - } - - /** - * Process column - */ - protected function _processColumn(array $processedField): string - { - return $this->db->escapeIdentifiers($processedField['name']) - . ' ' . $processedField['type'] . ($processedField['type'] === 'text' ? '' : $processedField['length']) - . $processedField['default'] - . $processedField['null'] - . $processedField['auto_increment'] - . $processedField['unique']; - } - - /** - * Performs a data type mapping between different databases. - */ - protected function _attributeType(array &$attributes) - { - // Reset field lengths for data types that don't support it - if (isset($attributes['CONSTRAINT']) && stripos($attributes['TYPE'], 'int') !== false) { - $attributes['CONSTRAINT'] = null; - } - - switch (strtoupper($attributes['TYPE'])) { - case 'TINYINT': - $attributes['TYPE'] = 'SMALLINT'; - $attributes['UNSIGNED'] = false; - break; - - case 'MEDIUMINT': - $attributes['TYPE'] = 'INTEGER'; - $attributes['UNSIGNED'] = false; - break; - - case 'DATETIME': - $attributes['TYPE'] = 'TIMESTAMP'; - break; - - default: - break; - } - } - - /** - * Field attribute AUTO_INCREMENT - */ - protected function _attributeAutoIncrement(array &$attributes, array &$field) - { - if (! empty($attributes['AUTO_INCREMENT']) && $attributes['AUTO_INCREMENT'] === true) { - $field['type'] = $field['type'] === 'NUMERIC' || $field['type'] === 'BIGINT' ? 'BIGSERIAL' : 'SERIAL'; - } - } - - /** - * Generates a platform-specific DROP TABLE string - */ - protected function _dropTable(string $table, bool $ifExists, bool $cascade): string - { - $sql = parent::_dropTable($table, $ifExists, $cascade); - - if ($cascade === true) { - $sql .= ' CASCADE'; - } - - return $sql; - } - - /** - * Constructs sql to check if key is a constraint. - */ - protected function _dropKeyAsConstraint(string $table, string $constraintName): string - { - return "SELECT con.conname - FROM pg_catalog.pg_constraint con - INNER JOIN pg_catalog.pg_class rel - ON rel.oid = con.conrelid - INNER JOIN pg_catalog.pg_namespace nsp - ON nsp.oid = connamespace - WHERE nsp.nspname = '{$this->db->schema}' - AND rel.relname = '" . trim($table, '"') . "' - AND con.conname = '" . trim($constraintName, '"') . "'"; - } -} diff --git a/system4.4.6/Database/Postgre/PreparedQuery.php b/system4.4.6/Database/Postgre/PreparedQuery.php deleted file mode 100644 index d47b72d6..00000000 --- a/system4.4.6/Database/Postgre/PreparedQuery.php +++ /dev/null @@ -1,127 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\Postgre; - -use BadMethodCallException; -use CodeIgniter\Database\BasePreparedQuery; -use CodeIgniter\Database\Exceptions\DatabaseException; -use Exception; -use PgSql\Connection as PgSqlConnection; -use PgSql\Result as PgSqlResult; - -/** - * Prepared query for Postgre - * - * @extends BasePreparedQuery<PgSqlConnection, PgSqlResult, PgSqlResult> - */ -class PreparedQuery extends BasePreparedQuery -{ - /** - * Stores the name this query can be - * used under by postgres. Only used internally. - * - * @var string - */ - protected $name; - - /** - * The result resource from a successful - * pg_exec. Or false. - * - * @var false|PgSqlResult - */ - protected $result; - - /** - * Prepares the query against the database, and saves the connection - * info necessary to execute the query later. - * - * NOTE: This version is based on SQL code. Child classes should - * override this method. - * - * @param array $options Passed to the connection's prepare statement. - * Unused in the MySQLi driver. - * - * @throws Exception - */ - public function _prepare(string $sql, array $options = []): PreparedQuery - { - $this->name = (string) random_int(1, 10_000_000_000_000_000); - - $sql = $this->parameterize($sql); - - // Update the query object since the parameters are slightly different - // than what was put in. - $this->query->setQuery($sql); - - if (! $this->statement = pg_prepare($this->db->connID, $this->name, $sql)) { - $this->errorCode = 0; - $this->errorString = pg_last_error($this->db->connID); - - if ($this->db->DBDebug) { - throw new DatabaseException($this->errorString . ' code: ' . $this->errorCode); - } - } - - return $this; - } - - /** - * Takes a new set of data and runs it against the currently - * prepared query. Upon success, will return a Results object. - */ - public function _execute(array $data): bool - { - if (! isset($this->statement)) { - throw new BadMethodCallException('You must call prepare before trying to execute a prepared statement.'); - } - - $this->result = pg_execute($this->db->connID, $this->name, $data); - - return (bool) $this->result; - } - - /** - * Returns the result object for the prepared query or false on failure. - * - * @return resource|null - * @phpstan-return PgSqlResult|null - */ - public function _getResult() - { - return $this->result; - } - - /** - * Deallocate prepared statements. - */ - protected function _close(): bool - { - return pg_query($this->db->connID, 'DEALLOCATE "' . $this->db->escapeIdentifiers($this->name) . '"') !== false; - } - - /** - * Replaces the ? placeholders with $1, $2, etc parameters for use - * within the prepared query. - */ - public function parameterize(string $sql): string - { - // Track our current value - $count = 0; - - return preg_replace_callback('/\?/', static function () use (&$count) { - $count++; - - return "\${$count}"; - }, $sql); - } -} diff --git a/system4.4.6/Database/Postgre/Result.php b/system4.4.6/Database/Postgre/Result.php deleted file mode 100644 index 0a828757..00000000 --- a/system4.4.6/Database/Postgre/Result.php +++ /dev/null @@ -1,134 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\Postgre; - -use CodeIgniter\Database\BaseResult; -use CodeIgniter\Entity\Entity; -use PgSql\Connection as PgSqlConnection; -use PgSql\Result as PgSqlResult; -use stdClass; - -/** - * Result for Postgre - * - * @extends BaseResult<PgSqlConnection, PgSqlResult> - */ -class Result extends BaseResult -{ - /** - * Gets the number of fields in the result set. - */ - public function getFieldCount(): int - { - return pg_num_fields($this->resultID); - } - - /** - * Generates an array of column names in the result set. - */ - public function getFieldNames(): array - { - $fieldNames = []; - - for ($i = 0, $c = $this->getFieldCount(); $i < $c; $i++) { - $fieldNames[] = pg_field_name($this->resultID, $i); - } - - return $fieldNames; - } - - /** - * Generates an array of objects representing field meta-data. - */ - public function getFieldData(): array - { - $retVal = []; - - for ($i = 0, $c = $this->getFieldCount(); $i < $c; $i++) { - $retVal[$i] = new stdClass(); - $retVal[$i]->name = pg_field_name($this->resultID, $i); - $retVal[$i]->type = pg_field_type_oid($this->resultID, $i); - $retVal[$i]->type_name = pg_field_type($this->resultID, $i); - $retVal[$i]->max_length = pg_field_size($this->resultID, $i); - $retVal[$i]->length = $retVal[$i]->max_length; - // $retVal[$i]->primary_key = (int)($fieldData[$i]->flags & 2); - // $retVal[$i]->default = $fieldData[$i]->def; - } - - return $retVal; - } - - /** - * Frees the current result. - * - * @return void - */ - public function freeResult() - { - if ($this->resultID !== false) { - pg_free_result($this->resultID); - $this->resultID = false; - } - } - - /** - * Moves the internal pointer to the desired offset. This is called - * internally before fetching results to make sure the result set - * starts at zero. - * - * @return bool - */ - public function dataSeek(int $n = 0) - { - return pg_result_seek($this->resultID, $n); - } - - /** - * Returns the result set as an array. - * - * Overridden by driver classes. - * - * @return array|false - */ - protected function fetchAssoc() - { - return pg_fetch_assoc($this->resultID); - } - - /** - * Returns the result set as an object. - * - * Overridden by child classes. - * - * @return Entity|false|object|stdClass - */ - protected function fetchObject(string $className = 'stdClass') - { - if (is_subclass_of($className, Entity::class)) { - return empty($data = $this->fetchAssoc()) ? false : (new $className())->injectRawData($data); - } - - return pg_fetch_object($this->resultID, null, $className); - } - - /** - * Returns the number of rows in the resultID (i.e., PostgreSQL query result resource) - */ - public function getNumRows(): int - { - if (! is_int($this->numRows)) { - $this->numRows = pg_num_rows($this->resultID); - } - - return $this->numRows; - } -} diff --git a/system4.4.6/Database/Postgre/Utils.php b/system4.4.6/Database/Postgre/Utils.php deleted file mode 100644 index 516104ec..00000000 --- a/system4.4.6/Database/Postgre/Utils.php +++ /dev/null @@ -1,45 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\Postgre; - -use CodeIgniter\Database\BaseUtils; -use CodeIgniter\Database\Exceptions\DatabaseException; - -/** - * Utils for Postgre - */ -class Utils extends BaseUtils -{ - /** - * List databases statement - * - * @var string - */ - protected $listDatabases = 'SELECT datname FROM pg_database'; - - /** - * OPTIMIZE TABLE statement - * - * @var string - */ - protected $optimizeTable = 'REINDEX TABLE %s'; - - /** - * Platform dependent version of the backup function. - * - * @return never - */ - public function _backup(?array $prefs = null) - { - throw new DatabaseException('Unsupported feature of the database platform you are using.'); - } -} diff --git a/system4.4.6/Database/PreparedQueryInterface.php b/system4.4.6/Database/PreparedQueryInterface.php deleted file mode 100644 index b5d00ef1..00000000 --- a/system4.4.6/Database/PreparedQueryInterface.php +++ /dev/null @@ -1,61 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database; - -use BadMethodCallException; - -/** - * @template TConnection - * @template TStatement - * @template TResult - */ -interface PreparedQueryInterface -{ - /** - * Takes a new set of data and runs it against the currently - * prepared query. Upon success, will return a Results object. - * - * @return bool|ResultInterface - * @phpstan-return bool|ResultInterface<TConnection, TResult> - */ - public function execute(...$data); - - /** - * Prepares the query against the database, and saves the connection - * info necessary to execute the query later. - * - * @return $this - */ - public function prepare(string $sql, array $options = []); - - /** - * Explicity closes the statement. - * - * @throws BadMethodCallException - */ - public function close(): bool; - - /** - * Returns the SQL that has been prepared. - */ - public function getQueryString(): string; - - /** - * Returns the error code created while executing this statement. - */ - public function getErrorCode(): int; - - /** - * Returns the error message created while executing this statement. - */ - public function getErrorMessage(): string; -} diff --git a/system4.4.6/Database/Query.php b/system4.4.6/Database/Query.php deleted file mode 100644 index a78190a2..00000000 --- a/system4.4.6/Database/Query.php +++ /dev/null @@ -1,427 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database; - -/** - * Query builder - */ -class Query implements QueryInterface -{ - /** - * The query string, as provided by the user. - * - * @var string - */ - protected $originalQueryString; - - /** - * The query string if table prefix has been swapped. - * - * @var string|null - */ - protected $swappedQueryString; - - /** - * The final query string after binding, etc. - * - * @var string|null - */ - protected $finalQueryString; - - /** - * The binds and their values used for binding. - * - * @var array - */ - protected $binds = []; - - /** - * Bind marker - * - * Character used to identify values in a prepared statement. - * - * @var string - */ - protected $bindMarker = '?'; - - /** - * The start time in seconds with microseconds - * for when this query was executed. - * - * @var float|string - */ - protected $startTime; - - /** - * The end time in seconds with microseconds - * for when this query was executed. - * - * @var float - */ - protected $endTime; - - /** - * The error code, if any. - * - * @var int - */ - protected $errorCode; - - /** - * The error message, if any. - * - * @var string - */ - protected $errorString; - - /** - * Pointer to database connection. - * Mainly for escaping features. - * - * @var ConnectionInterface - */ - public $db; - - public function __construct(ConnectionInterface $db) - { - $this->db = $db; - } - - /** - * Sets the raw query string to use for this statement. - * - * @param mixed $binds - * - * @return $this - */ - public function setQuery(string $sql, $binds = null, bool $setEscape = true) - { - $this->originalQueryString = $sql; - unset($this->swappedQueryString); - - if ($binds !== null) { - if (! is_array($binds)) { - $binds = [$binds]; - } - - if ($setEscape) { - array_walk($binds, static function (&$item) { - $item = [ - $item, - true, - ]; - }); - } - $this->binds = $binds; - } - - unset($this->finalQueryString); - - return $this; - } - - /** - * Will store the variables to bind into the query later. - * - * @return $this - */ - public function setBinds(array $binds, bool $setEscape = true) - { - if ($setEscape) { - array_walk($binds, static function (&$item) { - $item = [$item, true]; - }); - } - - $this->binds = $binds; - - unset($this->finalQueryString); - - return $this; - } - - /** - * Returns the final, processed query string after binding, etal - * has been performed. - */ - public function getQuery(): string - { - if (empty($this->finalQueryString)) { - $this->compileBinds(); - } - - return $this->finalQueryString; - } - - /** - * Records the execution time of the statement using microtime(true) - * for it's start and end values. If no end value is present, will - * use the current time to determine total duration. - * - * @return $this - */ - public function setDuration(float $start, ?float $end = null) - { - $this->startTime = $start; - - if ($end === null) { - $end = microtime(true); - } - - $this->endTime = $end; - - return $this; - } - - /** - * Returns the start time in seconds with microseconds. - * - * @return float|string - */ - public function getStartTime(bool $returnRaw = false, int $decimals = 6) - { - if ($returnRaw) { - return $this->startTime; - } - - return number_format($this->startTime, $decimals); - } - - /** - * Returns the duration of this query during execution, or null if - * the query has not been executed yet. - * - * @param int $decimals The accuracy of the returned time. - */ - public function getDuration(int $decimals = 6): string - { - return number_format(($this->endTime - $this->startTime), $decimals); - } - - /** - * Stores the error description that happened for this query. - * - * @return $this - */ - public function setError(int $code, string $error) - { - $this->errorCode = $code; - $this->errorString = $error; - - return $this; - } - - /** - * Reports whether this statement created an error not. - */ - public function hasError(): bool - { - return ! empty($this->errorString); - } - - /** - * Returns the error code created while executing this statement. - */ - public function getErrorCode(): int - { - return $this->errorCode; - } - - /** - * Returns the error message created while executing this statement. - */ - public function getErrorMessage(): string - { - return $this->errorString; - } - - /** - * Determines if the statement is a write-type query or not. - */ - public function isWriteType(): bool - { - return $this->db->isWriteType($this->originalQueryString); - } - - /** - * Swaps out one table prefix for a new one. - * - * @return $this - */ - public function swapPrefix(string $orig, string $swap) - { - $sql = $this->swappedQueryString ?? $this->originalQueryString; - - $from = '/(\W)' . $orig . '(\S)/'; - $to = '\\1' . $swap . '\\2'; - - $this->swappedQueryString = preg_replace($from, $to, $sql); - - unset($this->finalQueryString); - - return $this; - } - - /** - * Returns the original SQL that was passed into the system. - */ - public function getOriginalQuery(): string - { - return $this->originalQueryString; - } - - /** - * Escapes and inserts any binds into the finalQueryString property. - * - * @see https://regex101.com/r/EUEhay/5 - */ - protected function compileBinds() - { - $sql = $this->swappedQueryString ?? $this->originalQueryString; - $binds = $this->binds; - - if (empty($binds)) { - $this->finalQueryString = $sql; - - return; - } - - if (is_int(array_key_first($binds))) { - $bindCount = count($binds); - $ml = strlen($this->bindMarker); - - $this->finalQueryString = $this->matchSimpleBinds($sql, $binds, $bindCount, $ml); - } else { - // Reverse the binds so that duplicate named binds - // will be processed prior to the original binds. - $binds = array_reverse($binds); - - $this->finalQueryString = $this->matchNamedBinds($sql, $binds); - } - } - - /** - * Match bindings - */ - protected function matchNamedBinds(string $sql, array $binds): string - { - $replacers = []; - - foreach ($binds as $placeholder => $value) { - // $value[1] contains the boolean whether should be escaped or not - $escapedValue = $value[1] ? $this->db->escape($value[0]) : $value[0]; - - // In order to correctly handle backlashes in saved strings - // we will need to preg_quote, so remove the wrapping escape characters - // otherwise it will get escaped. - if (is_array($value[0])) { - $escapedValue = '(' . implode(',', $escapedValue) . ')'; - } - - $replacers[":{$placeholder}:"] = $escapedValue; - } - - return strtr($sql, $replacers); - } - - /** - * Match bindings - */ - protected function matchSimpleBinds(string $sql, array $binds, int $bindCount, int $ml): string - { - if ($c = preg_match_all("/'[^']*'/", $sql, $matches)) { - $c = preg_match_all('/' . preg_quote($this->bindMarker, '/') . '/i', str_replace($matches[0], str_replace($this->bindMarker, str_repeat(' ', $ml), $matches[0]), $sql, $c), $matches, PREG_OFFSET_CAPTURE); - - // Bind values' count must match the count of markers in the query - if ($bindCount !== $c) { - return $sql; - } - } elseif (($c = preg_match_all('/' . preg_quote($this->bindMarker, '/') . '/i', $sql, $matches, PREG_OFFSET_CAPTURE)) !== $bindCount) { - return $sql; - } - - do { - $c--; - $escapedValue = $binds[$c][1] ? $this->db->escape($binds[$c][0]) : $binds[$c][0]; - - if (is_array($escapedValue)) { - $escapedValue = '(' . implode(',', $escapedValue) . ')'; - } - - $sql = substr_replace($sql, $escapedValue, $matches[0][$c][1], $ml); - } while ($c !== 0); - - return $sql; - } - - /** - * Returns string to display in debug toolbar - */ - public function debugToolbarDisplay(): string - { - // Key words we want bolded - static $highlight = [ - 'AND', - 'AS', - 'ASC', - 'AVG', - 'BY', - 'COUNT', - 'DESC', - 'DISTINCT', - 'FROM', - 'GROUP', - 'HAVING', - 'IN', - 'INNER', - 'INSERT', - 'INTO', - 'IS', - 'JOIN', - 'LEFT', - 'LIKE', - 'LIMIT', - 'MAX', - 'MIN', - 'NOT', - 'NULL', - 'OFFSET', - 'ON', - 'OR', - 'ORDER', - 'RIGHT', - 'SELECT', - 'SUM', - 'UPDATE', - 'VALUES', - 'WHERE', - ]; - - $sql = esc($this->getQuery()); - - /** - * @see https://stackoverflow.com/a/20767160 - * @see https://regex101.com/r/hUlrGN/4 - */ - $search = '/\b(?:' . implode('|', $highlight) . ')\b(?![^(')]*'(?:(?:[^(')]*'){2})*[^(')]*$)/'; - - return preg_replace_callback($search, static fn ($matches) => '<strong>' . str_replace(' ', ' ', $matches[0]) . '</strong>', $sql); - } - - /** - * Return text representation of the query - */ - public function __toString(): string - { - return $this->getQuery(); - } -} diff --git a/system4.4.6/Database/QueryInterface.php b/system4.4.6/Database/QueryInterface.php deleted file mode 100644 index 4f40f004..00000000 --- a/system4.4.6/Database/QueryInterface.php +++ /dev/null @@ -1,87 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database; - -/** - * Interface QueryInterface - * - * Represents a single statement that can be executed against the database. - * Statements are platform-specific and can handle binding of binds. - */ -interface QueryInterface -{ - /** - * Sets the raw query string to use for this statement. - * - * @param mixed $binds - * - * @return mixed - */ - public function setQuery(string $sql, $binds = null, bool $setEscape = true); - - /** - * Returns the final, processed query string after binding, etal - * has been performed. - * - * @return mixed - */ - public function getQuery(); - - /** - * Records the execution time of the statement using microtime(true) - * for it's start and end values. If no end value is present, will - * use the current time to determine total duration. - * - * @return mixed - */ - public function setDuration(float $start, ?float $end = null); - - /** - * Returns the duration of this query during execution, or null if - * the query has not been executed yet. - * - * @param int $decimals The accuracy of the returned time. - */ - public function getDuration(int $decimals = 6): string; - - /** - * Stores the error description that happened for this query. - */ - public function setError(int $code, string $error); - - /** - * Reports whether this statement created an error not. - */ - public function hasError(): bool; - - /** - * Returns the error code created while executing this statement. - */ - public function getErrorCode(): int; - - /** - * Returns the error message created while executing this statement. - */ - public function getErrorMessage(): string; - - /** - * Determines if the statement is a write-type query or not. - */ - public function isWriteType(): bool; - - /** - * Swaps out one table prefix for a new one. - * - * @return mixed - */ - public function swapPrefix(string $orig, string $swap); -} diff --git a/system4.4.6/Database/RawSql.php b/system4.4.6/Database/RawSql.php deleted file mode 100644 index efa97d30..00000000 --- a/system4.4.6/Database/RawSql.php +++ /dev/null @@ -1,52 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database; - -/** - * @see \CodeIgniter\Database\RawSqlTest - */ -class RawSql -{ - /** - * @var string Raw SQL string - */ - private string $string; - - public function __construct(string $sqlString) - { - $this->string = $sqlString; - } - - public function __toString(): string - { - return $this->string; - } - - /** - * Create new instance with new SQL string - */ - public function with(string $newSqlString): self - { - $new = clone $this; - $new->string = $newSqlString; - - return $new; - } - - /** - * Returns unique id for binding key - */ - public function getBindingKey(): string - { - return 'RawSql' . spl_object_id($this); - } -} diff --git a/system4.4.6/Database/ResultInterface.php b/system4.4.6/Database/ResultInterface.php deleted file mode 100644 index ea5f0de2..00000000 --- a/system4.4.6/Database/ResultInterface.php +++ /dev/null @@ -1,182 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database; - -use stdClass; - -/** - * @template TConnection - * @template TResult - */ -interface ResultInterface -{ - /** - * Retrieve the results of the query. Typically an array of - * individual data rows, which can be either an 'array', an - * 'object', or a custom class name. - * - * @param string $type The row type. Either 'array', 'object', or a class name to use - */ - public function getResult(string $type = 'object'): array; - - /** - * Returns the results as an array of custom objects. - * - * @param string $className The name of the class to use. - * - * @return array - */ - public function getCustomResultObject(string $className); - - /** - * Returns the results as an array of arrays. - * - * If no results, an empty array is returned. - */ - public function getResultArray(): array; - - /** - * Returns the results as an array of objects. - * - * If no results, an empty array is returned. - */ - public function getResultObject(): array; - - /** - * Wrapper object to return a row as either an array, an object, or - * a custom class. - * - * If the row doesn't exist, returns null. - * - * @template T of object - * - * @param int|string $n The index of the results to return, or column name. - * @param string $type The type of result object. 'array', 'object' or class name. - * @phpstan-param class-string<T>|'array'|'object' $type - * - * @return array|object|stdClass|null - * @phpstan-return ($type is 'object' ? stdClass|null : ($type is 'array' ? array|null : T|null)) - */ - public function getRow($n = 0, string $type = 'object'); - - /** - * Returns a row as a custom class instance. - * - * If the row doesn't exist, returns null. - * - * @template T of object - * - * @param int $n The index of the results to return. - * @phpstan-param class-string<T> $className - * - * @return object|null - * @phpstan-return T|null - */ - public function getCustomRowObject(int $n, string $className); - - /** - * Returns a single row from the results as an array. - * - * If row doesn't exist, returns null. - * - * @return array|null - */ - public function getRowArray(int $n = 0); - - /** - * Returns a single row from the results as an object. - * - * If row doesn't exist, returns null. - * - * @return object|stdClass|null - */ - public function getRowObject(int $n = 0); - - /** - * Assigns an item into a particular column slot. - * - * @param array|string $key - * @param array|object|stdClass|null $value - * - * @return void - */ - public function setRow($key, $value = null); - - /** - * Returns the "first" row of the current results. - * - * @return array|object|null - */ - public function getFirstRow(string $type = 'object'); - - /** - * Returns the "last" row of the current results. - * - * @return array|object|null - */ - public function getLastRow(string $type = 'object'); - - /** - * Returns the "next" row of the current results. - * - * @return array|object|null - */ - public function getNextRow(string $type = 'object'); - - /** - * Returns the "previous" row of the current results. - * - * @return array|object|null - */ - public function getPreviousRow(string $type = 'object'); - - /** - * Returns number of rows in the result set. - */ - public function getNumRows(): int; - - /** - * Returns an unbuffered row and move the pointer to the next row. - * - * @return array|object|null - */ - public function getUnbufferedRow(string $type = 'object'); - - /** - * Gets the number of fields in the result set. - */ - public function getFieldCount(): int; - - /** - * Generates an array of column names in the result set. - */ - public function getFieldNames(): array; - - /** - * Generates an array of objects representing field meta-data. - */ - public function getFieldData(): array; - - /** - * Frees the current result. - */ - public function freeResult(); - - /** - * Moves the internal pointer to the desired offset. This is called - * internally before fetching results to make sure the result set - * starts at zero. - * - * @return bool - */ - public function dataSeek(int $n = 0); -} diff --git a/system4.4.6/Database/SQLSRV/Builder.php b/system4.4.6/Database/SQLSRV/Builder.php deleted file mode 100644 index c86e8263..00000000 --- a/system4.4.6/Database/SQLSRV/Builder.php +++ /dev/null @@ -1,775 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\SQLSRV; - -use CodeIgniter\Database\BaseBuilder; -use CodeIgniter\Database\Exceptions\DatabaseException; -use CodeIgniter\Database\Exceptions\DataException; -use CodeIgniter\Database\RawSql; -use CodeIgniter\Database\ResultInterface; - -/** - * Builder for SQLSRV - * - * @todo auto check for TextCastToInt - * @todo auto check for InsertIndexValue - * @todo replace: delete index entries before insert - */ -class Builder extends BaseBuilder -{ - /** - * ORDER BY random keyword - * - * @var array - */ - protected $randomKeyword = [ - 'NEWID()', - 'RAND(%d)', - ]; - - /** - * Quoted identifier flag - * - * Whether to use SQL-92 standard quoted identifier - * (double quotes) or brackets for identifier escaping. - * - * @var bool - */ - protected $_quoted_identifier = true; - - /** - * Handle increment/decrement on text - * - * @var bool - */ - public $castTextToInt = true; - - /** - * Handle IDENTITY_INSERT property/ - * - * @var bool - */ - public $keyPermission = false; - - /** - * Groups tables in FROM clauses if needed, so there is no confusion - * about operator precedence. - */ - protected function _fromTables(): string - { - $from = []; - - foreach ($this->QBFrom as $value) { - $from[] = strpos($value, '(SELECT') === 0 ? $value : $this->getFullName($value); - } - - return implode(', ', $from); - } - - /** - * Generates a platform-specific truncate string from the supplied data - * - * If the database does not support the truncate() command, - * then this method maps to 'DELETE FROM table' - */ - protected function _truncate(string $table): string - { - return 'TRUNCATE TABLE ' . $this->getFullName($table); - } - - /** - * Generates the JOIN portion of the query - * - * @param RawSql|string $cond - * - * @return $this - */ - public function join(string $table, $cond, string $type = '', ?bool $escape = null) - { - if ($type !== '') { - $type = strtoupper(trim($type)); - - if (! in_array($type, $this->joinTypes, true)) { - $type = ''; - } else { - $type .= ' '; - } - } - - // Extract any aliases that might exist. We use this information - // in the protectIdentifiers to know whether to add a table prefix - $this->trackAliases($table); - - if (! is_bool($escape)) { - $escape = $this->db->protectIdentifiers; - } - - if (! $this->hasOperator($cond)) { - $cond = ' USING (' . ($escape ? $this->db->escapeIdentifiers($cond) : $cond) . ')'; - } elseif ($escape === false) { - $cond = ' ON ' . $cond; - } else { - // Split multiple conditions - if (preg_match_all('/\sAND\s|\sOR\s/i', $cond, $joints, PREG_OFFSET_CAPTURE)) { - $conditions = []; - $joints = $joints[0]; - array_unshift($joints, ['', 0]); - - for ($i = count($joints) - 1, $pos = strlen($cond); $i >= 0; $i--) { - $joints[$i][1] += strlen($joints[$i][0]); // offset - $conditions[$i] = substr($cond, $joints[$i][1], $pos - $joints[$i][1]); - $pos = $joints[$i][1] - strlen($joints[$i][0]); - $joints[$i] = $joints[$i][0]; - } - - ksort($conditions); - } else { - $conditions = [$cond]; - $joints = ['']; - } - - $cond = ' ON '; - - foreach ($conditions as $i => $condition) { - $operator = $this->getOperator($condition); - - $cond .= $joints[$i]; - $cond .= preg_match('/(\(*)?([\[\]\w\.\'-]+)' . preg_quote($operator, '/') . '(.*)/i', $condition, $match) ? $match[1] . $this->db->protectIdentifiers($match[2]) . $operator . $this->db->protectIdentifiers($match[3]) : $condition; - } - } - - // Do we want to escape the table name? - if ($escape === true) { - $table = $this->db->protectIdentifiers($table, true, null, false); - } - - // Assemble the JOIN statement - $this->QBJoin[] = $type . 'JOIN ' . $this->getFullName($table) . $cond; - - return $this; - } - - /** - * Generates a platform-specific insert string from the supplied data - * - * @todo implement check for this instead static $insertKeyPermission - */ - protected function _insert(string $table, array $keys, array $unescapedKeys): string - { - $fullTableName = $this->getFullName($table); - - // insert statement - $statement = 'INSERT INTO ' . $fullTableName . ' (' . implode(',', $keys) . ') VALUES (' . implode(', ', $unescapedKeys) . ')'; - - return $this->keyPermission ? $this->addIdentity($fullTableName, $statement) : $statement; - } - - /** - * Insert batch statement - * - * Generates a platform-specific insert string from the supplied data. - */ - protected function _insertBatch(string $table, array $keys, array $values): string - { - $sql = $this->QBOptions['sql'] ?? ''; - - // if this is the first iteration of batch then we need to build skeleton sql - if ($sql === '') { - $sql = 'INSERT ' . $this->compileIgnore('insert') . 'INTO ' . $this->getFullName($table) - . ' (' . implode(', ', $keys) . ")\n{:_table_:}"; - - $this->QBOptions['sql'] = $sql; - } - - if (isset($this->QBOptions['setQueryAsData'])) { - $data = $this->QBOptions['setQueryAsData']; - } else { - $data = 'VALUES ' . implode(', ', $this->formatValues($values)); - } - - return str_replace('{:_table_:}', $data, $sql); - } - - /** - * Generates a platform-specific update string from the supplied data - */ - protected function _update(string $table, array $values): string - { - $valstr = []; - - foreach ($values as $key => $val) { - $valstr[] = $key . ' = ' . $val; - } - - $fullTableName = $this->getFullName($table); - - $statement = sprintf('UPDATE %s%s SET ', empty($this->QBLimit) ? '' : 'TOP(' . $this->QBLimit . ') ', $fullTableName); - - $statement .= implode(', ', $valstr) - . $this->compileWhereHaving('QBWhere') - . $this->compileOrderBy(); - - return $this->keyPermission ? $this->addIdentity($fullTableName, $statement) : $statement; - } - - /** - * Increments a numeric column by the specified value. - * - * @return bool - */ - public function increment(string $column, int $value = 1) - { - $column = $this->db->protectIdentifiers($column); - - if ($this->castTextToInt) { - $values = [$column => "CONVERT(VARCHAR(MAX),CONVERT(INT,CONVERT(VARCHAR(MAX), {$column})) + {$value})"]; - } else { - $values = [$column => "{$column} + {$value}"]; - } - - $sql = $this->_update($this->QBFrom[0], $values); - - if (! $this->testMode) { - $this->resetWrite(); - - return $this->db->query($sql, $this->binds, false); - } - - return true; - } - - /** - * Decrements a numeric column by the specified value. - * - * @return bool - */ - public function decrement(string $column, int $value = 1) - { - $column = $this->db->protectIdentifiers($column); - - if ($this->castTextToInt) { - $values = [$column => "CONVERT(VARCHAR(MAX),CONVERT(INT,CONVERT(VARCHAR(MAX), {$column})) - {$value})"]; - } else { - $values = [$column => "{$column} + {$value}"]; - } - - $sql = $this->_update($this->QBFrom[0], $values); - - if (! $this->testMode) { - $this->resetWrite(); - - return $this->db->query($sql, $this->binds, false); - } - - return true; - } - - /** - * Get full name of the table - */ - private function getFullName(string $table): string - { - $alias = ''; - - if (strpos($table, ' ') !== false) { - $alias = explode(' ', $table); - $table = array_shift($alias); - $alias = ' ' . implode(' ', $alias); - } - - if ($this->db->escapeChar === '"') { - return '"' . $this->db->getDatabase() . '"."' . $this->db->schema . '"."' . str_replace('"', '', $table) . '"' . $alias; - } - - return '[' . $this->db->getDatabase() . '].[' . $this->db->schema . '].[' . str_replace('"', '', $table) . ']' . str_replace('"', '', $alias); - } - - /** - * Add permision statements for index value inserts - */ - private function addIdentity(string $fullTable, string $insert): string - { - return 'SET IDENTITY_INSERT ' . $fullTable . " ON\n" . $insert . "\nSET IDENTITY_INSERT " . $fullTable . ' OFF'; - } - - /** - * Local implementation of limit - */ - protected function _limit(string $sql, bool $offsetIgnore = false): string - { - if (empty($this->QBOrderBy)) { - $sql .= ' ORDER BY (SELECT NULL) '; - } - - if ($offsetIgnore) { - $sql .= ' OFFSET 0 '; - } else { - $sql .= is_int($this->QBOffset) ? ' OFFSET ' . $this->QBOffset : ' OFFSET 0 '; - } - - return $sql . ' ROWS FETCH NEXT ' . $this->QBLimit . ' ROWS ONLY '; - } - - /** - * Compiles a replace into string and runs the query - * - * @return mixed - * - * @throws DatabaseException - */ - public function replace(?array $set = null) - { - if ($set !== null) { - $this->set($set); - } - - if ($this->QBSet === []) { - if ($this->db->DBDebug) { - throw new DatabaseException('You must use the "set" method to update an entry.'); - } - - return false; // @codeCoverageIgnore - } - - $table = $this->QBFrom[0]; - - $sql = $this->_replace($table, array_keys($this->QBSet), array_values($this->QBSet)); - - $this->resetWrite(); - - if ($this->testMode) { - return $sql; - } - - $this->db->simpleQuery('SET IDENTITY_INSERT ' . $this->getFullName($table) . ' ON'); - - $result = $this->db->query($sql, $this->binds, false); - $this->db->simpleQuery('SET IDENTITY_INSERT ' . $this->getFullName($table) . ' OFF'); - - return $result; - } - - /** - * Generates a platform-specific replace string from the supplied data - * on match delete and insert - */ - protected function _replace(string $table, array $keys, array $values): string - { - // check whether the existing keys are part of the primary key. - // if so then use them for the "ON" part and exclude them from the $values and $keys - $pKeys = $this->db->getIndexData($table); - $keyFields = []; - - foreach ($pKeys as $key) { - if ($key->type === 'PRIMARY') { - $keyFields = array_merge($keyFields, $key->fields); - } - - if ($key->type === 'UNIQUE') { - $keyFields = array_merge($keyFields, $key->fields); - } - } - - // Get the unique field names - $escKeyFields = array_map(fn (string $field): string => $this->db->protectIdentifiers($field), array_values(array_unique($keyFields))); - - // Get the binds - $binds = $this->binds; - array_walk($binds, static function (&$item) { - $item = $item[0]; - }); - - // Get the common field and values from the keys data and index fields - $common = array_intersect($keys, $escKeyFields); - $bingo = []; - - foreach ($common as $v) { - $k = array_search($v, $keys, true); - - $bingo[$keys[$k]] = $binds[trim($values[$k], ':')]; - } - - // Querying existing data - $builder = $this->db->table($table); - - foreach ($bingo as $k => $v) { - $builder->where($k, $v); - } - - $q = $builder->get()->getResult(); - - // Delete entries if we find them - if ($q !== []) { - $delete = $this->db->table($table); - - foreach ($bingo as $k => $v) { - $delete->where($k, $v); - } - - $delete->delete(); - } - - return sprintf('INSERT INTO %s (%s) VALUES (%s);', $this->getFullName($table), implode(',', $keys), implode(',', $values)); - } - - /** - * SELECT [MAX|MIN|AVG|SUM|COUNT]() - * - * Handle float return value - * - * @return BaseBuilder - */ - protected function maxMinAvgSum(string $select = '', string $alias = '', string $type = 'MAX') - { - // int functions can be handled by parent - if ($type !== 'AVG') { - return parent::maxMinAvgSum($select, $alias, $type); - } - - if ($select === '') { - throw DataException::forEmptyInputGiven('Select'); - } - - if (strpos($select, ',') !== false) { - throw DataException::forInvalidArgument('Column name not separated by comma'); - } - - if ($alias === '') { - $alias = $this->createAliasFromTable(trim($select)); - } - - $sql = $type . '( CAST( ' . $this->db->protectIdentifiers(trim($select)) . ' AS FLOAT ) ) AS ' . $this->db->escapeIdentifiers(trim($alias)); - - $this->QBSelect[] = $sql; - $this->QBNoEscape[] = null; - - return $this; - } - - /** - * "Count All" query - * - * Generates a platform-specific query string that counts all records in - * the particular table - * - * @param bool $reset Are we want to clear query builder values? - * - * @return int|string when $test = true - */ - public function countAll(bool $reset = true) - { - $table = $this->QBFrom[0]; - - $sql = $this->countString . $this->db->escapeIdentifiers('numrows') . ' FROM ' . $this->getFullName($table); - - if ($this->testMode) { - return $sql; - } - - $query = $this->db->query($sql, null, false); - if (empty($query->getResult())) { - return 0; - } - - $query = $query->getRow(); - - if ($reset === true) { - $this->resetSelect(); - } - - return (int) $query->numrows; - } - - /** - * Delete statement - */ - protected function _delete(string $table): string - { - return 'DELETE' . (empty($this->QBLimit) ? '' : ' TOP (' . $this->QBLimit . ') ') . ' FROM ' . $this->getFullName($table) . $this->compileWhereHaving('QBWhere'); - } - - /** - * Compiles a delete string and runs the query - * - * @param mixed $where - * - * @return mixed - * - * @throws DatabaseException - */ - public function delete($where = '', ?int $limit = null, bool $resetData = true) - { - $table = $this->db->protectIdentifiers($this->QBFrom[0], true, null, false); - - if ($where !== '') { - $this->where($where); - } - - if ($this->QBWhere === []) { - if ($this->db->DBDebug) { - throw new DatabaseException('Deletes are not allowed unless they contain a "where" or "like" clause.'); - } - - return false; // @codeCoverageIgnore - } - - if ($limit !== null && $limit !== 0) { - $this->QBLimit = $limit; - } - - $sql = $this->_delete($table); - - if ($resetData) { - $this->resetWrite(); - } - - return $this->testMode ? $sql : $this->db->query($sql, $this->binds, false); - } - - /** - * Compile the SELECT statement - * - * Generates a query string based on which functions were used. - * - * @param bool $selectOverride - */ - protected function compileSelect($selectOverride = false): string - { - // Write the "select" portion of the query - if ($selectOverride !== false) { - $sql = $selectOverride; - } else { - $sql = (! $this->QBDistinct) ? 'SELECT ' : 'SELECT DISTINCT '; - - // SQL Server can't work with select * if group by is specified - if (empty($this->QBSelect) && $this->QBGroupBy !== [] && is_array($this->QBGroupBy)) { - foreach ($this->QBGroupBy as $field) { - $this->QBSelect[] = is_array($field) ? $field['field'] : $field; - } - } - - if (empty($this->QBSelect)) { - $sql .= '*'; - } else { - // Cycle through the "select" portion of the query and prep each column name. - // The reason we protect identifiers here rather than in the select() function - // is because until the user calls the from() function we don't know if there are aliases - foreach ($this->QBSelect as $key => $val) { - $noEscape = $this->QBNoEscape[$key] ?? null; - $this->QBSelect[$key] = $this->db->protectIdentifiers($val, false, $noEscape); - } - - $sql .= implode(', ', $this->QBSelect); - } - } - - // Write the "FROM" portion of the query - if ($this->QBFrom !== []) { - $sql .= "\nFROM " . $this->_fromTables(); - } - - // Write the "JOIN" portion of the query - if (! empty($this->QBJoin)) { - $sql .= "\n" . implode("\n", $this->QBJoin); - } - - $sql .= $this->compileWhereHaving('QBWhere') - . $this->compileGroupBy() - . $this->compileWhereHaving('QBHaving') - . $this->compileOrderBy(); // ORDER BY - - // LIMIT - if ($this->QBLimit) { - $sql = $this->_limit($sql . "\n"); - } - - return $this->unionInjection($sql); - } - - /** - * Compiles the select statement based on the other functions called - * and runs the query - * - * @return ResultInterface - */ - public function get(?int $limit = null, int $offset = 0, bool $reset = true) - { - if ($limit !== null) { - $this->limit($limit, $offset); - } - - $result = $this->testMode ? $this->getCompiledSelect($reset) : $this->db->query($this->compileSelect(), $this->binds, false); - - if ($reset) { - $this->resetSelect(); - - // Clear our binds so we don't eat up memory - $this->binds = []; - } - - return $result; - } - - /** - * Generates a platform-specific upsertBatch string from the supplied data - * - * @throws DatabaseException - */ - protected function _upsertBatch(string $table, array $keys, array $values): string - { - $sql = $this->QBOptions['sql'] ?? ''; - - // if this is the first iteration of batch then we need to build skeleton sql - if ($sql === '') { - $fullTableName = $this->getFullName($table); - - $constraints = $this->QBOptions['constraints'] ?? []; - - $tableIdentity = $this->QBOptions['tableIdentity'] ?? ''; - $sql = "SELECT name from syscolumns where id = Object_ID('" . $table . "') and colstat = 1"; - if (($query = $this->db->query($sql)) === false) { - throw new DatabaseException('Failed to get table identity'); - } - $query = $query->getResultObject(); - - foreach ($query as $row) { - $tableIdentity = '"' . $row->name . '"'; - } - $this->QBOptions['tableIdentity'] = $tableIdentity; - - $identityInFields = in_array($tableIdentity, $keys, true); - - $fieldNames = array_map(static fn ($columnName) => trim($columnName, '"'), $keys); - - if (empty($constraints)) { - $tableIndexes = $this->db->getIndexData($table); - - $uniqueIndexes = array_filter($tableIndexes, static function ($index) use ($fieldNames) { - $hasAllFields = count(array_intersect($index->fields, $fieldNames)) === count($index->fields); - - return $index->type === 'PRIMARY' && $hasAllFields; - }); - - // if no primary found then look for unique - since indexes have no order - if ($uniqueIndexes === []) { - $uniqueIndexes = array_filter($tableIndexes, static function ($index) use ($fieldNames) { - $hasAllFields = count(array_intersect($index->fields, $fieldNames)) === count($index->fields); - - return $index->type === 'UNIQUE' && $hasAllFields; - }); - } - - // only take first index - foreach ($uniqueIndexes as $index) { - $constraints = $index->fields; - break; - } - - $constraints = $this->onConstraint($constraints)->QBOptions['constraints'] ?? []; - } - - if (empty($constraints)) { - if ($this->db->DBDebug) { - throw new DatabaseException('No constraint found for upsert.'); - } - - return ''; // @codeCoverageIgnore - } - - $alias = $this->QBOptions['alias'] ?? '"_upsert"'; - - $updateFields = $this->QBOptions['updateFields'] ?? $this->updateFields($keys, false, $constraints)->QBOptions['updateFields'] ?? []; - - $sql = 'MERGE INTO ' . $fullTableName . "\nUSING (\n"; - - $sql .= '{:_table_:}'; - - $sql .= ") {$alias} ("; - - $sql .= implode(', ', $keys); - - $sql .= ')'; - - $sql .= "\nON ("; - - $sql .= implode( - ' AND ', - array_map( - static fn ($key, $value) => ( - ($value instanceof RawSql && is_string($key)) - ? - $fullTableName . '.' . $key . ' = ' . $value - : - ( - $value instanceof RawSql - ? - $value - : - $fullTableName . '.' . $value . ' = ' . $alias . '.' . $value - ) - ), - array_keys($constraints), - $constraints - ) - ) . ")\n"; - - $sql .= "WHEN MATCHED THEN UPDATE SET\n"; - - $sql .= implode( - ",\n", - array_map( - static fn ($key, $value) => $key . ($value instanceof RawSql ? - ' = ' . $value : - " = {$alias}.{$value}"), - array_keys($updateFields), - $updateFields - ) - ); - - $sql .= "\nWHEN NOT MATCHED THEN INSERT (" . implode(', ', $keys) . ")\nVALUES "; - - $sql .= ( - '(' . implode( - ', ', - array_map( - static fn ($columnName) => $columnName === $tableIdentity - ? "CASE WHEN {$alias}.{$columnName} IS NULL THEN (SELECT " - . 'isnull(IDENT_CURRENT(\'' . $fullTableName . '\')+IDENT_INCR(\'' - . $fullTableName . "'),1)) ELSE {$alias}.{$columnName} END" - : "{$alias}.{$columnName}", - $keys - ) - ) . ');' - ); - - $sql = $identityInFields ? $this->addIdentity($fullTableName, $sql) : $sql; - - $this->QBOptions['sql'] = $sql; - } - - if (isset($this->QBOptions['setQueryAsData'])) { - $data = $this->QBOptions['setQueryAsData']; - } else { - $data = 'VALUES ' . implode(', ', $this->formatValues($values)) . "\n"; - } - - return str_replace('{:_table_:}', $data, $sql); - } - - /** - * Gets column names from a select query - */ - protected function fieldsFromQuery(string $sql): array - { - return $this->db->query('SELECT TOP 1 * FROM (' . $sql . ') _u_')->getFieldNames(); - } -} diff --git a/system4.4.6/Database/SQLSRV/Connection.php b/system4.4.6/Database/SQLSRV/Connection.php deleted file mode 100644 index aa45a4ba..00000000 --- a/system4.4.6/Database/SQLSRV/Connection.php +++ /dev/null @@ -1,563 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\SQLSRV; - -use CodeIgniter\Database\BaseConnection; -use CodeIgniter\Database\Exceptions\DatabaseException; -use stdClass; - -/** - * Connection for SQLSRV - * - * @extends BaseConnection<resource, resource> - */ -class Connection extends BaseConnection -{ - /** - * Database driver - * - * @var string - */ - public $DBDriver = 'SQLSRV'; - - /** - * Database name - * - * @var string - */ - public $database; - - /** - * Scrollable flag - * - * Determines what cursor type to use when executing queries. - * - * FALSE or SQLSRV_CURSOR_FORWARD would increase performance, - * but would disable num_rows() (and possibly insert_id()) - * - * @var false|string - */ - public $scrollable; - - /** - * Identifier escape character - * - * @var string - */ - public $escapeChar = '"'; - - /** - * Database schema - * - * @var string - */ - public $schema = 'dbo'; - - /** - * Quoted identifier flag - * - * Whether to use SQL-92 standard quoted identifier - * (double quotes) or brackets for identifier escaping. - * - * @var bool - */ - protected $_quoted_identifier = true; - - /** - * List of reserved identifiers - * - * Identifiers that must NOT be escaped. - * - * @var string[] - */ - protected $_reserved_identifiers = ['*']; - - /** - * Class constructor - */ - public function __construct(array $params) - { - parent::__construct($params); - - // This is only supported as of SQLSRV 3.0 - if ($this->scrollable === null) { - $this->scrollable = defined('SQLSRV_CURSOR_CLIENT_BUFFERED') ? SQLSRV_CURSOR_CLIENT_BUFFERED : false; - } - } - - /** - * Connect to the database. - * - * @return false|resource - * - * @throws DatabaseException - */ - public function connect(bool $persistent = false) - { - $charset = in_array(strtolower($this->charset), ['utf-8', 'utf8'], true) ? 'UTF-8' : SQLSRV_ENC_CHAR; - - $connection = [ - 'UID' => empty($this->username) ? '' : $this->username, - 'PWD' => empty($this->password) ? '' : $this->password, - 'Database' => $this->database, - 'ConnectionPooling' => $persistent ? 1 : 0, - 'CharacterSet' => $charset, - 'Encrypt' => $this->encrypt === true ? 1 : 0, - 'ReturnDatesAsStrings' => 1, - ]; - - // If the username and password are both empty, assume this is a - // 'Windows Authentication Mode' connection. - if (empty($connection['UID']) && empty($connection['PWD'])) { - unset($connection['UID'], $connection['PWD']); - } - - if (strpos($this->hostname, ',') === false && $this->port !== '') { - $this->hostname .= ', ' . $this->port; - } - - sqlsrv_configure('WarningsReturnAsErrors', 0); - $this->connID = sqlsrv_connect($this->hostname, $connection); - - if ($this->connID !== false) { - // Determine how identifiers are escaped - $query = $this->query('SELECT CASE WHEN (@@OPTIONS | 256) = @@OPTIONS THEN 1 ELSE 0 END AS qi'); - $query = $query->getResultObject(); - - $this->_quoted_identifier = empty($query) ? false : (bool) $query[0]->qi; - $this->escapeChar = ($this->_quoted_identifier) ? '"' : ['[', ']']; - - return $this->connID; - } - - throw new DatabaseException($this->getAllErrorMessages()); - } - - /** - * For exception message - * - * @internal - */ - public function getAllErrorMessages(): string - { - $errors = []; - - foreach (sqlsrv_errors() as $error) { - $errors[] = $error['message'] - . ' SQLSTATE: ' . $error['SQLSTATE'] . ', code: ' . $error['code']; - } - - return implode("\n", $errors); - } - - /** - * Keep or establish the connection if no queries have been sent for - * a length of time exceeding the server's idle timeout. - */ - public function reconnect() - { - $this->close(); - $this->initialize(); - } - - /** - * Close the database connection. - */ - protected function _close() - { - sqlsrv_close($this->connID); - } - - /** - * Platform-dependant string escape - */ - protected function _escapeString(string $str): string - { - return str_replace("'", "''", remove_invisible_characters($str, false)); - } - - /** - * Insert ID - */ - public function insertID(): int - { - return $this->query('SELECT SCOPE_IDENTITY() AS insert_id')->getRow()->insert_id ?? 0; - } - - /** - * Generates the SQL for listing tables in a platform-dependent manner. - * - * @param string|null $tableName If $tableName is provided will return only this table if exists. - */ - protected function _listTables(bool $prefixLimit = false, ?string $tableName = null): string - { - $sql = 'SELECT [TABLE_NAME] AS "name"' - . ' FROM [INFORMATION_SCHEMA].[TABLES] ' - . ' WHERE ' - . " [TABLE_SCHEMA] = '" . $this->schema . "' "; - - if ($tableName !== null) { - return $sql .= ' AND [TABLE_NAME] LIKE ' . $this->escape($tableName); - } - - if ($prefixLimit === true && $this->DBPrefix !== '') { - $sql .= " AND [TABLE_NAME] LIKE '" . $this->escapeLikeString($this->DBPrefix) . "%' " - . sprintf($this->likeEscapeStr, $this->likeEscapeChar); - } - - return $sql; - } - - /** - * Generates a platform-specific query string so that the column names can be fetched. - */ - protected function _listColumns(string $table = ''): string - { - return 'SELECT [COLUMN_NAME] ' - . ' FROM [INFORMATION_SCHEMA].[COLUMNS]' - . ' WHERE [TABLE_NAME] = ' . $this->escape($this->DBPrefix . $table) - . ' AND [TABLE_SCHEMA] = ' . $this->escape($this->schema); - } - - /** - * Returns an array of objects with index data - * - * @return stdClass[] - * - * @throws DatabaseException - */ - protected function _indexData(string $table): array - { - $sql = 'EXEC sp_helpindex ' . $this->escape($this->schema . '.' . $table); - - if (($query = $this->query($sql)) === false) { - throw new DatabaseException(lang('Database.failGetIndexData')); - } - $query = $query->getResultObject(); - - $retVal = []; - - foreach ($query as $row) { - $obj = new stdClass(); - $obj->name = $row->index_name; - - $_fields = explode(',', trim($row->index_keys)); - $obj->fields = array_map(static fn ($v) => trim($v), $_fields); - - if (strpos($row->index_description, 'primary key located on') !== false) { - $obj->type = 'PRIMARY'; - } else { - $obj->type = (strpos($row->index_description, 'nonclustered, unique') !== false) ? 'UNIQUE' : 'INDEX'; - } - - $retVal[$obj->name] = $obj; - } - - return $retVal; - } - - /** - * Returns an array of objects with Foreign key data - * referenced_object_id parent_object_id - * - * @return stdClass[] - * - * @throws DatabaseException - */ - protected function _foreignKeyData(string $table): array - { - $sql = 'SELECT - f.name as constraint_name, - OBJECT_NAME (f.parent_object_id) as table_name, - COL_NAME(fc.parent_object_id,fc.parent_column_id) column_name, - OBJECT_NAME(f.referenced_object_id) foreign_table_name, - COL_NAME(fc.referenced_object_id,fc.referenced_column_id) foreign_column_name, - rc.delete_rule, - rc.update_rule, - rc.match_option - FROM - sys.foreign_keys AS f - INNER JOIN sys.foreign_key_columns AS fc ON f.OBJECT_ID = fc.constraint_object_id - INNER JOIN sys.tables t ON t.OBJECT_ID = fc.referenced_object_id - INNER JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc ON rc.CONSTRAINT_NAME = f.name - WHERE OBJECT_NAME (f.parent_object_id) = ' . $this->escape($table); - - if (($query = $this->query($sql)) === false) { - throw new DatabaseException(lang('Database.failGetForeignKeyData')); - } - - $query = $query->getResultObject(); - $indexes = []; - - foreach ($query as $row) { - $indexes[$row->constraint_name]['constraint_name'] = $row->constraint_name; - $indexes[$row->constraint_name]['table_name'] = $row->table_name; - $indexes[$row->constraint_name]['column_name'][] = $row->column_name; - $indexes[$row->constraint_name]['foreign_table_name'] = $row->foreign_table_name; - $indexes[$row->constraint_name]['foreign_column_name'][] = $row->foreign_column_name; - $indexes[$row->constraint_name]['on_delete'] = $row->delete_rule; - $indexes[$row->constraint_name]['on_update'] = $row->update_rule; - $indexes[$row->constraint_name]['match'] = $row->match_option; - } - - return $this->foreignKeyDataToObjects($indexes); - } - - /** - * Disables foreign key checks temporarily. - * - * @return string - */ - protected function _disableForeignKeyChecks() - { - return 'EXEC sp_MSforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT ALL"'; - } - - /** - * Enables foreign key checks temporarily. - * - * @return string - */ - protected function _enableForeignKeyChecks() - { - return 'EXEC sp_MSforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT ALL"'; - } - - /** - * Returns an array of objects with field data - * - * @return stdClass[] - * - * @throws DatabaseException - */ - protected function _fieldData(string $table): array - { - $sql = 'SELECT - COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, - COLUMN_DEFAULT, IS_NULLABLE - FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_NAME= ' . $this->escape(($table)); - - if (($query = $this->query($sql)) === false) { - throw new DatabaseException(lang('Database.failGetFieldData')); - } - - $query = $query->getResultObject(); - $retVal = []; - - for ($i = 0, $c = count($query); $i < $c; $i++) { - $retVal[$i] = new stdClass(); - - $retVal[$i]->name = $query[$i]->COLUMN_NAME; - $retVal[$i]->type = $query[$i]->DATA_TYPE; - - $retVal[$i]->max_length = $query[$i]->CHARACTER_MAXIMUM_LENGTH > 0 - ? $query[$i]->CHARACTER_MAXIMUM_LENGTH - : $query[$i]->NUMERIC_PRECISION; - - $retVal[$i]->nullable = $query[$i]->IS_NULLABLE !== 'NO'; - $retVal[$i]->default = $query[$i]->COLUMN_DEFAULT; - } - - return $retVal; - } - - /** - * Begin Transaction - */ - protected function _transBegin(): bool - { - return sqlsrv_begin_transaction($this->connID); - } - - /** - * Commit Transaction - */ - protected function _transCommit(): bool - { - return sqlsrv_commit($this->connID); - } - - /** - * Rollback Transaction - */ - protected function _transRollback(): bool - { - return sqlsrv_rollback($this->connID); - } - - /** - * Returns the last error code and message. - * Must return this format: ['code' => string|int, 'message' => string] - * intval(code) === 0 means "no error". - * - * @return array<string, int|string> - */ - public function error(): array - { - $error = [ - 'code' => '00000', - 'message' => '', - ]; - - $sqlsrvErrors = sqlsrv_errors(SQLSRV_ERR_ERRORS); - - if (! is_array($sqlsrvErrors)) { - return $error; - } - - $sqlsrvError = array_shift($sqlsrvErrors); - if (isset($sqlsrvError['SQLSTATE'])) { - $error['code'] = isset($sqlsrvError['code']) ? $sqlsrvError['SQLSTATE'] . '/' . $sqlsrvError['code'] : $sqlsrvError['SQLSTATE']; - } elseif (isset($sqlsrvError['code'])) { - $error['code'] = $sqlsrvError['code']; - } - - if (isset($sqlsrvError['message'])) { - $error['message'] = $sqlsrvError['message']; - } - - return $error; - } - - /** - * Returns the total number of rows affected by this query. - */ - public function affectedRows(): int - { - return sqlsrv_rows_affected($this->resultID); - } - - /** - * Select a specific database table to use. - * - * @return bool - */ - public function setDatabase(?string $databaseName = null) - { - if ($databaseName === null || $databaseName === '') { - $databaseName = $this->database; - } - - if (empty($this->connID)) { - $this->initialize(); - } - - if ($this->execute('USE ' . $this->_escapeString($databaseName))) { - $this->database = $databaseName; - $this->dataCache = []; - - return true; - } - - return false; - } - - /** - * Executes the query against the database. - * - * @return false|resource - */ - protected function execute(string $sql) - { - $stmt = ($this->scrollable === false || $this->isWriteType($sql)) ? - sqlsrv_query($this->connID, $sql) : - sqlsrv_query($this->connID, $sql, [], ['Scrollable' => $this->scrollable]); - - if ($stmt === false) { - $error = $this->error(); - - log_message('error', $error['message']); - - if ($this->DBDebug) { - throw new DatabaseException($error['message']); - } - } - - return $stmt; - } - - /** - * Returns the last error encountered by this connection. - * - * @return array<string, int|string> - * - * @deprecated Use `error()` instead. - */ - public function getError() - { - $error = [ - 'code' => '00000', - 'message' => '', - ]; - - $sqlsrvErrors = sqlsrv_errors(SQLSRV_ERR_ERRORS); - - if (! is_array($sqlsrvErrors)) { - return $error; - } - - $sqlsrvError = array_shift($sqlsrvErrors); - if (isset($sqlsrvError['SQLSTATE'])) { - $error['code'] = isset($sqlsrvError['code']) ? $sqlsrvError['SQLSTATE'] . '/' . $sqlsrvError['code'] : $sqlsrvError['SQLSTATE']; - } elseif (isset($sqlsrvError['code'])) { - $error['code'] = $sqlsrvError['code']; - } - - if (isset($sqlsrvError['message'])) { - $error['message'] = $sqlsrvError['message']; - } - - return $error; - } - - /** - * The name of the platform in use (MySQLi, mssql, etc) - */ - public function getPlatform(): string - { - return $this->DBDriver; - } - - /** - * Returns a string containing the version of the database being used. - */ - public function getVersion(): string - { - $info = []; - if (isset($this->dataCache['version'])) { - return $this->dataCache['version']; - } - - if (! $this->connID || ($info = sqlsrv_server_info($this->connID)) === []) { - $this->initialize(); - } - - return isset($info['SQLServerVersion']) ? $this->dataCache['version'] = $info['SQLServerVersion'] : false; - } - - /** - * Determines if a query is a "write" type. - * - * Overrides BaseConnection::isWriteType, adding additional read query types. - * - * @param string $sql - */ - public function isWriteType($sql): bool - { - if (preg_match('/^\s*"?(EXEC\s*sp_rename)\s/i', $sql)) { - return true; - } - - return parent::isWriteType($sql); - } -} diff --git a/system4.4.6/Database/SQLSRV/Forge.php b/system4.4.6/Database/SQLSRV/Forge.php deleted file mode 100644 index 5dead5b3..00000000 --- a/system4.4.6/Database/SQLSRV/Forge.php +++ /dev/null @@ -1,387 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\SQLSRV; - -use CodeIgniter\Database\BaseConnection; -use CodeIgniter\Database\Forge as BaseForge; - -/** - * Forge for SQLSRV - */ -class Forge extends BaseForge -{ - /** - * DROP CONSTRAINT statement - * - * @var string - */ - protected $dropConstraintStr; - - /** - * DROP INDEX statement - * - * @var string - */ - protected $dropIndexStr; - - /** - * CREATE DATABASE IF statement - * - * @todo missing charset, collat & check for existent - * - * @var string - */ - protected $createDatabaseIfStr = "DECLARE @DBName VARCHAR(255) = '%s'\nDECLARE @SQL VARCHAR(max) = 'IF DB_ID( ''' + @DBName + ''' ) IS NULL CREATE DATABASE ' + @DBName\nEXEC( @SQL )"; - - /** - * CREATE DATABASE IF statement - * - * @todo missing charset & collat - * - * @var string - */ - protected $createDatabaseStr = 'CREATE DATABASE %s '; - - /** - * CHECK DATABASE EXIST statement - * - * @var string - */ - protected $checkDatabaseExistStr = 'IF DB_ID( %s ) IS NOT NULL SELECT 1'; - - /** - * RENAME TABLE statement - * - * While the below statement would work, it returns an error. - * Also MS recommends dropping and dropping and re-creating the table. - * - * @see https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-rename-transact-sql?view=sql-server-2017 - * 'EXEC sp_rename %s , %s ;' - * - * @var string - */ - protected $renameTableStr; - - /** - * UNSIGNED support - * - * @var array - */ - protected $unsigned = [ - 'TINYINT' => 'SMALLINT', - 'SMALLINT' => 'INT', - 'INT' => 'BIGINT', - 'REAL' => 'FLOAT', - ]; - - /** - * Foreign Key Allowed Actions - * - * @var array - */ - protected $fkAllowActions = ['CASCADE', 'SET NULL', 'NO ACTION', 'RESTRICT', 'SET DEFAULT']; - - /** - * CREATE TABLE IF statement - * - * @var string - * - * @deprecated This is no longer used. - */ - protected $createTableIfStr; - - /** - * CREATE TABLE statement - * - * @var string - */ - protected $createTableStr; - - public function __construct(BaseConnection $db) - { - parent::__construct($db); - - $this->createTableStr = '%s ' . $this->db->escapeIdentifiers($this->db->schema) . ".%s (%s\n) "; - $this->renameTableStr = 'EXEC sp_rename [' . $this->db->escapeIdentifiers($this->db->schema) . '.%s] , %s ;'; - - $this->dropConstraintStr = 'ALTER TABLE ' . $this->db->escapeIdentifiers($this->db->schema) . '.%s DROP CONSTRAINT %s'; - $this->dropIndexStr = 'DROP INDEX %s ON ' . $this->db->escapeIdentifiers($this->db->schema) . '.%s'; - } - - /** - * CREATE TABLE attributes - */ - protected function _createTableAttributes(array $attributes): string - { - return ''; - } - - /** - * @param array|string $processedFields Processed column definitions - * or column names to DROP - * - * @return false|list<string>|string SQL string or false - * @phpstan-return ($alterType is 'DROP' ? string : list<string>|false) - */ - protected function _alterTable(string $alterType, string $table, $processedFields) - { - // Handle DROP here - if ($alterType === 'DROP') { - $columnNamesToDrop = $processedFields; - - // check if fields are part of any indexes - $indexData = $this->db->getIndexData($table); - - foreach ($indexData as $index) { - if (is_string($columnNamesToDrop)) { - $columnNamesToDrop = explode(',', $columnNamesToDrop); - } - - $fld = array_intersect($columnNamesToDrop, $index->fields); - - // Drop index if field is part of an index - if ($fld !== []) { - $this->_dropIndex($table, $index); - } - } - - $fullTable = $this->db->escapeIdentifiers($this->db->schema) . '.' . $this->db->escapeIdentifiers($table); - - // Drop default constraints - $fields = implode(',', $this->db->escape((array) $columnNamesToDrop)); - - $sql = <<<SQL - SELECT name - FROM SYS.DEFAULT_CONSTRAINTS - WHERE PARENT_OBJECT_ID = OBJECT_ID('{$fullTable}') - AND PARENT_COLUMN_ID IN ( - SELECT column_id FROM sys.columns WHERE NAME IN ({$fields}) AND object_id = OBJECT_ID(N'{$fullTable}') - ) - SQL; - - foreach ($this->db->query($sql)->getResultArray() as $index) { - $this->db->query('ALTER TABLE ' . $fullTable . ' DROP CONSTRAINT ' . $index['name'] . ''); - } - - $sql = 'ALTER TABLE ' . $fullTable . ' DROP '; - - $fields = array_map(static fn ($item) => 'COLUMN [' . trim($item) . ']', (array) $columnNamesToDrop); - - return $sql . implode(',', $fields); - } - - $sql = 'ALTER TABLE ' . $this->db->escapeIdentifiers($this->db->schema) . '.' . $this->db->escapeIdentifiers($table); - $sql .= ($alterType === 'ADD') ? 'ADD ' : ' '; - - $sqls = []; - - if ($alterType === 'ADD') { - foreach ($processedFields as $field) { - $sqls[] = $sql . ($field['_literal'] !== false ? $field['_literal'] : $this->_processColumn($field)); - } - - return $sqls; - } - - foreach ($processedFields as $field) { - if ($field['_literal'] !== false) { - return false; - } - - if (isset($field['type'])) { - $sqls[] = $sql . ' ALTER COLUMN ' . $this->db->escapeIdentifiers($field['name']) - . " {$field['type']}{$field['length']}"; - } - - if (! empty($field['default'])) { - $sqls[] = $sql . ' ALTER COLUMN ADD CONSTRAINT ' . $this->db->escapeIdentifiers($field['name']) . '_def' - . " DEFAULT {$field['default']} FOR " . $this->db->escapeIdentifiers($field['name']); - } - - $nullable = true; // Nullable by default. - if (isset($field['null']) && ($field['null'] === false || $field['null'] === ' NOT ' . $this->null)) { - $nullable = false; - } - $sqls[] = $sql . ' ALTER COLUMN ' . $this->db->escapeIdentifiers($field['name']) - . " {$field['type']}{$field['length']} " . ($nullable === true ? '' : 'NOT') . ' NULL'; - - if (! empty($field['comment'])) { - $sqls[] = 'EXEC sys.sp_addextendedproperty ' - . "@name=N'Caption', @value=N'" . $field['comment'] . "' , " - . "@level0type=N'SCHEMA',@level0name=N'" . $this->db->schema . "', " - . "@level1type=N'TABLE',@level1name=N'" . $this->db->escapeIdentifiers($table) . "', " - . "@level2type=N'COLUMN',@level2name=N'" . $this->db->escapeIdentifiers($field['name']) . "'"; - } - - if (! empty($field['new_name'])) { - $sqls[] = "EXEC sp_rename '[" . $this->db->schema . '].[' . $table . '].[' . $field['name'] . "]' , '" . $field['new_name'] . "', 'COLUMN';"; - } - } - - return $sqls; - } - - /** - * Drop index for table - * - * @return mixed - */ - protected function _dropIndex(string $table, object $indexData) - { - if ($indexData->type === 'PRIMARY') { - $sql = 'ALTER TABLE [' . $this->db->schema . '].[' . $table . '] DROP [' . $indexData->name . ']'; - } else { - $sql = 'DROP INDEX [' . $indexData->name . '] ON [' . $this->db->schema . '].[' . $table . ']'; - } - - return $this->db->simpleQuery($sql); - } - - /** - * Generates SQL to add indexes - * - * @param bool $asQuery When true returns stand alone SQL, else partial SQL used with CREATE TABLE - */ - protected function _processIndexes(string $table, bool $asQuery = false): array - { - $sqls = []; - - for ($i = 0, $c = count($this->keys); $i < $c; $i++) { - for ($i2 = 0, $c2 = count($this->keys[$i]['fields']); $i2 < $c2; $i2++) { - if (! isset($this->fields[$this->keys[$i]['fields'][$i2]])) { - unset($this->keys[$i]['fields'][$i2]); - } - } - - if (count($this->keys[$i]['fields']) <= 0) { - continue; - } - - $keyName = $this->db->escapeIdentifiers(($this->keys[$i]['keyName'] === '') ? - $table . '_' . implode('_', $this->keys[$i]['fields']) : - $this->keys[$i]['keyName']); - - if (in_array($i, $this->uniqueKeys, true)) { - $sqls[] = 'ALTER TABLE ' - . $this->db->escapeIdentifiers($this->db->schema) . '.' . $this->db->escapeIdentifiers($table) - . ' ADD CONSTRAINT ' . $keyName - . ' UNIQUE (' . implode(', ', $this->db->escapeIdentifiers($this->keys[$i]['fields'])) . ');'; - - continue; - } - - $sqls[] = 'CREATE INDEX ' - . $keyName - . ' ON ' . $this->db->escapeIdentifiers($this->db->schema) . '.' . $this->db->escapeIdentifiers($table) - . ' (' . implode(', ', $this->db->escapeIdentifiers($this->keys[$i]['fields'])) . ');'; - } - - return $sqls; - } - - /** - * Process column - */ - protected function _processColumn(array $processedField): string - { - return $this->db->escapeIdentifiers($processedField['name']) - . (empty($processedField['new_name']) ? '' : ' ' . $this->db->escapeIdentifiers($processedField['new_name'])) - . ' ' . $processedField['type'] . ($processedField['type'] === 'text' ? '' : $processedField['length']) - . $processedField['default'] - . $processedField['null'] - . $processedField['auto_increment'] - . '' - . $processedField['unique']; - } - - /** - * Performs a data type mapping between different databases. - */ - protected function _attributeType(array &$attributes) - { - // Reset field lengths for data types that don't support it - if (isset($attributes['CONSTRAINT']) && stripos($attributes['TYPE'], 'int') !== false) { - $attributes['CONSTRAINT'] = null; - } - - switch (strtoupper($attributes['TYPE'])) { - case 'MEDIUMINT': - $attributes['TYPE'] = 'INTEGER'; - $attributes['UNSIGNED'] = false; - break; - - case 'INTEGER': - $attributes['TYPE'] = 'INT'; - break; - - case 'ENUM': - $attributes['TYPE'] = 'TEXT'; - $attributes['CONSTRAINT'] = null; - break; - - case 'TIMESTAMP': - $attributes['TYPE'] = 'DATETIME'; - break; - - case 'BOOLEAN': - $attributes['TYPE'] = 'BIT'; - break; - - default: - break; - } - } - - /** - * Field attribute AUTO_INCREMENT - */ - protected function _attributeAutoIncrement(array &$attributes, array &$field) - { - if (! empty($attributes['AUTO_INCREMENT']) && $attributes['AUTO_INCREMENT'] === true && stripos($field['type'], 'INT') !== false) { - $field['auto_increment'] = ' IDENTITY(1,1)'; - } - } - - /** - * Generates a platform-specific DROP TABLE string - * - * @todo Support for cascade - */ - protected function _dropTable(string $table, bool $ifExists, bool $cascade): string - { - $sql = 'DROP TABLE'; - - if ($ifExists) { - $sql .= ' IF EXISTS '; - } - - $table = ' [' . $this->db->database . '].[' . $this->db->schema . '].[' . $table . '] '; - - $sql .= $table; - - if ($cascade) { - $sql .= ''; - } - - return $sql; - } - - /** - * Constructs sql to check if key is a constraint. - */ - protected function _dropKeyAsConstraint(string $table, string $constraintName): string - { - return "SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS - WHERE TABLE_NAME= '" . trim($table, '"') . "' - AND CONSTRAINT_NAME = '" . trim($constraintName, '"') . "'"; - } -} diff --git a/system4.4.6/Database/SQLSRV/PreparedQuery.php b/system4.4.6/Database/SQLSRV/PreparedQuery.php deleted file mode 100644 index f752e769..00000000 --- a/system4.4.6/Database/SQLSRV/PreparedQuery.php +++ /dev/null @@ -1,135 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\SQLSRV; - -use BadMethodCallException; -use CodeIgniter\Database\BasePreparedQuery; -use CodeIgniter\Database\Exceptions\DatabaseException; - -/** - * Prepared query for Postgre - * - * @extends BasePreparedQuery<resource, resource, resource> - */ -class PreparedQuery extends BasePreparedQuery -{ - /** - * Parameters array used to store the dynamic variables. - * - * @var array - */ - protected $parameters = []; - - /** - * A reference to the db connection to use. - * - * @var Connection - */ - protected $db; - - public function __construct(Connection $db) - { - parent::__construct($db); - } - - /** - * Prepares the query against the database, and saves the connection - * info necessary to execute the query later. - * - * NOTE: This version is based on SQL code. Child classes should - * override this method. - * - * @param array $options Options takes an associative array; - * - * @throws DatabaseException - */ - public function _prepare(string $sql, array $options = []): PreparedQuery - { - // Prepare parameters for the query - $queryString = $this->getQueryString(); - - $parameters = $this->parameterize($queryString); - - // Prepare the query - $this->statement = sqlsrv_prepare($this->db->connID, $sql, $parameters); - - if (! $this->statement) { - if ($this->db->DBDebug) { - throw new DatabaseException($this->db->getAllErrorMessages()); - } - - $info = $this->db->error(); - $this->errorCode = $info['code']; - $this->errorString = $info['message']; - } - - return $this; - } - - /** - * Takes a new set of data and runs it against the currently - * prepared query. - */ - public function _execute(array $data): bool - { - if (! isset($this->statement)) { - throw new BadMethodCallException('You must call prepare before trying to execute a prepared statement.'); - } - - foreach ($data as $key => $value) { - $this->parameters[$key] = $value; - } - - $result = sqlsrv_execute($this->statement); - - if ($result === false && $this->db->DBDebug) { - throw new DatabaseException($this->db->getAllErrorMessages()); - } - - return $result; - } - - /** - * Returns the statement resource for the prepared query or false when preparing failed. - * - * @return resource|null - */ - public function _getResult() - { - return $this->statement; - } - - /** - * Deallocate prepared statements. - */ - protected function _close(): bool - { - return sqlsrv_free_stmt($this->statement); - } - - /** - * Handle parameters. - */ - protected function parameterize(string $queryString): array - { - $numberOfVariables = substr_count($queryString, '?'); - - $params = []; - - for ($c = 0; $c < $numberOfVariables; $c++) { - $this->parameters[$c] = null; - $params[] = &$this->parameters[$c]; - } - - return $params; - } -} diff --git a/system4.4.6/Database/SQLSRV/Result.php b/system4.4.6/Database/SQLSRV/Result.php deleted file mode 100644 index f245a016..00000000 --- a/system4.4.6/Database/SQLSRV/Result.php +++ /dev/null @@ -1,174 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\SQLSRV; - -use CodeIgniter\Database\BaseResult; -use CodeIgniter\Entity\Entity; -use stdClass; - -/** - * Result for SQLSRV - * - * @extends BaseResult<resource, resource> - */ -class Result extends BaseResult -{ - /** - * Gets the number of fields in the result set. - */ - public function getFieldCount(): int - { - return @sqlsrv_num_fields($this->resultID); - } - - /** - * Generates an array of column names in the result set. - */ - public function getFieldNames(): array - { - $fieldNames = []; - - foreach (sqlsrv_field_metadata($this->resultID) as $field) { - $fieldNames[] = $field['Name']; - } - - return $fieldNames; - } - - /** - * Generates an array of objects representing field meta-data. - */ - public function getFieldData(): array - { - static $dataTypes = [ - SQLSRV_SQLTYPE_BIGINT => 'bigint', - SQLSRV_SQLTYPE_BIT => 'bit', - SQLSRV_SQLTYPE_CHAR => 'char', - - SQLSRV_SQLTYPE_DATE => 'date', - SQLSRV_SQLTYPE_DATETIME => 'datetime', - SQLSRV_SQLTYPE_DATETIME2 => 'datetime2', - SQLSRV_SQLTYPE_DATETIMEOFFSET => 'datetimeoffset', - - SQLSRV_SQLTYPE_DECIMAL => 'decimal', - SQLSRV_SQLTYPE_FLOAT => 'float', - - SQLSRV_SQLTYPE_IMAGE => 'image', - SQLSRV_SQLTYPE_INT => 'int', - SQLSRV_SQLTYPE_MONEY => 'money', - SQLSRV_SQLTYPE_NCHAR => 'nchar', - SQLSRV_SQLTYPE_NUMERIC => 'numeric', - - SQLSRV_SQLTYPE_NVARCHAR => 'nvarchar', - SQLSRV_SQLTYPE_NTEXT => 'ntext', - - SQLSRV_SQLTYPE_REAL => 'real', - SQLSRV_SQLTYPE_SMALLDATETIME => 'smalldatetime', - SQLSRV_SQLTYPE_SMALLINT => 'smallint', - SQLSRV_SQLTYPE_SMALLMONEY => 'smallmoney', - SQLSRV_SQLTYPE_TEXT => 'text', - - SQLSRV_SQLTYPE_TIME => 'time', - SQLSRV_SQLTYPE_TIMESTAMP => 'timestamp', - SQLSRV_SQLTYPE_TINYINT => 'tinyint', - SQLSRV_SQLTYPE_UNIQUEIDENTIFIER => 'uniqueidentifier', - SQLSRV_SQLTYPE_UDT => 'udt', - SQLSRV_SQLTYPE_VARBINARY => 'varbinary', - SQLSRV_SQLTYPE_VARCHAR => 'varchar', - SQLSRV_SQLTYPE_XML => 'xml', - ]; - - $retVal = []; - - foreach (sqlsrv_field_metadata($this->resultID) as $i => $field) { - $retVal[$i] = new stdClass(); - - $retVal[$i]->name = $field['Name']; - $retVal[$i]->type = $field['Type']; - $retVal[$i]->type_name = $dataTypes[$field['Type']] ?? null; - $retVal[$i]->max_length = $field['Size']; - } - - return $retVal; - } - - /** - * Frees the current result. - * - * @return void - */ - public function freeResult() - { - if (is_resource($this->resultID)) { - sqlsrv_free_stmt($this->resultID); - $this->resultID = false; - } - } - - /** - * Moves the internal pointer to the desired offset. This is called - * internally before fetching results to make sure the result set - * starts at zero. - * - * @return bool - */ - public function dataSeek(int $n = 0) - { - if ($n > 0) { - for ($i = 0; $i < $n; $i++) { - if (sqlsrv_fetch($this->resultID) === false) { - return false; - } - } - } - - return true; - } - - /** - * Returns the result set as an array. - * - * Overridden by driver classes. - * - * @return array|false|null - */ - protected function fetchAssoc() - { - return sqlsrv_fetch_array($this->resultID, SQLSRV_FETCH_ASSOC); - } - - /** - * Returns the result set as an object. - * - * @return Entity|false|object|stdClass - */ - protected function fetchObject(string $className = 'stdClass') - { - if (is_subclass_of($className, Entity::class)) { - return empty($data = $this->fetchAssoc()) ? false : (new $className())->injectRawData($data); - } - - return sqlsrv_fetch_object($this->resultID, $className); - } - - /** - * Returns the number of rows in the resultID (i.e., SQLSRV query result resource) - */ - public function getNumRows(): int - { - if (! is_int($this->numRows)) { - $this->numRows = sqlsrv_num_rows($this->resultID); - } - - return $this->numRows; - } -} diff --git a/system4.4.6/Database/SQLSRV/Utils.php b/system4.4.6/Database/SQLSRV/Utils.php deleted file mode 100644 index ae52ae40..00000000 --- a/system4.4.6/Database/SQLSRV/Utils.php +++ /dev/null @@ -1,53 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\SQLSRV; - -use CodeIgniter\Database\BaseUtils; -use CodeIgniter\Database\ConnectionInterface; -use CodeIgniter\Database\Exceptions\DatabaseException; - -/** - * Utils for SQLSRV - */ -class Utils extends BaseUtils -{ - /** - * List databases statement - * - * @var string - */ - protected $listDatabases = 'EXEC sp_helpdb'; // Can also be: EXEC sp_databases - - /** - * OPTIMIZE TABLE statement - * - * @var string - */ - protected $optimizeTable = 'ALTER INDEX all ON %s REORGANIZE'; - - public function __construct(ConnectionInterface $db) - { - parent::__construct($db); - - $this->optimizeTable = 'ALTER INDEX all ON ' . $this->db->schema . '.%s REORGANIZE'; - } - - /** - * Platform dependent version of the backup function. - * - * @return never - */ - public function _backup(?array $prefs = null) - { - throw new DatabaseException('Unsupported feature of the database platform you are using.'); - } -} diff --git a/system4.4.6/Database/SQLite3/Builder.php b/system4.4.6/Database/SQLite3/Builder.php deleted file mode 100644 index 994ac69a..00000000 --- a/system4.4.6/Database/SQLite3/Builder.php +++ /dev/null @@ -1,278 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\SQLite3; - -use CodeIgniter\Database\BaseBuilder; -use CodeIgniter\Database\Exceptions\DatabaseException; -use CodeIgniter\Database\RawSql; -use InvalidArgumentException; - -/** - * Builder for SQLite3 - */ -class Builder extends BaseBuilder -{ - /** - * Default installs of SQLite typically do not - * support limiting delete clauses. - * - * @var bool - */ - protected $canLimitDeletes = false; - - /** - * Default installs of SQLite do no support - * limiting update queries in combo with WHERE. - * - * @var bool - */ - protected $canLimitWhereUpdates = false; - - /** - * ORDER BY random keyword - * - * @var array - */ - protected $randomKeyword = [ - 'RANDOM()', - ]; - - /** - * @var array - */ - protected $supportedIgnoreStatements = [ - 'insert' => 'OR IGNORE', - ]; - - /** - * Replace statement - * - * Generates a platform-specific replace string from the supplied data - */ - protected function _replace(string $table, array $keys, array $values): string - { - return 'INSERT OR ' . parent::_replace($table, $keys, $values); - } - - /** - * Generates a platform-specific truncate string from the supplied data - * - * If the database does not support the TRUNCATE statement, - * then this method maps to 'DELETE FROM table' - */ - protected function _truncate(string $table): string - { - return 'DELETE FROM ' . $table; - } - - /** - * Generates a platform-specific batch update string from the supplied data - */ - protected function _updateBatch(string $table, array $keys, array $values): string - { - if (version_compare($this->db->getVersion(), '3.33.0') >= 0) { - return parent::_updateBatch($table, $keys, $values); - } - - $constraints = $this->QBOptions['constraints'] ?? []; - - if ($constraints === []) { - if ($this->db->DBDebug) { - throw new DatabaseException('You must specify a constraint to match on for batch updates.'); - } - - return ''; // @codeCoverageIgnore - } - - if (count($constraints) > 1 || isset($this->QBOptions['setQueryAsData']) || (current($constraints) instanceof RawSql)) { - throw new DatabaseException('You are trying to use a feature which requires SQLite version 3.33 or higher.'); - } - - $index = current($constraints); - - $ids = []; - $final = []; - - foreach ($values as $val) { - $val = array_combine($keys, $val); - - $ids[] = $val[$index]; - - foreach (array_keys($val) as $field) { - if ($field !== $index) { - $final[$field][] = 'WHEN ' . $index . ' = ' . $val[$index] . ' THEN ' . $val[$field]; - } - } - } - - $cases = ''; - - foreach ($final as $k => $v) { - $cases .= $k . " = CASE \n" - . implode("\n", $v) . "\n" - . 'ELSE ' . $k . ' END, '; - } - - $this->where($index . ' IN(' . implode(',', $ids) . ')', null, false); - - return 'UPDATE ' . $this->compileIgnore('update') . $table . ' SET ' . substr($cases, 0, -2) . $this->compileWhereHaving('QBWhere'); - } - - /** - * Generates a platform-specific upsertBatch string from the supplied data - * - * @throws DatabaseException - */ - protected function _upsertBatch(string $table, array $keys, array $values): string - { - $sql = $this->QBOptions['sql'] ?? ''; - - // if this is the first iteration of batch then we need to build skeleton sql - if ($sql === '') { - $constraints = $this->QBOptions['constraints'] ?? []; - - if (empty($constraints)) { - $fieldNames = array_map(static fn ($columnName) => trim($columnName, '`'), $keys); - - $allIndexes = array_filter($this->db->getIndexData($table), static function ($index) use ($fieldNames) { - $hasAllFields = count(array_intersect($index->fields, $fieldNames)) === count($index->fields); - - return ($index->type === 'PRIMARY' || $index->type === 'UNIQUE') && $hasAllFields; - }); - - foreach (array_map(static fn ($index) => $index->fields, $allIndexes) as $index) { - $constraints[] = current($index); - break; - } - - $constraints = $this->onConstraint($constraints)->QBOptions['constraints'] ?? []; - } - - if (empty($constraints)) { - if ($this->db->DBDebug) { - throw new DatabaseException('No constraint found for upsert.'); - } - - return ''; // @codeCoverageIgnore - } - - $alias = $this->QBOptions['alias'] ?? '`excluded`'; - - if (strtolower($alias) !== '`excluded`') { - throw new InvalidArgumentException('SQLite alias is always named "excluded". A custom alias cannot be used.'); - } - - $updateFields = $this->QBOptions['updateFields'] ?? - $this->updateFields($keys, false, $constraints)->QBOptions['updateFields'] ?? - []; - - $sql = 'INSERT INTO ' . $table . ' ('; - - $sql .= implode(', ', array_map(static fn ($columnName) => $columnName, $keys)); - - $sql .= ")\n"; - - $sql .= '{:_table_:}'; - - $sql .= 'ON CONFLICT(' . implode(',', $constraints) . ")\n"; - - $sql .= "DO UPDATE SET\n"; - - $sql .= implode( - ",\n", - array_map( - static fn ($key, $value) => $key . ($value instanceof RawSql ? - " = {$value}" : - " = {$alias}.{$value}"), - array_keys($updateFields), - $updateFields - ) - ); - - $this->QBOptions['sql'] = $sql; - } - - if (isset($this->QBOptions['setQueryAsData'])) { - $hasWhere = stripos($this->QBOptions['setQueryAsData'], 'WHERE') > 0; - - $data = $this->QBOptions['setQueryAsData'] . ($hasWhere ? '' : "\nWHERE 1 = 1\n"); - } else { - $data = 'VALUES ' . implode(', ', $this->formatValues($values)) . "\n"; - } - - return str_replace('{:_table_:}', $data, $sql); - } - - /** - * Generates a platform-specific batch update string from the supplied data - */ - protected function _deleteBatch(string $table, array $keys, array $values): string - { - $sql = $this->QBOptions['sql'] ?? ''; - - // if this is the first iteration of batch then we need to build skeleton sql - if ($sql === '') { - $constraints = $this->QBOptions['constraints'] ?? []; - - if ($constraints === []) { - if ($this->db->DBDebug) { - throw new DatabaseException('You must specify a constraint to match on for batch deletes.'); // @codeCoverageIgnore - } - - return ''; // @codeCoverageIgnore - } - - $sql = 'DELETE FROM ' . $table . "\n"; - - if (current($constraints) instanceof RawSql && $this->db->DBDebug) { - throw new DatabaseException('You cannot use RawSql for constraint in SQLite.'); - // @codeCoverageIgnore - } - - if (is_string(current(array_keys($constraints)))) { - $concat1 = implode(' || ', array_keys($constraints)); - $concat2 = implode(' || ', array_values($constraints)); - } else { - $concat1 = implode(' || ', $constraints); - $concat2 = $concat1; - } - - $sql .= "WHERE {$concat1} IN (SELECT {$concat2} FROM (\n{:_table_:}))"; - - // where is not supported - if ($this->QBWhere !== [] && $this->db->DBDebug) { - throw new DatabaseException('You cannot use WHERE with SQLite.'); - // @codeCoverageIgnore - } - - $this->QBOptions['sql'] = $sql; - } - - if (isset($this->QBOptions['setQueryAsData'])) { - $data = $this->QBOptions['setQueryAsData']; - } else { - $data = implode( - " UNION ALL\n", - array_map( - static fn ($value) => 'SELECT ' . implode(', ', array_map( - static fn ($key, $index) => $index . ' ' . $key, - $keys, - $value - )), - $values - ) - ) . "\n"; - } - - return str_replace('{:_table_:}', $data, $sql); - } -} diff --git a/system4.4.6/Database/SQLite3/Connection.php b/system4.4.6/Database/SQLite3/Connection.php deleted file mode 100644 index 18760699..00000000 --- a/system4.4.6/Database/SQLite3/Connection.php +++ /dev/null @@ -1,448 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\SQLite3; - -use CodeIgniter\Database\BaseConnection; -use CodeIgniter\Database\Exceptions\DatabaseException; -use ErrorException; -use Exception; -use SQLite3; -use SQLite3Result; -use stdClass; - -/** - * Connection for SQLite3 - * - * @extends BaseConnection<SQLite3, SQLite3Result> - */ -class Connection extends BaseConnection -{ - /** - * Database driver - * - * @var string - */ - public $DBDriver = 'SQLite3'; - - /** - * Identifier escape character - * - * @var string - */ - public $escapeChar = '`'; - - /** - * @var bool Enable Foreign Key constraint or not - */ - protected $foreignKeys = false; - - /** - * The milliseconds to sleep - * - * @var int|null milliseconds - * - * @see https://www.php.net/manual/en/sqlite3.busytimeout - */ - protected $busyTimeout; - - public function initialize() - { - parent::initialize(); - - if ($this->foreignKeys) { - $this->enableForeignKeyChecks(); - } - - if (is_int($this->busyTimeout)) { - $this->connID->busyTimeout($this->busyTimeout); - } - } - - /** - * Connect to the database. - * - * @return SQLite3 - * - * @throws DatabaseException - */ - public function connect(bool $persistent = false) - { - if ($persistent && $this->DBDebug) { - throw new DatabaseException('SQLite3 doesn\'t support persistent connections.'); - } - - try { - if ($this->database !== ':memory:' && strpos($this->database, DIRECTORY_SEPARATOR) === false) { - $this->database = WRITEPATH . $this->database; - } - - return (! $this->password) - ? new SQLite3($this->database) - : new SQLite3($this->database, SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE, $this->password); - } catch (Exception $e) { - throw new DatabaseException('SQLite3 error: ' . $e->getMessage()); - } - } - - /** - * Keep or establish the connection if no queries have been sent for - * a length of time exceeding the server's idle timeout. - */ - public function reconnect() - { - $this->close(); - $this->initialize(); - } - - /** - * Close the database connection. - */ - protected function _close() - { - $this->connID->close(); - } - - /** - * Select a specific database table to use. - */ - public function setDatabase(string $databaseName): bool - { - return false; - } - - /** - * Returns a string containing the version of the database being used. - */ - public function getVersion(): string - { - if (isset($this->dataCache['version'])) { - return $this->dataCache['version']; - } - - $version = SQLite3::version(); - - return $this->dataCache['version'] = $version['versionString']; - } - - /** - * Execute the query - * - * @return false|SQLite3Result - */ - protected function execute(string $sql) - { - try { - return $this->isWriteType($sql) - ? $this->connID->exec($sql) - : $this->connID->query($sql); - } catch (ErrorException $e) { - log_message('error', (string) $e); - - if ($this->DBDebug) { - throw new DatabaseException($e->getMessage(), $e->getCode(), $e); - } - } - - return false; - } - - /** - * Returns the total number of rows affected by this query. - */ - public function affectedRows(): int - { - return $this->connID->changes(); - } - - /** - * Platform-dependant string escape - */ - protected function _escapeString(string $str): string - { - if (! $this->connID instanceof SQLite3) { - $this->initialize(); - } - - return $this->connID->escapeString($str); - } - - /** - * Generates the SQL for listing tables in a platform-dependent manner. - * - * @param string|null $tableName If $tableName is provided will return only this table if exists. - */ - protected function _listTables(bool $prefixLimit = false, ?string $tableName = null): string - { - if ($tableName !== null) { - return 'SELECT "NAME" FROM "SQLITE_MASTER" WHERE "TYPE" = \'table\'' - . ' AND "NAME" NOT LIKE \'sqlite!_%\' ESCAPE \'!\'' - . ' AND "NAME" LIKE ' . $this->escape($tableName); - } - - return 'SELECT "NAME" FROM "SQLITE_MASTER" WHERE "TYPE" = \'table\'' - . ' AND "NAME" NOT LIKE \'sqlite!_%\' ESCAPE \'!\'' - . (($prefixLimit !== false && $this->DBPrefix !== '') - ? ' AND "NAME" LIKE \'' . $this->escapeLikeString($this->DBPrefix) . '%\' ' . sprintf($this->likeEscapeStr, $this->likeEscapeChar) - : ''); - } - - /** - * Generates a platform-specific query string so that the column names can be fetched. - */ - protected function _listColumns(string $table = ''): string - { - return 'PRAGMA TABLE_INFO(' . $this->protectIdentifiers($table, true, null, false) . ')'; - } - - /** - * @return array|false - * - * @throws DatabaseException - */ - public function getFieldNames(string $table) - { - // Is there a cached result? - if (isset($this->dataCache['field_names'][$table])) { - return $this->dataCache['field_names'][$table]; - } - - if (! $this->connID instanceof SQLite3) { - $this->initialize(); - } - - $sql = $this->_listColumns($table); - - $query = $this->query($sql); - $this->dataCache['field_names'][$table] = []; - - foreach ($query->getResultArray() as $row) { - // Do we know from where to get the column's name? - if (! isset($key)) { - if (isset($row['column_name'])) { - $key = 'column_name'; - } elseif (isset($row['COLUMN_NAME'])) { - $key = 'COLUMN_NAME'; - } elseif (isset($row['name'])) { - $key = 'name'; - } else { - // We have no other choice but to just get the first element's key. - $key = key($row); - } - } - - $this->dataCache['field_names'][$table][] = $row[$key]; - } - - return $this->dataCache['field_names'][$table]; - } - - /** - * Returns an array of objects with field data - * - * @return stdClass[] - * - * @throws DatabaseException - */ - protected function _fieldData(string $table): array - { - if (false === $query = $this->query('PRAGMA TABLE_INFO(' . $this->protectIdentifiers($table, true, null, false) . ')')) { - throw new DatabaseException(lang('Database.failGetFieldData')); - } - - $query = $query->getResultObject(); - - if (empty($query)) { - return []; - } - - $retVal = []; - - for ($i = 0, $c = count($query); $i < $c; $i++) { - $retVal[$i] = new stdClass(); - - $retVal[$i]->name = $query[$i]->name; - $retVal[$i]->type = $query[$i]->type; - $retVal[$i]->max_length = null; - $retVal[$i]->nullable = isset($query[$i]->notnull) && ! (bool) $query[$i]->notnull; - $retVal[$i]->default = $query[$i]->dflt_value; - // "pk" (either zero for columns that are not part of the primary key, - // or the 1-based index of the column within the primary key). - // https://www.sqlite.org/pragma.html#pragma_table_info - $retVal[$i]->primary_key = ($query[$i]->pk === 0) ? 0 : 1; - } - - return $retVal; - } - - /** - * Returns an array of objects with index data - * - * @return stdClass[] - * - * @throws DatabaseException - */ - protected function _indexData(string $table): array - { - $sql = "SELECT 'PRIMARY' as indexname, l.name as fieldname, 'PRIMARY' as indextype - FROM pragma_table_info(" . $this->escape(strtolower($table)) . ") as l - WHERE l.pk <> 0 - UNION ALL - SELECT sqlite_master.name as indexname, ii.name as fieldname, - CASE - WHEN ti.pk <> 0 AND sqlite_master.name LIKE 'sqlite_autoindex_%' THEN 'PRIMARY' - WHEN sqlite_master.name LIKE 'sqlite_autoindex_%' THEN 'UNIQUE' - WHEN sqlite_master.sql LIKE '% UNIQUE %' THEN 'UNIQUE' - ELSE 'INDEX' - END as indextype - FROM sqlite_master - INNER JOIN pragma_index_xinfo(sqlite_master.name) ii ON ii.name IS NOT NULL - LEFT JOIN pragma_table_info(" . $this->escape(strtolower($table)) . ") ti ON ti.name = ii.name - WHERE sqlite_master.type='index' AND sqlite_master.tbl_name = " . $this->escape(strtolower($table)) . ' COLLATE NOCASE'; - - if (($query = $this->query($sql)) === false) { - throw new DatabaseException(lang('Database.failGetIndexData')); - } - $query = $query->getResultObject(); - - $tempVal = []; - - foreach ($query as $row) { - if ($row->indextype === 'PRIMARY') { - $tempVal['PRIMARY']['indextype'] = $row->indextype; - $tempVal['PRIMARY']['indexname'] = $row->indexname; - $tempVal['PRIMARY']['fields'][$row->fieldname] = $row->fieldname; - } else { - $tempVal[$row->indexname]['indextype'] = $row->indextype; - $tempVal[$row->indexname]['indexname'] = $row->indexname; - $tempVal[$row->indexname]['fields'][$row->fieldname] = $row->fieldname; - } - } - - $retVal = []; - - foreach ($tempVal as $val) { - $obj = new stdClass(); - $obj->name = $val['indexname']; - $obj->fields = array_values($val['fields']); - $obj->type = $val['indextype']; - $retVal[$obj->name] = $obj; - } - - return $retVal; - } - - /** - * Returns an array of objects with Foreign key data - * - * @return stdClass[] - */ - protected function _foreignKeyData(string $table): array - { - if ($this->supportsForeignKeys() !== true) { - return []; - } - - $query = $this->query("PRAGMA foreign_key_list({$table})")->getResult(); - $indexes = []; - - foreach ($query as $row) { - $indexes[$row->id]['constraint_name'] = null; - $indexes[$row->id]['table_name'] = $table; - $indexes[$row->id]['foreign_table_name'] = $row->table; - $indexes[$row->id]['column_name'][] = $row->from; - $indexes[$row->id]['foreign_column_name'][] = $row->to; - $indexes[$row->id]['on_delete'] = $row->on_delete; - $indexes[$row->id]['on_update'] = $row->on_update; - $indexes[$row->id]['match'] = $row->match; - } - - return $this->foreignKeyDataToObjects($indexes); - } - - /** - * Returns platform-specific SQL to disable foreign key checks. - * - * @return string - */ - protected function _disableForeignKeyChecks() - { - return 'PRAGMA foreign_keys = OFF'; - } - - /** - * Returns platform-specific SQL to enable foreign key checks. - * - * @return string - */ - protected function _enableForeignKeyChecks() - { - return 'PRAGMA foreign_keys = ON'; - } - - /** - * Returns the last error code and message. - * Must return this format: ['code' => string|int, 'message' => string] - * intval(code) === 0 means "no error". - * - * @return array<string, int|string> - */ - public function error(): array - { - return [ - 'code' => $this->connID->lastErrorCode(), - 'message' => $this->connID->lastErrorMsg(), - ]; - } - - /** - * Insert ID - */ - public function insertID(): int - { - return $this->connID->lastInsertRowID(); - } - - /** - * Begin Transaction - */ - protected function _transBegin(): bool - { - return $this->connID->exec('BEGIN TRANSACTION'); - } - - /** - * Commit Transaction - */ - protected function _transCommit(): bool - { - return $this->connID->exec('END TRANSACTION'); - } - - /** - * Rollback Transaction - */ - protected function _transRollback(): bool - { - return $this->connID->exec('ROLLBACK'); - } - - /** - * Checks to see if the current install supports Foreign Keys - * and has them enabled. - */ - public function supportsForeignKeys(): bool - { - $result = $this->simpleQuery('PRAGMA foreign_keys'); - - return (bool) $result; - } -} diff --git a/system4.4.6/Database/SQLite3/Forge.php b/system4.4.6/Database/SQLite3/Forge.php deleted file mode 100644 index 4be650e0..00000000 --- a/system4.4.6/Database/SQLite3/Forge.php +++ /dev/null @@ -1,322 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\SQLite3; - -use CodeIgniter\Database\BaseConnection; -use CodeIgniter\Database\Exceptions\DatabaseException; -use CodeIgniter\Database\Forge as BaseForge; - -/** - * Forge for SQLite3 - */ -class Forge extends BaseForge -{ - /** - * DROP INDEX statement - * - * @var string - */ - protected $dropIndexStr = 'DROP INDEX %s'; - - /** - * @var Connection - */ - protected $db; - - /** - * UNSIGNED support - * - * @var array|bool - */ - protected $_unsigned = false; - - /** - * NULL value representation in CREATE/ALTER TABLE statements - * - * @var string - * - * @internal - */ - protected $null = 'NULL'; - - /** - * Constructor. - */ - public function __construct(BaseConnection $db) - { - parent::__construct($db); - - if (version_compare($this->db->getVersion(), '3.3', '<')) { - $this->dropTableIfStr = false; - } - } - - /** - * Create database - * - * @param bool $ifNotExists Whether to add IF NOT EXISTS condition - */ - public function createDatabase(string $dbName, bool $ifNotExists = false): bool - { - // In SQLite, a database is created when you connect to the database. - // We'll return TRUE so that an error isn't generated. - return true; - } - - /** - * Drop database - * - * @throws DatabaseException - */ - public function dropDatabase(string $dbName): bool - { - // In SQLite, a database is dropped when we delete a file - if (! is_file($dbName)) { - if ($this->db->DBDebug) { - throw new DatabaseException('Unable to drop the specified database.'); - } - - return false; - } - - // We need to close the pseudo-connection first - $this->db->close(); - if (! @unlink($dbName)) { - if ($this->db->DBDebug) { - throw new DatabaseException('Unable to drop the specified database.'); - } - - return false; - } - - if (! empty($this->db->dataCache['db_names'])) { - $key = array_search(strtolower($dbName), array_map('strtolower', $this->db->dataCache['db_names']), true); - if ($key !== false) { - unset($this->db->dataCache['db_names'][$key]); - } - } - - return true; - } - - /** - * @param array|string $processedFields Processed column definitions - * or column names to DROP - * - * @return array|string|null - * @return list<string>|string|null SQL string or null - * @phpstan-return ($alterType is 'DROP' ? string : list<string>|null) - */ - protected function _alterTable(string $alterType, string $table, $processedFields) - { - switch ($alterType) { - case 'DROP': - $columnNamesToDrop = $processedFields; - - $sqlTable = new Table($this->db, $this); - - $sqlTable->fromTable($table) - ->dropColumn($columnNamesToDrop) - ->run(); - - return ''; // Why empty string? - - case 'CHANGE': - $fieldsToModify = []; - - foreach ($processedFields as $processedField) { - $name = $processedField['name']; - $newName = $processedField['new_name']; - - $field = $this->fields[$name]; - $field['name'] = $name; - $field['new_name'] = $newName; - - // Unlike when creating a table, if `null` is not specified, - // the column will be `NULL`, not `NOT NULL`. - if ($processedField['null'] === '') { - $field['null'] = true; - } - - $fieldsToModify[] = $field; - } - - (new Table($this->db, $this)) - ->fromTable($table) - ->modifyColumn($fieldsToModify) - ->run(); - - return null; // Why null? - - default: - return parent::_alterTable($alterType, $table, $processedFields); - } - } - - /** - * Process column - */ - protected function _processColumn(array $processedField): string - { - if ($processedField['type'] === 'TEXT' && strpos($processedField['length'], "('") === 0) { - $processedField['type'] .= ' CHECK(' . $this->db->escapeIdentifiers($processedField['name']) - . ' IN ' . $processedField['length'] . ')'; - } - - return $this->db->escapeIdentifiers($processedField['name']) - . ' ' . $processedField['type'] - . $processedField['auto_increment'] - . $processedField['null'] - . $processedField['unique'] - . $processedField['default']; - } - - /** - * Field attribute TYPE - * - * Performs a data type mapping between different databases. - */ - protected function _attributeType(array &$attributes) - { - switch (strtoupper($attributes['TYPE'])) { - case 'ENUM': - case 'SET': - $attributes['TYPE'] = 'TEXT'; - break; - - case 'BOOLEAN': - $attributes['TYPE'] = 'INT'; - break; - - default: - break; - } - } - - /** - * Field attribute AUTO_INCREMENT - */ - protected function _attributeAutoIncrement(array &$attributes, array &$field) - { - if ( - ! empty($attributes['AUTO_INCREMENT']) - && $attributes['AUTO_INCREMENT'] === true - && stripos($field['type'], 'int') !== false - ) { - $field['type'] = 'INTEGER PRIMARY KEY'; - $field['default'] = ''; - $field['null'] = ''; - $field['unique'] = ''; - $field['auto_increment'] = ' AUTOINCREMENT'; - - $this->primaryKeys = []; - } - } - - /** - * Foreign Key Drop - * - * @throws DatabaseException - */ - public function dropForeignKey(string $table, string $foreignName): bool - { - // If this version of SQLite doesn't support it, we're done here - if ($this->db->supportsForeignKeys() !== true) { - return true; - } - - // Otherwise we have to copy the table and recreate - // without the foreign key being involved now - $sqlTable = new Table($this->db, $this); - - return $sqlTable->fromTable($this->db->DBPrefix . $table) - ->dropForeignKey($foreignName) - ->run(); - } - - /** - * Drop Primary Key - */ - public function dropPrimaryKey(string $table, string $keyName = ''): bool - { - $sqlTable = new Table($this->db, $this); - - return $sqlTable->fromTable($this->db->DBPrefix . $table) - ->dropPrimaryKey() - ->run(); - } - - public function addForeignKey($fieldName = '', string $tableName = '', $tableField = '', string $onUpdate = '', string $onDelete = '', string $fkName = ''): BaseForge - { - if ($fkName === '') { - return parent::addForeignKey($fieldName, $tableName, $tableField, $onUpdate, $onDelete, $fkName); - } - - throw new DatabaseException('SQLite does not support foreign key names. CodeIgniter will refer to them in the format: prefix_table_column_referencecolumn_foreign'); - } - - /** - * Generates SQL to add primary key - * - * @param bool $asQuery When true recreates table with key, else partial SQL used with CREATE TABLE - */ - protected function _processPrimaryKeys(string $table, bool $asQuery = false): string - { - if ($asQuery === false) { - return parent::_processPrimaryKeys($table, $asQuery); - } - - $sqlTable = new Table($this->db, $this); - - $sqlTable->fromTable($this->db->DBPrefix . $table) - ->addPrimaryKey($this->primaryKeys) - ->run(); - - return ''; - } - - /** - * Generates SQL to add foreign keys - * - * @param bool $asQuery When true recreates table with key, else partial SQL used with CREATE TABLE - */ - protected function _processForeignKeys(string $table, bool $asQuery = false): array - { - if ($asQuery === false) { - return parent::_processForeignKeys($table, $asQuery); - } - - $errorNames = []; - - foreach ($this->foreignKeys as $name) { - foreach ($name['field'] as $f) { - if (! isset($this->fields[$f])) { - $errorNames[] = $f; - } - } - } - - if ($errorNames !== []) { - $errorNames = [implode(', ', $errorNames)]; - - throw new DatabaseException(lang('Database.fieldNotExists', $errorNames)); - } - - $sqlTable = new Table($this->db, $this); - - $sqlTable->fromTable($this->db->DBPrefix . $table) - ->addForeignKey($this->foreignKeys) - ->run(); - - return []; - } -} diff --git a/system4.4.6/Database/SQLite3/PreparedQuery.php b/system4.4.6/Database/SQLite3/PreparedQuery.php deleted file mode 100644 index e892e73b..00000000 --- a/system4.4.6/Database/SQLite3/PreparedQuery.php +++ /dev/null @@ -1,105 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\SQLite3; - -use BadMethodCallException; -use CodeIgniter\Database\BasePreparedQuery; -use CodeIgniter\Database\Exceptions\DatabaseException; -use SQLite3; -use SQLite3Result; -use SQLite3Stmt; - -/** - * Prepared query for SQLite3 - * - * @extends BasePreparedQuery<SQLite3, SQLite3Stmt, SQLite3Result> - */ -class PreparedQuery extends BasePreparedQuery -{ - /** - * The SQLite3Result resource, or false. - * - * @var false|SQLite3Result - */ - protected $result; - - /** - * Prepares the query against the database, and saves the connection - * info necessary to execute the query later. - * - * NOTE: This version is based on SQL code. Child classes should - * override this method. - * - * @param array $options Passed to the connection's prepare statement. - * Unused in the MySQLi driver. - */ - public function _prepare(string $sql, array $options = []): PreparedQuery - { - if (! ($this->statement = $this->db->connID->prepare($sql))) { - $this->errorCode = $this->db->connID->lastErrorCode(); - $this->errorString = $this->db->connID->lastErrorMsg(); - - if ($this->db->DBDebug) { - throw new DatabaseException($this->errorString . ' code: ' . $this->errorCode); - } - } - - return $this; - } - - /** - * Takes a new set of data and runs it against the currently - * prepared query. Upon success, will return a Results object. - */ - public function _execute(array $data): bool - { - if (! isset($this->statement)) { - throw new BadMethodCallException('You must call prepare before trying to execute a prepared statement.'); - } - - foreach ($data as $key => $item) { - // Determine the type string - if (is_int($item)) { - $bindType = SQLITE3_INTEGER; - } elseif (is_float($item)) { - $bindType = SQLITE3_FLOAT; - } else { - $bindType = SQLITE3_TEXT; - } - - // Bind it - $this->statement->bindValue($key + 1, $item, $bindType); - } - - $this->result = $this->statement->execute(); - - return $this->result !== false; - } - - /** - * Returns the result object for the prepared query or false on failure. - * - * @return false|SQLite3Result - */ - public function _getResult() - { - return $this->result; - } - - /** - * Deallocate prepared statements. - */ - protected function _close(): bool - { - return $this->statement->close(); - } -} diff --git a/system4.4.6/Database/SQLite3/Result.php b/system4.4.6/Database/SQLite3/Result.php deleted file mode 100644 index f3887b04..00000000 --- a/system4.4.6/Database/SQLite3/Result.php +++ /dev/null @@ -1,158 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\SQLite3; - -use Closure; -use CodeIgniter\Database\BaseResult; -use CodeIgniter\Database\Exceptions\DatabaseException; -use CodeIgniter\Entity\Entity; -use SQLite3; -use SQLite3Result; -use stdClass; - -/** - * Result for SQLite3 - * - * @extends BaseResult<SQLite3, SQLite3Result> - */ -class Result extends BaseResult -{ - /** - * Gets the number of fields in the result set. - */ - public function getFieldCount(): int - { - return $this->resultID->numColumns(); - } - - /** - * Generates an array of column names in the result set. - */ - public function getFieldNames(): array - { - $fieldNames = []; - - for ($i = 0, $c = $this->getFieldCount(); $i < $c; $i++) { - $fieldNames[] = $this->resultID->columnName($i); - } - - return $fieldNames; - } - - /** - * Generates an array of objects representing field meta-data. - */ - public function getFieldData(): array - { - static $dataTypes = [ - SQLITE3_INTEGER => 'integer', - SQLITE3_FLOAT => 'float', - SQLITE3_TEXT => 'text', - SQLITE3_BLOB => 'blob', - SQLITE3_NULL => 'null', - ]; - - $retVal = []; - $this->resultID->fetchArray(SQLITE3_NUM); - - for ($i = 0, $c = $this->getFieldCount(); $i < $c; $i++) { - $retVal[$i] = new stdClass(); - $retVal[$i]->name = $this->resultID->columnName($i); - $type = $this->resultID->columnType($i); - $retVal[$i]->type = $type; - $retVal[$i]->type_name = $dataTypes[$type] ?? null; - $retVal[$i]->max_length = null; - $retVal[$i]->length = null; - } - $this->resultID->reset(); - - return $retVal; - } - - /** - * Frees the current result. - * - * @return void - */ - public function freeResult() - { - if (is_object($this->resultID)) { - $this->resultID->finalize(); - $this->resultID = false; - } - } - - /** - * Moves the internal pointer to the desired offset. This is called - * internally before fetching results to make sure the result set - * starts at zero. - * - * @return bool - * - * @throws DatabaseException - */ - public function dataSeek(int $n = 0) - { - if ($n !== 0) { - throw new DatabaseException('SQLite3 doesn\'t support seeking to other offset.'); - } - - return $this->resultID->reset(); - } - - /** - * Returns the result set as an array. - * - * Overridden by driver classes. - * - * @return array|false - */ - protected function fetchAssoc() - { - return $this->resultID->fetchArray(SQLITE3_ASSOC); - } - - /** - * Returns the result set as an object. - * - * Overridden by child classes. - * - * @return Entity|false|object|stdClass - */ - protected function fetchObject(string $className = 'stdClass') - { - // No native support for fetching rows as objects - if (($row = $this->fetchAssoc()) === false) { - return false; - } - - if ($className === 'stdClass') { - return (object) $row; - } - - $classObj = new $className(); - - if (is_subclass_of($className, Entity::class)) { - return $classObj->injectRawData($row); - } - - $classSet = Closure::bind(function ($key, $value) { - $this->{$key} = $value; - }, $classObj, $className); - - foreach (array_keys($row) as $key) { - $classSet($key, $row[$key]); - } - - return $classObj; - } -} diff --git a/system4.4.6/Database/SQLite3/Table.php b/system4.4.6/Database/SQLite3/Table.php deleted file mode 100644 index 47e6d1a7..00000000 --- a/system4.4.6/Database/SQLite3/Table.php +++ /dev/null @@ -1,492 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\SQLite3; - -use CodeIgniter\Database\Exceptions\DataException; -use stdClass; - -/** - * Class Table - * - * Provides missing features for altering tables that are common - * in other supported databases, but are missing from SQLite. - * These are needed in order to support migrations during testing - * when another database is used as the primary engine, but - * SQLite in memory databases are used for faster test execution. - */ -class Table -{ - /** - * All of the fields this table represents. - * - * @var array<string, array<string, bool|int|string|null>> [name => attributes] - */ - protected $fields = []; - - /** - * All of the unique/primary keys in the table. - * - * @var array - */ - protected $keys = []; - - /** - * All of the foreign keys in the table. - * - * @var array - */ - protected $foreignKeys = []; - - /** - * The name of the table we're working with. - * - * @var string - */ - protected $tableName; - - /** - * The name of the table, with database prefix - * - * @var string - */ - protected $prefixedTableName; - - /** - * Database connection. - * - * @var Connection - */ - protected $db; - - /** - * Handle to our forge. - * - * @var Forge - */ - protected $forge; - - /** - * Table constructor. - */ - public function __construct(Connection $db, Forge $forge) - { - $this->db = $db; - $this->forge = $forge; - } - - /** - * Reads an existing database table and - * collects all of the information needed to - * recreate this table. - * - * @return Table - */ - public function fromTable(string $table) - { - $this->prefixedTableName = $table; - - $prefix = $this->db->DBPrefix; - - if (! empty($prefix) && strpos($table, $prefix) === 0) { - $table = substr($table, strlen($prefix)); - } - - if (! $this->db->tableExists($this->prefixedTableName)) { - throw DataException::forTableNotFound($this->prefixedTableName); - } - - $this->tableName = $table; - - $this->fields = $this->formatFields($this->db->getFieldData($table)); - - $this->keys = array_merge($this->keys, $this->formatKeys($this->db->getIndexData($table))); - - // if primary key index exists twice then remove psuedo index name 'primary'. - $primaryIndexes = array_filter($this->keys, static fn ($index) => $index['type'] === 'primary'); - - if ($primaryIndexes !== [] && count($primaryIndexes) > 1 && array_key_exists('primary', $this->keys)) { - unset($this->keys['primary']); - } - - $this->foreignKeys = $this->db->getForeignKeyData($table); - - return $this; - } - - /** - * Called after `fromTable` and any actions, like `dropColumn`, etc, - * to finalize the action. It creates a temp table, creates the new - * table with modifications, and copies the data over to the new table. - * Resets the connection dataCache to be sure changes are collected. - */ - public function run(): bool - { - $this->db->query('PRAGMA foreign_keys = OFF'); - - $this->db->transStart(); - - $this->forge->renameTable($this->tableName, "temp_{$this->tableName}"); - - $this->forge->reset(); - - $this->createTable(); - - $this->copyData(); - - $this->forge->dropTable("temp_{$this->tableName}"); - - $success = $this->db->transComplete(); - - $this->db->query('PRAGMA foreign_keys = ON'); - - $this->db->resetDataCache(); - - return $success; - } - - /** - * Drops columns from the table. - * - * @param list<string>|string $columns Column names to drop. - * - * @return Table - */ - public function dropColumn($columns) - { - if (is_string($columns)) { - $columns = explode(',', $columns); - } - - foreach ($columns as $column) { - $column = trim($column); - if (isset($this->fields[$column])) { - unset($this->fields[$column]); - } - } - - return $this; - } - - /** - * Modifies a field, including changing data type, renaming, etc. - * - * @param list<array<string, bool|int|string|null>> $fieldsToModify - * - * @return Table - */ - public function modifyColumn(array $fieldsToModify) - { - foreach ($fieldsToModify as $field) { - $oldName = $field['name']; - unset($field['name']); - - $this->fields[$oldName] = $field; - } - - return $this; - } - - /** - * Drops the primary key - */ - public function dropPrimaryKey(): Table - { - $primaryIndexes = array_filter($this->keys, static fn ($index) => strtolower($index['type']) === 'primary'); - - foreach (array_keys($primaryIndexes) as $key) { - unset($this->keys[$key]); - } - - return $this; - } - - /** - * Drops a foreign key from this table so that - * it won't be recreated in the future. - * - * @return Table - */ - public function dropForeignKey(string $foreignName) - { - if (empty($this->foreignKeys)) { - return $this; - } - - if (isset($this->foreignKeys[$foreignName])) { - unset($this->foreignKeys[$foreignName]); - } - - return $this; - } - - /** - * Adds primary key - */ - public function addPrimaryKey(array $fields): Table - { - $primaryIndexes = array_filter($this->keys, static fn ($index) => strtolower($index['type']) === 'primary'); - - // if primary key already exists we can't add another one - if ($primaryIndexes !== []) { - return $this; - } - - // add array to keys of fields - $pk = [ - 'fields' => $fields['fields'], - 'type' => 'primary', - ]; - - $this->keys['primary'] = $pk; - - return $this; - } - - /** - * Add a foreign key - * - * @return $this - */ - public function addForeignKey(array $foreignKeys) - { - $fk = []; - - // convert to object - foreach ($foreignKeys as $row) { - $obj = new stdClass(); - $obj->column_name = $row['field']; - $obj->foreign_table_name = $row['referenceTable']; - $obj->foreign_column_name = $row['referenceField']; - $obj->on_delete = $row['onDelete']; - $obj->on_update = $row['onUpdate']; - - $fk[] = $obj; - } - - $this->foreignKeys = array_merge($this->foreignKeys, $fk); - - return $this; - } - - /** - * Creates the new table based on our current fields. - * - * @return mixed - */ - protected function createTable() - { - $this->dropIndexes(); - $this->db->resetDataCache(); - - // Handle any modified columns. - $fields = []; - - foreach ($this->fields as $name => $field) { - if (isset($field['new_name'])) { - $fields[$field['new_name']] = $field; - - continue; - } - - $fields[$name] = $field; - } - - $this->forge->addField($fields); - - $fieldNames = array_keys($fields); - - $this->keys = array_filter( - $this->keys, - static fn ($index) => count(array_intersect($index['fields'], $fieldNames)) === count($index['fields']) - ); - - // Unique/Index keys - if (is_array($this->keys)) { - foreach ($this->keys as $keyName => $key) { - switch ($key['type']) { - case 'primary': - $this->forge->addPrimaryKey($key['fields']); - break; - - case 'unique': - $this->forge->addUniqueKey($key['fields'], $keyName); - break; - - case 'index': - $this->forge->addKey($key['fields'], false, false, $keyName); - break; - } - } - } - - foreach ($this->foreignKeys as $foreignKey) { - $this->forge->addForeignKey( - $foreignKey->column_name, - trim($foreignKey->foreign_table_name, $this->db->DBPrefix), - $foreignKey->foreign_column_name - ); - } - - return $this->forge->createTable($this->tableName); - } - - /** - * Copies data from our old table to the new one, - * taking care map data correctly based on any columns - * that have been renamed. - */ - protected function copyData() - { - $exFields = []; - $newFields = []; - - foreach ($this->fields as $name => $details) { - $newFields[] = $details['new_name'] ?? $name; - $exFields[] = $name; - } - - $exFields = implode( - ', ', - array_map(fn ($item) => $this->db->protectIdentifiers($item), $exFields) - ); - $newFields = implode( - ', ', - array_map(fn ($item) => $this->db->protectIdentifiers($item), $newFields) - ); - - $this->db->query( - "INSERT INTO {$this->prefixedTableName}({$newFields}) SELECT {$exFields} FROM {$this->db->DBPrefix}temp_{$this->tableName}" - ); - } - - /** - * Converts fields retrieved from the database to - * the format needed for creating fields with Forge. - * - * @param array|bool $fields - * - * @return mixed - * @phpstan-return ($fields is array ? array : mixed) - */ - protected function formatFields($fields) - { - if (! is_array($fields)) { - return $fields; - } - - $return = []; - - foreach ($fields as $field) { - $return[$field->name] = [ - 'type' => $field->type, - 'default' => $field->default, - 'null' => $field->nullable, - ]; - - if ($field->default === null) { - // `null` means that the default value is not defined. - unset($return[$field->name]['default']); - } elseif ($field->default === 'NULL') { - // 'NULL' means that the default value is NULL. - $return[$field->name]['default'] = null; - } else { - $default = trim($field->default, "'"); - - if ($this->isIntegerType($field->type)) { - $default = (int) $default; - } elseif ($this->isNumericType($field->type)) { - $default = (float) $default; - } - - $return[$field->name]['default'] = $default; - } - - if ($field->primary_key) { - $this->keys['primary'] = [ - 'fields' => [$field->name], - 'type' => 'primary', - ]; - } - } - - return $return; - } - - /** - * Is INTEGER type? - * - * @param string $type SQLite data type (case-insensitive) - * - * @see https://www.sqlite.org/datatype3.html - */ - private function isIntegerType(string $type): bool - { - return strpos(strtoupper($type), 'INT') !== false; - } - - /** - * Is NUMERIC type? - * - * @param string $type SQLite data type (case-insensitive) - * - * @see https://www.sqlite.org/datatype3.html - */ - private function isNumericType(string $type): bool - { - return in_array(strtoupper($type), ['NUMERIC', 'DECIMAL'], true); - } - - /** - * Converts keys retrieved from the database to - * the format needed to create later. - * - * @param mixed $keys - * - * @return mixed - */ - protected function formatKeys($keys) - { - if (! is_array($keys)) { - return $keys; - } - - $return = []; - - foreach ($keys as $name => $key) { - $return[strtolower($name)] = [ - 'fields' => $key->fields, - 'type' => strtolower($key->type), - ]; - } - - return $return; - } - - /** - * Attempts to drop all indexes and constraints - * from the database for this table. - */ - protected function dropIndexes() - { - if (! is_array($this->keys) || $this->keys === []) { - return; - } - - foreach (array_keys($this->keys) as $name) { - if ($name === 'primary') { - continue; - } - - $this->db->query("DROP INDEX IF EXISTS '{$name}'"); - } - } -} diff --git a/system4.4.6/Database/SQLite3/Utils.php b/system4.4.6/Database/SQLite3/Utils.php deleted file mode 100644 index b8f45dd5..00000000 --- a/system4.4.6/Database/SQLite3/Utils.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database\SQLite3; - -use CodeIgniter\Database\BaseUtils; -use CodeIgniter\Database\Exceptions\DatabaseException; - -/** - * Utils for SQLite3 - */ -class Utils extends BaseUtils -{ - /** - * OPTIMIZE TABLE statement - * - * @var string - */ - protected $optimizeTable = 'REINDEX %s'; - - /** - * Platform dependent version of the backup function. - * - * @return never - */ - public function _backup(?array $prefs = null) - { - throw new DatabaseException('Unsupported feature of the database platform you are using.'); - } -} diff --git a/system4.4.6/Database/Seeder.php b/system4.4.6/Database/Seeder.php deleted file mode 100644 index c0f267d2..00000000 --- a/system4.4.6/Database/Seeder.php +++ /dev/null @@ -1,191 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Database; - -use CodeIgniter\CLI\CLI; -use Config\Database; -use Faker\Factory; -use Faker\Generator; -use InvalidArgumentException; - -/** - * Class Seeder - */ -class Seeder -{ - /** - * The name of the database group to use. - * - * @var non-empty-string - */ - protected $DBGroup; - - /** - * Where we can find the Seed files. - * - * @var string - */ - protected $seedPath; - - /** - * An instance of the main Database configuration - * - * @var Database - */ - protected $config; - - /** - * Database Connection instance - * - * @var BaseConnection - */ - protected $db; - - /** - * Database Forge instance. - * - * @var Forge - */ - protected $forge; - - /** - * If true, will not display CLI messages. - * - * @var bool - */ - protected $silent = false; - - /** - * Faker Generator instance. - * - * @deprecated - */ - private static ?Generator $faker = null; - - /** - * Seeder constructor. - */ - public function __construct(Database $config, ?BaseConnection $db = null) - { - $this->seedPath = $config->filesPath ?? APPPATH . 'Database/'; - - if ($this->seedPath === '') { - throw new InvalidArgumentException('Invalid filesPath set in the Config\Database.'); - } - - $this->seedPath = rtrim($this->seedPath, '\\/') . '/Seeds/'; - - if (! is_dir($this->seedPath)) { - throw new InvalidArgumentException('Unable to locate the seeds directory. Please check Config\Database::filesPath'); - } - - $this->config = &$config; - - $db ??= Database::connect($this->DBGroup); - - $this->db = $db; - $this->forge = Database::forge($this->DBGroup); - } - - /** - * Gets the Faker Generator instance. - * - * @deprecated - */ - public static function faker(): ?Generator - { - if (self::$faker === null && class_exists(Factory::class)) { - self::$faker = Factory::create(); - } - - return self::$faker; - } - - /** - * Loads the specified seeder and runs it. - * - * @throws InvalidArgumentException - */ - public function call(string $class) - { - $class = trim($class); - - if ($class === '') { - throw new InvalidArgumentException('No seeder was specified.'); - } - - if (strpos($class, '\\') === false) { - $path = $this->seedPath . str_replace('.php', '', $class) . '.php'; - - if (! is_file($path)) { - throw new InvalidArgumentException('The specified seeder is not a valid file: ' . $path); - } - - // Assume the class has the correct namespace - // @codeCoverageIgnoreStart - $class = APP_NAMESPACE . '\Database\Seeds\\' . $class; - - if (! class_exists($class, false)) { - require_once $path; - } - // @codeCoverageIgnoreEnd - } - - /** @var Seeder $seeder */ - $seeder = new $class($this->config); - $seeder->setSilent($this->silent)->run(); - - unset($seeder); - - if (is_cli() && ! $this->silent) { - CLI::write("Seeded: {$class}", 'green'); - } - } - - /** - * Sets the location of the directory that seed files can be located in. - * - * @return $this - */ - public function setPath(string $path) - { - $this->seedPath = rtrim($path, '\\/') . '/'; - - return $this; - } - - /** - * Sets the silent treatment. - * - * @return $this - */ - public function setSilent(bool $silent) - { - $this->silent = $silent; - - return $this; - } - - /** - * Run the database seeds. This is where the magic happens. - * - * Child classes must implement this method and take care - * of inserting their data here. - * - * @return mixed - * - * @codeCoverageIgnore - */ - public function run() - { - } -} diff --git a/system4.4.6/Debug/BaseExceptionHandler.php b/system4.4.6/Debug/BaseExceptionHandler.php deleted file mode 100644 index 6a5b5e47..00000000 --- a/system4.4.6/Debug/BaseExceptionHandler.php +++ /dev/null @@ -1,263 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Debug; - -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\ResponseInterface; -use Config\Exceptions as ExceptionsConfig; -use Throwable; - -/** - * Provides common functions for exception handlers, - * especially around displaying the output. - */ -abstract class BaseExceptionHandler -{ - /** - * Config for debug exceptions. - */ - protected ExceptionsConfig $config; - - /** - * Nesting level of the output buffering mechanism - */ - protected int $obLevel; - - /** - * The path to the directory containing the - * cli and html error view directories. - */ - protected ?string $viewPath = null; - - public function __construct(ExceptionsConfig $config) - { - $this->config = $config; - - $this->obLevel = ob_get_level(); - - if ($this->viewPath === null) { - $this->viewPath = rtrim($this->config->errorViewPath, '\\/ ') . DIRECTORY_SEPARATOR; - } - } - - /** - * The main entry point into the handler. - * - * @return void - */ - abstract public function handle( - Throwable $exception, - RequestInterface $request, - ResponseInterface $response, - int $statusCode, - int $exitCode - ); - - /** - * Gathers the variables that will be made available to the view. - */ - protected function collectVars(Throwable $exception, int $statusCode): array - { - // Get the first exception. - $firstException = $exception; - - while ($prevException = $firstException->getPrevious()) { - $firstException = $prevException; - } - - $trace = $firstException->getTrace(); - - if ($this->config->sensitiveDataInTrace !== []) { - $trace = $this->maskSensitiveData($trace, $this->config->sensitiveDataInTrace); - } - - return [ - 'title' => get_class($exception), - 'type' => get_class($exception), - 'code' => $statusCode, - 'message' => $exception->getMessage(), - 'file' => $exception->getFile(), - 'line' => $exception->getLine(), - 'trace' => $trace, - ]; - } - - /** - * Mask sensitive data in the trace. - */ - protected function maskSensitiveData(array $trace, array $keysToMask, string $path = ''): array - { - foreach ($trace as $i => $line) { - $trace[$i]['args'] = $this->maskData($line['args'], $keysToMask); - } - - return $trace; - } - - /** - * @param array|object $args - * - * @return array|object - */ - private function maskData($args, array $keysToMask, string $path = '') - { - foreach ($keysToMask as $keyToMask) { - $explode = explode('/', $keyToMask); - $index = end($explode); - - if (strpos(strrev($path . '/' . $index), strrev($keyToMask)) === 0) { - if (is_array($args) && array_key_exists($index, $args)) { - $args[$index] = '******************'; - } elseif ( - is_object($args) && property_exists($args, $index) - && isset($args->{$index}) && is_scalar($args->{$index}) - ) { - $args->{$index} = '******************'; - } - } - } - - if (is_array($args)) { - foreach ($args as $pathKey => $subarray) { - $args[$pathKey] = $this->maskData($subarray, $keysToMask, $path . '/' . $pathKey); - } - } elseif (is_object($args)) { - foreach ($args as $pathKey => $subarray) { - $args->{$pathKey} = $this->maskData($subarray, $keysToMask, $path . '/' . $pathKey); - } - } - - return $args; - } - - /** - * Describes memory usage in real-world units. Intended for use - * with memory_get_usage, etc. - * - * @used-by app/Views/errors/html/error_exception.php - */ - protected static function describeMemory(int $bytes): string - { - helper('number'); - - return number_to_size($bytes, 2); - } - - /** - * Creates a syntax-highlighted version of a PHP file. - * - * @used-by app/Views/errors/html/error_exception.php - * - * @return bool|string - */ - protected static function highlightFile(string $file, int $lineNumber, int $lines = 15) - { - if ($file === '' || ! is_readable($file)) { - return false; - } - - // Set our highlight colors: - if (function_exists('ini_set')) { - ini_set('highlight.comment', '#767a7e; font-style: italic'); - ini_set('highlight.default', '#c7c7c7'); - ini_set('highlight.html', '#06B'); - ini_set('highlight.keyword', '#f1ce61;'); - ini_set('highlight.string', '#869d6a'); - } - - try { - $source = file_get_contents($file); - } catch (Throwable $e) { - return false; - } - - $source = str_replace(["\r\n", "\r"], "\n", $source); - $source = explode("\n", highlight_string($source, true)); - - if (PHP_VERSION_ID < 80300) { - $source = str_replace('<br />', "\n", $source[1]); - $source = explode("\n", str_replace("\r\n", "\n", $source)); - } else { - // We have to remove these tags since we're preparing the result - // ourselves and these tags are added manually at the end. - $source = str_replace(['<pre><code>', '</code></pre>'], '', $source); - } - - // Get just the part to show - $start = max($lineNumber - (int) round($lines / 2), 0); - - // Get just the lines we need to display, while keeping line numbers... - $source = array_splice($source, $start, $lines, true); - - // Used to format the line number in the source - $format = '% ' . strlen((string) ($start + $lines)) . 'd'; - - $out = ''; - // Because the highlighting may have an uneven number - // of open and close span tags on one line, we need - // to ensure we can close them all to get the lines - // showing correctly. - $spans = 0; - - foreach ($source as $n => $row) { - $spans += substr_count($row, '<span') - substr_count($row, '</span'); - $row = str_replace(["\r", "\n"], ['', ''], $row); - - if (($n + $start + 1) === $lineNumber) { - preg_match_all('#<[^>]+>#', $row, $tags); - - $out .= sprintf( - "<span class='line highlight'><span class='number'>{$format}</span> %s\n</span>%s", - $n + $start + 1, - strip_tags($row), - implode('', $tags[0]) - ); - } else { - $out .= sprintf('<span class="line"><span class="number">' . $format . '</span> %s', $n + $start + 1, $row) . "\n"; - // We're closing only one span tag we added manually line before, - // so we have to increment $spans count to close this tag later. - $spans++; - } - } - - if ($spans > 0) { - $out .= str_repeat('</span>', $spans); - } - - return '<pre><code>' . $out . '</code></pre>'; - } - - /** - * Given an exception and status code will display the error to the client. - * - * @param string|null $viewFile - */ - protected function render(Throwable $exception, int $statusCode, $viewFile = null): void - { - if (empty($viewFile) || ! is_file($viewFile)) { - echo 'The error view files were not found. Cannot render exception trace.'; - - exit(1); - } - - echo (function () use ($exception, $statusCode, $viewFile): string { - $vars = $this->collectVars($exception, $statusCode); - extract($vars, EXTR_SKIP); - - // CLI error views output to STDERR/STDOUT, so ob_start() does not work. - ob_start(); - include $viewFile; - - return ob_get_clean(); - })(); - } -} diff --git a/system4.4.6/Debug/ExceptionHandler.php b/system4.4.6/Debug/ExceptionHandler.php deleted file mode 100644 index 63449888..00000000 --- a/system4.4.6/Debug/ExceptionHandler.php +++ /dev/null @@ -1,156 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Debug; - -use CodeIgniter\API\ResponseTrait; -use CodeIgniter\Exceptions\PageNotFoundException; -use CodeIgniter\HTTP\Exceptions\HTTPException; -use CodeIgniter\HTTP\IncomingRequest; -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\ResponseInterface; -use Config\Paths; -use Throwable; - -/** - * @see \CodeIgniter\Debug\ExceptionHandlerTest - */ -final class ExceptionHandler extends BaseExceptionHandler implements ExceptionHandlerInterface -{ - use ResponseTrait; - - /** - * ResponseTrait needs this. - */ - private ?RequestInterface $request = null; - - /** - * ResponseTrait needs this. - */ - private ?ResponseInterface $response = null; - - /** - * Determines the correct way to display the error. - */ - public function handle( - Throwable $exception, - RequestInterface $request, - ResponseInterface $response, - int $statusCode, - int $exitCode - ): void { - // ResponseTrait needs these properties. - $this->request = $request; - $this->response = $response; - - if ($request instanceof IncomingRequest) { - try { - $response->setStatusCode($statusCode); - } catch (HTTPException $e) { - // Workaround for invalid HTTP status code. - $statusCode = 500; - $response->setStatusCode($statusCode); - } - - if (! headers_sent()) { - header( - sprintf( - 'HTTP/%s %s %s', - $request->getProtocolVersion(), - $response->getStatusCode(), - $response->getReasonPhrase() - ), - true, - $statusCode - ); - } - - if (strpos($request->getHeaderLine('accept'), 'text/html') === false) { - $data = (ENVIRONMENT === 'development' || ENVIRONMENT === 'testing') - ? $this->collectVars($exception, $statusCode) - : ''; - - $this->respond($data, $statusCode)->send(); - - if (ENVIRONMENT !== 'testing') { - // @codeCoverageIgnoreStart - exit($exitCode); - // @codeCoverageIgnoreEnd - } - - return; - } - } - - // Determine possible directories of error views - $addPath = ($request instanceof IncomingRequest ? 'html' : 'cli') . DIRECTORY_SEPARATOR; - $path = $this->viewPath . $addPath; - $altPath = rtrim((new Paths())->viewDirectory, '\\/ ') - . DIRECTORY_SEPARATOR . 'errors' . DIRECTORY_SEPARATOR . $addPath; - - // Determine the views - $view = $this->determineView($exception, $path); - $altView = $this->determineView($exception, $altPath); - - // Check if the view exists - $viewFile = null; - if (is_file($path . $view)) { - $viewFile = $path . $view; - } elseif (is_file($altPath . $altView)) { - $viewFile = $altPath . $altView; - } - - // Displays the HTML or CLI error code. - $this->render($exception, $statusCode, $viewFile); - - if (ENVIRONMENT !== 'testing') { - // @codeCoverageIgnoreStart - exit($exitCode); - // @codeCoverageIgnoreEnd - } - } - - /** - * Determines the view to display based on the exception thrown, - * whether an HTTP or CLI request, etc. - * - * @return string The filename of the view file to use - */ - protected function determineView(Throwable $exception, string $templatePath): string - { - // Production environments should have a custom exception file. - $view = 'production.php'; - - if ( - in_array( - strtolower(ini_get('display_errors')), - ['1', 'true', 'on', 'yes'], - true - ) - ) { - $view = 'error_exception.php'; - } - - // 404 Errors - if ($exception instanceof PageNotFoundException) { - return 'error_404.php'; - } - - $templatePath = rtrim($templatePath, '\\/ ') . DIRECTORY_SEPARATOR; - - // Allow for custom views based upon the status code - if (is_file($templatePath . 'error_' . $exception->getCode() . '.php')) { - return 'error_' . $exception->getCode() . '.php'; - } - - return $view; - } -} diff --git a/system4.4.6/Debug/ExceptionHandlerInterface.php b/system4.4.6/Debug/ExceptionHandlerInterface.php deleted file mode 100644 index bbfcb6ba..00000000 --- a/system4.4.6/Debug/ExceptionHandlerInterface.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Debug; - -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\ResponseInterface; -use Throwable; - -interface ExceptionHandlerInterface -{ - /** - * Determines the correct way to display the error. - */ - public function handle( - Throwable $exception, - RequestInterface $request, - ResponseInterface $response, - int $statusCode, - int $exitCode - ): void; -} diff --git a/system4.4.6/Debug/Exceptions.php b/system4.4.6/Debug/Exceptions.php deleted file mode 100644 index 1f5a5b52..00000000 --- a/system4.4.6/Debug/Exceptions.php +++ /dev/null @@ -1,637 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Debug; - -use CodeIgniter\API\ResponseTrait; -use CodeIgniter\Exceptions\HasExitCodeInterface; -use CodeIgniter\Exceptions\HTTPExceptionInterface; -use CodeIgniter\Exceptions\PageNotFoundException; -use CodeIgniter\HTTP\Exceptions\HTTPException; -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\ResponseInterface; -use Config\Exceptions as ExceptionsConfig; -use Config\Paths; -use Config\Services; -use ErrorException; -use Psr\Log\LogLevel; -use Throwable; - -/** - * Exceptions manager - * - * @see \CodeIgniter\Debug\ExceptionsTest - */ -class Exceptions -{ - use ResponseTrait; - - /** - * Nesting level of the output buffering mechanism - * - * @var int - * - * @deprecated 4.4.0 No longer used. Moved to BaseExceptionHandler. - */ - public $ob_level; - - /** - * The path to the directory containing the - * cli and html error view directories. - * - * @var string - * - * @deprecated 4.4.0 No longer used. Moved to BaseExceptionHandler. - */ - protected $viewPath; - - /** - * Config for debug exceptions. - * - * @var ExceptionsConfig - */ - protected $config; - - /** - * The request. - * - * @var RequestInterface|null - */ - protected $request; - - /** - * The outgoing response. - * - * @var ResponseInterface - */ - protected $response; - - private ?Throwable $exceptionCaughtByExceptionHandler = null; - - public function __construct(ExceptionsConfig $config) - { - // For backward compatibility - $this->ob_level = ob_get_level(); - $this->viewPath = rtrim($config->errorViewPath, '\\/ ') . DIRECTORY_SEPARATOR; - - $this->config = $config; - - // workaround for upgraded users - // This causes "Deprecated: Creation of dynamic property" in PHP 8.2. - // @TODO remove this after dropping PHP 8.1 support. - if (! isset($this->config->sensitiveDataInTrace)) { - $this->config->sensitiveDataInTrace = []; - } - if (! isset($this->config->logDeprecations, $this->config->deprecationLogLevel)) { - $this->config->logDeprecations = false; - $this->config->deprecationLogLevel = LogLevel::WARNING; - } - } - - /** - * Responsible for registering the error, exception and shutdown - * handling of our application. - * - * @codeCoverageIgnore - * - * @return void - */ - public function initialize() - { - set_exception_handler([$this, 'exceptionHandler']); - set_error_handler([$this, 'errorHandler']); - register_shutdown_function([$this, 'shutdownHandler']); - } - - /** - * Catches any uncaught errors and exceptions, including most Fatal errors - * (Yay PHP7!). Will log the error, display it if display_errors is on, - * and fire an event that allows custom actions to be taken at this point. - * - * @return void - */ - public function exceptionHandler(Throwable $exception) - { - $this->exceptionCaughtByExceptionHandler = $exception; - - [$statusCode, $exitCode] = $this->determineCodes($exception); - - if ($this->config->log === true && ! in_array($statusCode, $this->config->ignoreCodes, true)) { - log_message('critical', get_class($exception) . ": {message}\nin {exFile} on line {exLine}.\n{trace}", [ - 'message' => $exception->getMessage(), - 'exFile' => clean_path($exception->getFile()), // {file} refers to THIS file - 'exLine' => $exception->getLine(), // {line} refers to THIS line - 'trace' => self::renderBacktrace($exception->getTrace()), - ]); - - // Get the first exception. - $last = $exception; - - while ($prevException = $last->getPrevious()) { - $last = $prevException; - - log_message('critical', '[Caused by] ' . get_class($prevException) . ": {message}\nin {exFile} on line {exLine}.\n{trace}", [ - 'message' => $prevException->getMessage(), - 'exFile' => clean_path($prevException->getFile()), // {file} refers to THIS file - 'exLine' => $prevException->getLine(), // {line} refers to THIS line - 'trace' => self::renderBacktrace($prevException->getTrace()), - ]); - } - } - - $this->request = Services::request(); - $this->response = Services::response(); - - if (method_exists($this->config, 'handler')) { - // Use new ExceptionHandler - $handler = $this->config->handler($statusCode, $exception); - $handler->handle( - $exception, - $this->request, - $this->response, - $statusCode, - $exitCode - ); - - return; - } - - // For backward compatibility - if (! is_cli()) { - try { - $this->response->setStatusCode($statusCode); - } catch (HTTPException $e) { - // Workaround for invalid HTTP status code. - $statusCode = 500; - $this->response->setStatusCode($statusCode); - } - - if (! headers_sent()) { - header(sprintf('HTTP/%s %s %s', $this->request->getProtocolVersion(), $this->response->getStatusCode(), $this->response->getReasonPhrase()), true, $statusCode); - } - - if (strpos($this->request->getHeaderLine('accept'), 'text/html') === false) { - $this->respond(ENVIRONMENT === 'development' ? $this->collectVars($exception, $statusCode) : '', $statusCode)->send(); - - exit($exitCode); - } - } - - $this->render($exception, $statusCode); - - exit($exitCode); - } - - /** - * The callback to be registered to `set_error_handler()`. - * - * @return bool - * - * @throws ErrorException - * - * @codeCoverageIgnore - */ - public function errorHandler(int $severity, string $message, ?string $file = null, ?int $line = null) - { - if ($this->isDeprecationError($severity)) { - if (! $this->config->logDeprecations || (bool) env('CODEIGNITER_SCREAM_DEPRECATIONS')) { - throw new ErrorException($message, 0, $severity, $file, $line); - } - - return $this->handleDeprecationError($message, $file, $line); - } - - if ((error_reporting() & $severity) !== 0) { - throw new ErrorException($message, 0, $severity, $file, $line); - } - - return false; // return false to propagate the error to PHP standard error handler - } - - /** - * Checks to see if any errors have happened during shutdown that - * need to be caught and handle them. - * - * @codeCoverageIgnore - * - * @return void - */ - public function shutdownHandler() - { - $error = error_get_last(); - - if ($error === null) { - return; - } - - ['type' => $type, 'message' => $message, 'file' => $file, 'line' => $line] = $error; - - if ($this->exceptionCaughtByExceptionHandler instanceof Throwable) { - $message .= "\n【Previous Exception】\n" - . get_class($this->exceptionCaughtByExceptionHandler) . "\n" - . $this->exceptionCaughtByExceptionHandler->getMessage() . "\n" - . $this->exceptionCaughtByExceptionHandler->getTraceAsString(); - } - - if (in_array($type, [E_ERROR, E_CORE_ERROR, E_COMPILE_ERROR, E_PARSE], true)) { - $this->exceptionHandler(new ErrorException($message, 0, $type, $file, $line)); - } - } - - /** - * Determines the view to display based on the exception thrown, - * whether an HTTP or CLI request, etc. - * - * @return string The path and filename of the view file to use - * - * @deprecated 4.4.0 No longer used. Moved to ExceptionHandler. - */ - protected function determineView(Throwable $exception, string $templatePath): string - { - // Production environments should have a custom exception file. - $view = 'production.php'; - $templatePath = rtrim($templatePath, '\\/ ') . DIRECTORY_SEPARATOR; - - if ( - in_array( - strtolower(ini_get('display_errors')), - ['1', 'true', 'on', 'yes'], - true - ) - ) { - $view = 'error_exception.php'; - } - - // 404 Errors - if ($exception instanceof PageNotFoundException) { - return 'error_404.php'; - } - - // Allow for custom views based upon the status code - if (is_file($templatePath . 'error_' . $exception->getCode() . '.php')) { - return 'error_' . $exception->getCode() . '.php'; - } - - return $view; - } - - /** - * Given an exception and status code will display the error to the client. - * - * @return void - * - * @deprecated 4.4.0 No longer used. Moved to BaseExceptionHandler. - */ - protected function render(Throwable $exception, int $statusCode) - { - // Determine possible directories of error views - $path = $this->viewPath; - $altPath = rtrim((new Paths())->viewDirectory, '\\/ ') . DIRECTORY_SEPARATOR . 'errors' . DIRECTORY_SEPARATOR; - - $path .= (is_cli() ? 'cli' : 'html') . DIRECTORY_SEPARATOR; - $altPath .= (is_cli() ? 'cli' : 'html') . DIRECTORY_SEPARATOR; - - // Determine the views - $view = $this->determineView($exception, $path); - $altView = $this->determineView($exception, $altPath); - - // Check if the view exists - if (is_file($path . $view)) { - $viewFile = $path . $view; - } elseif (is_file($altPath . $altView)) { - $viewFile = $altPath . $altView; - } - - if (! isset($viewFile)) { - echo 'The error view files were not found. Cannot render exception trace.'; - - exit(1); - } - - echo (function () use ($exception, $statusCode, $viewFile): string { - $vars = $this->collectVars($exception, $statusCode); - extract($vars, EXTR_SKIP); - - ob_start(); - include $viewFile; - - return ob_get_clean(); - })(); - } - - /** - * Gathers the variables that will be made available to the view. - * - * @deprecated 4.4.0 No longer used. Moved to BaseExceptionHandler. - */ - protected function collectVars(Throwable $exception, int $statusCode): array - { - // Get the first exception. - $firstException = $exception; - - while ($prevException = $firstException->getPrevious()) { - $firstException = $prevException; - } - - $trace = $firstException->getTrace(); - - if ($this->config->sensitiveDataInTrace !== []) { - $trace = $this->maskSensitiveData($trace, $this->config->sensitiveDataInTrace); - } - - return [ - 'title' => get_class($exception), - 'type' => get_class($exception), - 'code' => $statusCode, - 'message' => $exception->getMessage(), - 'file' => $exception->getFile(), - 'line' => $exception->getLine(), - 'trace' => $trace, - ]; - } - - /** - * Mask sensitive data in the trace. - * - * @param array $trace - * - * @return array - * - * @deprecated 4.4.0 No longer used. Moved to BaseExceptionHandler. - */ - protected function maskSensitiveData($trace, array $keysToMask, string $path = '') - { - foreach ($trace as $i => $line) { - $trace[$i]['args'] = $this->maskData($line['args'], $keysToMask); - } - - return $trace; - } - - /** - * @param array|object $args - * - * @return array|object - * - * @deprecated 4.4.0 No longer used. Moved to BaseExceptionHandler. - */ - private function maskData($args, array $keysToMask, string $path = '') - { - foreach ($keysToMask as $keyToMask) { - $explode = explode('/', $keyToMask); - $index = end($explode); - - if (strpos(strrev($path . '/' . $index), strrev($keyToMask)) === 0) { - if (is_array($args) && array_key_exists($index, $args)) { - $args[$index] = '******************'; - } elseif ( - is_object($args) && property_exists($args, $index) - && isset($args->{$index}) && is_scalar($args->{$index}) - ) { - $args->{$index} = '******************'; - } - } - } - - if (is_array($args)) { - foreach ($args as $pathKey => $subarray) { - $args[$pathKey] = $this->maskData($subarray, $keysToMask, $path . '/' . $pathKey); - } - } elseif (is_object($args)) { - foreach ($args as $pathKey => $subarray) { - $args->{$pathKey} = $this->maskData($subarray, $keysToMask, $path . '/' . $pathKey); - } - } - - return $args; - } - - /** - * Determines the HTTP status code and the exit status code for this request. - */ - protected function determineCodes(Throwable $exception): array - { - $statusCode = 500; - $exitStatus = EXIT_ERROR; - - if ($exception instanceof HTTPExceptionInterface) { - $statusCode = $exception->getCode(); - } - - if ($exception instanceof HasExitCodeInterface) { - $exitStatus = $exception->getExitCode(); - } - - return [$statusCode, $exitStatus]; - } - - private function isDeprecationError(int $error): bool - { - $deprecations = E_DEPRECATED | E_USER_DEPRECATED; - - return ($error & $deprecations) !== 0; - } - - /** - * @return true - */ - private function handleDeprecationError(string $message, ?string $file = null, ?int $line = null): bool - { - // Remove the trace of the error handler. - $trace = array_slice(debug_backtrace(), 2); - - log_message( - $this->config->deprecationLogLevel, - "[DEPRECATED] {message} in {errFile} on line {errLine}.\n{trace}", - [ - 'message' => $message, - 'errFile' => clean_path($file ?? ''), - 'errLine' => $line ?? 0, - 'trace' => self::renderBacktrace($trace), - ] - ); - - return true; - } - - // -------------------------------------------------------------------- - // Display Methods - // -------------------------------------------------------------------- - - /** - * This makes nicer looking paths for the error output. - * - * @deprecated Use dedicated `clean_path()` function. - */ - public static function cleanPath(string $file): string - { - switch (true) { - case strpos($file, APPPATH) === 0: - $file = 'APPPATH' . DIRECTORY_SEPARATOR . substr($file, strlen(APPPATH)); - break; - - case strpos($file, SYSTEMPATH) === 0: - $file = 'SYSTEMPATH' . DIRECTORY_SEPARATOR . substr($file, strlen(SYSTEMPATH)); - break; - - case strpos($file, FCPATH) === 0: - $file = 'FCPATH' . DIRECTORY_SEPARATOR . substr($file, strlen(FCPATH)); - break; - - case defined('VENDORPATH') && strpos($file, VENDORPATH) === 0: - $file = 'VENDORPATH' . DIRECTORY_SEPARATOR . substr($file, strlen(VENDORPATH)); - break; - } - - return $file; - } - - /** - * Describes memory usage in real-world units. Intended for use - * with memory_get_usage, etc. - * - * @deprecated 4.4.0 No longer used. Moved to BaseExceptionHandler. - */ - public static function describeMemory(int $bytes): string - { - if ($bytes < 1024) { - return $bytes . 'B'; - } - - if ($bytes < 1_048_576) { - return round($bytes / 1024, 2) . 'KB'; - } - - return round($bytes / 1_048_576, 2) . 'MB'; - } - - /** - * Creates a syntax-highlighted version of a PHP file. - * - * @return bool|string - * - * @deprecated 4.4.0 No longer used. Moved to BaseExceptionHandler. - */ - public static function highlightFile(string $file, int $lineNumber, int $lines = 15) - { - if ($file === '' || ! is_readable($file)) { - return false; - } - - // Set our highlight colors: - if (function_exists('ini_set')) { - ini_set('highlight.comment', '#767a7e; font-style: italic'); - ini_set('highlight.default', '#c7c7c7'); - ini_set('highlight.html', '#06B'); - ini_set('highlight.keyword', '#f1ce61;'); - ini_set('highlight.string', '#869d6a'); - } - - try { - $source = file_get_contents($file); - } catch (Throwable $e) { - return false; - } - - $source = str_replace(["\r\n", "\r"], "\n", $source); - $source = explode("\n", highlight_string($source, true)); - $source = str_replace('<br />', "\n", $source[1]); - $source = explode("\n", str_replace("\r\n", "\n", $source)); - - // Get just the part to show - $start = max($lineNumber - (int) round($lines / 2), 0); - - // Get just the lines we need to display, while keeping line numbers... - $source = array_splice($source, $start, $lines, true); - - // Used to format the line number in the source - $format = '% ' . strlen((string) ($start + $lines)) . 'd'; - - $out = ''; - // Because the highlighting may have an uneven number - // of open and close span tags on one line, we need - // to ensure we can close them all to get the lines - // showing correctly. - $spans = 1; - - foreach ($source as $n => $row) { - $spans += substr_count($row, '<span') - substr_count($row, '</span'); - $row = str_replace(["\r", "\n"], ['', ''], $row); - - if (($n + $start + 1) === $lineNumber) { - preg_match_all('#<[^>]+>#', $row, $tags); - - $out .= sprintf( - "<span class='line highlight'><span class='number'>{$format}</span> %s\n</span>%s", - $n + $start + 1, - strip_tags($row), - implode('', $tags[0]) - ); - } else { - $out .= sprintf('<span class="line"><span class="number">' . $format . '</span> %s', $n + $start + 1, $row) . "\n"; - } - } - - if ($spans > 0) { - $out .= str_repeat('</span>', $spans); - } - - return '<pre><code>' . $out . '</code></pre>'; - } - - private static function renderBacktrace(array $backtrace): string - { - $backtraces = []; - - foreach ($backtrace as $index => $trace) { - $frame = $trace + ['file' => '[internal function]', 'line' => '', 'class' => '', 'type' => '', 'args' => []]; - - if ($frame['file'] !== '[internal function]') { - $frame['file'] = sprintf('%s(%s)', $frame['file'], $frame['line']); - } - - unset($frame['line']); - $idx = $index; - $idx = str_pad((string) ++$idx, 2, ' ', STR_PAD_LEFT); - - $args = implode(', ', array_map(static function ($value): string { - switch (true) { - case is_object($value): - return sprintf('Object(%s)', get_class($value)); - - case is_array($value): - return $value !== [] ? '[...]' : '[]'; - - case $value === null: - return 'null'; - - case is_resource($value): - return sprintf('resource (%s)', get_resource_type($value)); - - default: - return var_export($value, true); - } - }, $frame['args'])); - - $backtraces[] = sprintf( - '%s %s: %s%s%s(%s)', - $idx, - clean_path($frame['file']), - $frame['class'], - $frame['type'], - $frame['function'], - $args - ); - } - - return implode("\n", $backtraces); - } -} diff --git a/system4.4.6/Debug/Iterator.php b/system4.4.6/Debug/Iterator.php deleted file mode 100644 index 4bfb3a5b..00000000 --- a/system4.4.6/Debug/Iterator.php +++ /dev/null @@ -1,132 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Debug; - -use Closure; - -/** - * Iterator for debugging. - */ -class Iterator -{ - /** - * Stores the tests that we are to run. - * - * @var array - */ - protected $tests = []; - - /** - * Stores the results of each of the tests. - * - * @var array - */ - protected $results = []; - - /** - * Adds a test to run. - * - * Tests are simply closures that the user can define any sequence of - * things to happen during the test. - * - * @param Closure(): mixed $closure - * - * @return $this - */ - public function add(string $name, Closure $closure) - { - $name = strtolower($name); - - $this->tests[$name] = $closure; - - return $this; - } - - /** - * Runs through all of the tests that have been added, recording - * time to execute the desired number of iterations, and the approximate - * memory usage used during those iterations. - * - * @return string|null - */ - public function run(int $iterations = 1000, bool $output = true) - { - foreach ($this->tests as $name => $test) { - // clear memory before start - gc_collect_cycles(); - - $start = microtime(true); - $startMem = $maxMemory = memory_get_usage(true); - - for ($i = 0; $i < $iterations; $i++) { - $result = $test(); - $maxMemory = max($maxMemory, memory_get_usage(true)); - - unset($result); - } - - $this->results[$name] = [ - 'time' => microtime(true) - $start, - 'memory' => $maxMemory - $startMem, - 'n' => $iterations, - ]; - } - - if ($output) { - return $this->getReport(); - } - - return null; - } - - /** - * Get results. - */ - public function getReport(): string - { - if ($this->results === []) { - return 'No results to display.'; - } - - helper('number'); - - // Template - $tpl = '<table> - <thead> - <tr> - <td>Test</td> - <td>Time</td> - <td>Memory</td> - </tr> - </thead> - <tbody> - {rows} - </tbody> - </table>'; - - $rows = ''; - - foreach ($this->results as $name => $result) { - $memory = number_to_size($result['memory'], 4); - - $rows .= "<tr> - <td>{$name}</td> - <td>" . number_format($result['time'], 4) . "</td> - <td>{$memory}</td> - </tr>"; - } - - $tpl = str_replace('{rows}', $rows, $tpl); - - return $tpl . '<br/>'; - } -} diff --git a/system4.4.6/Debug/Timer.php b/system4.4.6/Debug/Timer.php deleted file mode 100644 index 45c0bf86..00000000 --- a/system4.4.6/Debug/Timer.php +++ /dev/null @@ -1,149 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Debug; - -use RuntimeException; - -/** - * Class Timer - * - * Provides a simple way to measure the amount of time - * that elapses between two points. - * - * @see \CodeIgniter\Debug\TimerTest - */ -class Timer -{ - /** - * List of all timers. - * - * @var array - */ - protected $timers = []; - - /** - * Starts a timer running. - * - * Multiple calls can be made to this method so that several - * execution points can be measured. - * - * @param string $name The name of this timer. - * @param float|null $time Allows user to provide time. - * - * @return Timer - */ - public function start(string $name, ?float $time = null) - { - $this->timers[strtolower($name)] = [ - 'start' => ! empty($time) ? $time : microtime(true), - 'end' => null, - ]; - - return $this; - } - - /** - * Stops a running timer. - * - * If the timer is not stopped before the timers() method is called, - * it will be automatically stopped at that point. - * - * @param string $name The name of this timer. - * - * @return Timer - */ - public function stop(string $name) - { - $name = strtolower($name); - - if (empty($this->timers[$name])) { - throw new RuntimeException('Cannot stop timer: invalid name given.'); - } - - $this->timers[$name]['end'] = microtime(true); - - return $this; - } - - /** - * Returns the duration of a recorded timer. - * - * @param string $name The name of the timer. - * @param int $decimals Number of decimal places. - * - * @return float|null Returns null if timer does not exist by that name. - * Returns a float representing the number of - * seconds elapsed while that timer was running. - */ - public function getElapsedTime(string $name, int $decimals = 4) - { - $name = strtolower($name); - - if (empty($this->timers[$name])) { - return null; - } - - $timer = $this->timers[$name]; - - if (empty($timer['end'])) { - $timer['end'] = microtime(true); - } - - return (float) number_format($timer['end'] - $timer['start'], $decimals, '.', ''); - } - - /** - * Returns the array of timers, with the duration pre-calculated for you. - * - * @param int $decimals Number of decimal places - */ - public function getTimers(int $decimals = 4): array - { - $timers = $this->timers; - - foreach ($timers as &$timer) { - if (empty($timer['end'])) { - $timer['end'] = microtime(true); - } - - $timer['duration'] = (float) number_format($timer['end'] - $timer['start'], $decimals); - } - - return $timers; - } - - /** - * Checks whether or not a timer with the specified name exists. - */ - public function has(string $name): bool - { - return array_key_exists(strtolower($name), $this->timers); - } - - /** - * Executes callable and measures its time. - * Returns its return value if any. - * - * @param string $name The name of the timer - * @param callable(): mixed $callable callable to be executed - * - * @return mixed - */ - public function record(string $name, callable $callable) - { - $this->start($name); - $returnValue = $callable(); - $this->stop($name); - - return $returnValue; - } -} diff --git a/system4.4.6/Debug/Toolbar.php b/system4.4.6/Debug/Toolbar.php deleted file mode 100644 index 1a8faaf3..00000000 --- a/system4.4.6/Debug/Toolbar.php +++ /dev/null @@ -1,529 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Debug; - -use CodeIgniter\CodeIgniter; -use CodeIgniter\Debug\Toolbar\Collectors\BaseCollector; -use CodeIgniter\Debug\Toolbar\Collectors\Config; -use CodeIgniter\Debug\Toolbar\Collectors\History; -use CodeIgniter\Format\JSONFormatter; -use CodeIgniter\Format\XMLFormatter; -use CodeIgniter\HTTP\DownloadResponse; -use CodeIgniter\HTTP\IncomingRequest; -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\ResponseInterface; -use CodeIgniter\I18n\Time; -use Config\Services; -use Config\Toolbar as ToolbarConfig; -use Kint\Kint; - -/** - * Displays a toolbar with bits of stats to aid a developer in debugging. - * - * Inspiration: http://prophiler.fabfuel.de - */ -class Toolbar -{ - /** - * Toolbar configuration settings. - * - * @var ToolbarConfig - */ - protected $config; - - /** - * Collectors to be used and displayed. - * - * @var BaseCollector[] - */ - protected $collectors = []; - - public function __construct(ToolbarConfig $config) - { - $this->config = $config; - - foreach ($config->collectors as $collector) { - if (! class_exists($collector)) { - log_message( - 'critical', - 'Toolbar collector does not exist (' . $collector . ').' - . ' Please check $collectors in the app/Config/Toolbar.php file.' - ); - - continue; - } - - $this->collectors[] = new $collector(); - } - } - - /** - * Returns all the data required by Debug Bar - * - * @param float $startTime App start time - * @param IncomingRequest $request - * - * @return string JSON encoded data - */ - public function run(float $startTime, float $totalTime, RequestInterface $request, ResponseInterface $response): string - { - $data = []; - // Data items used within the view. - $data['url'] = current_url(); - $data['method'] = strtoupper($request->getMethod()); - $data['isAJAX'] = $request->isAJAX(); - $data['startTime'] = $startTime; - $data['totalTime'] = $totalTime * 1000; - $data['totalMemory'] = number_format(memory_get_peak_usage() / 1024 / 1024, 3); - $data['segmentDuration'] = $this->roundTo($data['totalTime'] / 7); - $data['segmentCount'] = (int) ceil($data['totalTime'] / $data['segmentDuration']); - $data['CI_VERSION'] = CodeIgniter::CI_VERSION; - $data['collectors'] = []; - - foreach ($this->collectors as $collector) { - $data['collectors'][] = $collector->getAsArray(); - } - - foreach ($this->collectVarData() as $heading => $items) { - $varData = []; - - if (is_array($items)) { - foreach ($items as $key => $value) { - if (is_string($value)) { - $varData[esc($key)] = esc($value); - } else { - $oldKintMode = Kint::$mode_default; - $oldKintCalledFrom = Kint::$display_called_from; - - Kint::$mode_default = Kint::MODE_RICH; - Kint::$display_called_from = false; - - $kint = @Kint::dump($value); - $kint = substr($kint, strpos($kint, '</style>') + 8); - - Kint::$mode_default = $oldKintMode; - Kint::$display_called_from = $oldKintCalledFrom; - - $varData[esc($key)] = $kint; - } - } - } - - $data['vars']['varData'][esc($heading)] = $varData; - } - - if (isset($_SESSION)) { - foreach ($_SESSION as $key => $value) { - // Replace the binary data with string to avoid json_encode failure. - if (is_string($value) && preg_match('~[^\x20-\x7E\t\r\n]~', $value)) { - $value = 'binary data'; - } - - $data['vars']['session'][esc($key)] = is_string($value) ? esc($value) : '<pre>' . esc(print_r($value, true)) . '</pre>'; - } - } - - foreach ($request->getGet() as $name => $value) { - $data['vars']['get'][esc($name)] = is_array($value) ? '<pre>' . esc(print_r($value, true)) . '</pre>' : esc($value); - } - - foreach ($request->getPost() as $name => $value) { - $data['vars']['post'][esc($name)] = is_array($value) ? '<pre>' . esc(print_r($value, true)) . '</pre>' : esc($value); - } - - foreach ($request->headers() as $header) { - $data['vars']['headers'][esc($header->getName())] = esc($header->getValueLine()); - } - - foreach ($request->getCookie() as $name => $value) { - $data['vars']['cookies'][esc($name)] = esc($value); - } - - $data['vars']['request'] = ($request->isSecure() ? 'HTTPS' : 'HTTP') . '/' . $request->getProtocolVersion(); - - $data['vars']['response'] = [ - 'statusCode' => $response->getStatusCode(), - 'reason' => esc($response->getReasonPhrase()), - 'contentType' => esc($response->getHeaderLine('content-type')), - 'headers' => [], - ]; - - foreach ($response->headers() as $header) { - $data['vars']['response']['headers'][esc($header->getName())] = esc($header->getValueLine()); - } - - $data['config'] = Config::display(); - - $response->getCSP()->addImageSrc('data:'); - - return json_encode($data); - } - - /** - * Called within the view to display the timeline itself. - */ - protected function renderTimeline(array $collectors, float $startTime, int $segmentCount, int $segmentDuration, array &$styles): string - { - $rows = $this->collectTimelineData($collectors); - $styleCount = 0; - - // Use recursive render function - return $this->renderTimelineRecursive($rows, $startTime, $segmentCount, $segmentDuration, $styles, $styleCount); - } - - /** - * Recursively renders timeline elements and their children. - */ - protected function renderTimelineRecursive(array $rows, float $startTime, int $segmentCount, int $segmentDuration, array &$styles, int &$styleCount, int $level = 0, bool $isChild = false): string - { - $displayTime = $segmentCount * $segmentDuration; - - $output = ''; - - foreach ($rows as $row) { - $hasChildren = isset($row['children']) && ! empty($row['children']); - $isQuery = isset($row['query']) && ! empty($row['query']); - - // Open controller timeline by default - $open = $row['name'] === 'Controller'; - - if ($hasChildren || $isQuery) { - $output .= '<tr class="timeline-parent' . ($open ? ' timeline-parent-open' : '') . '" id="timeline-' . $styleCount . '_parent" data-toggle="childrows" data-child="timeline-' . $styleCount . '">'; - } else { - $output .= '<tr>'; - } - - $output .= '<td class="' . ($isChild ? 'debug-bar-width30' : '') . ' debug-bar-level-' . $level . '" >' . ($hasChildren || $isQuery ? '<nav></nav>' : '') . $row['name'] . '</td>'; - $output .= '<td class="' . ($isChild ? 'debug-bar-width10' : '') . '">' . $row['component'] . '</td>'; - $output .= '<td class="' . ($isChild ? 'debug-bar-width10 ' : '') . 'debug-bar-alignRight">' . number_format($row['duration'] * 1000, 2) . ' ms</td>'; - $output .= "<td class='debug-bar-noverflow' colspan='{$segmentCount}'>"; - - $offset = ((((float) $row['start'] - $startTime) * 1000) / $displayTime) * 100; - $length = (((float) $row['duration'] * 1000) / $displayTime) * 100; - - $styles['debug-bar-timeline-' . $styleCount] = "left: {$offset}%; width: {$length}%;"; - - $output .= "<span class='timer debug-bar-timeline-{$styleCount}' title='" . number_format($length, 2) . "%'></span>"; - $output .= '</td>'; - $output .= '</tr>'; - - $styleCount++; - - // Add children if any - if ($hasChildren || $isQuery) { - $output .= '<tr class="child-row ' . ($open ? '' : ' debug-bar-ndisplay') . '" id="timeline-' . ($styleCount - 1) . '_children" >'; - $output .= '<td colspan="' . ($segmentCount + 3) . '" class="child-container">'; - $output .= '<table class="timeline">'; - $output .= '<tbody>'; - - if ($isQuery) { - // Output query string if query - $output .= '<tr>'; - $output .= '<td class="query-container debug-bar-level-' . ($level + 1) . '" >' . $row['query'] . '</td>'; - $output .= '</tr>'; - } else { - // Recursively render children - $output .= $this->renderTimelineRecursive($row['children'], $startTime, $segmentCount, $segmentDuration, $styles, $styleCount, $level + 1, true); - } - - $output .= '</tbody>'; - $output .= '</table>'; - $output .= '</td>'; - $output .= '</tr>'; - } - } - - return $output; - } - - /** - * Returns a sorted array of timeline data arrays from the collectors. - * - * @param array $collectors - */ - protected function collectTimelineData($collectors): array - { - $data = []; - - // Collect it - foreach ($collectors as $collector) { - if (! $collector['hasTimelineData']) { - continue; - } - - $data = array_merge($data, $collector['timelineData']); - } - - // Sort it - $sortArray = [ - array_column($data, 'start'), SORT_NUMERIC, SORT_ASC, - array_column($data, 'duration'), SORT_NUMERIC, SORT_DESC, - &$data, - ]; - - array_multisort(...$sortArray); - - // Add end time to each element - array_walk($data, static function (&$row) { - $row['end'] = $row['start'] + $row['duration']; - }); - - // Group it - $data = $this->structureTimelineData($data); - - return $data; - } - - /** - * Arranges the already sorted timeline data into a parent => child structure. - */ - protected function structureTimelineData(array $elements): array - { - // We define ourselves as the first element of the array - $element = array_shift($elements); - - // If we have children behind us, collect and attach them to us - while ($elements !== [] && $elements[array_key_first($elements)]['end'] <= $element['end']) { - $element['children'][] = array_shift($elements); - } - - // Make sure our children know whether they have children, too - if (isset($element['children'])) { - $element['children'] = $this->structureTimelineData($element['children']); - } - - // If we have no younger siblings, we can return - if ($elements === []) { - return [$element]; - } - - // Make sure our younger siblings know their relatives, too - return array_merge([$element], $this->structureTimelineData($elements)); - } - - /** - * Returns an array of data from all of the modules - * that should be displayed in the 'Vars' tab. - */ - protected function collectVarData(): array - { - if (! ($this->config->collectVarData ?? true)) { - return []; - } - - $data = []; - - foreach ($this->collectors as $collector) { - if (! $collector->hasVarData()) { - continue; - } - - $data = array_merge($data, $collector->getVarData()); - } - - return $data; - } - - /** - * Rounds a number to the nearest incremental value. - */ - protected function roundTo(float $number, int $increments = 5): float - { - $increments = 1 / $increments; - - return ceil($number * $increments) / $increments; - } - - /** - * Prepare for debugging.. - * - * @return void - */ - public function prepare(?RequestInterface $request = null, ?ResponseInterface $response = null) - { - /** - * @var IncomingRequest|null $request - */ - if (CI_DEBUG && ! is_cli()) { - $app = Services::codeigniter(); - - $request ??= Services::request(); - $response ??= Services::response(); - - // Disable the toolbar for downloads - if ($response instanceof DownloadResponse) { - return; - } - - $toolbar = Services::toolbar(config(ToolbarConfig::class)); - $stats = $app->getPerformanceStats(); - $data = $toolbar->run( - $stats['startTime'], - $stats['totalTime'], - $request, - $response - ); - - helper('filesystem'); - - // Updated to microtime() so we can get history - $time = sprintf('%.6f', Time::now()->format('U.u')); - - if (! is_dir(WRITEPATH . 'debugbar')) { - mkdir(WRITEPATH . 'debugbar', 0777); - } - - write_file(WRITEPATH . 'debugbar/debugbar_' . $time . '.json', $data, 'w+'); - - $format = $response->getHeaderLine('content-type'); - - // Non-HTML formats should not include the debugbar - // then we send headers saying where to find the debug data - // for this response - if ($request->isAJAX() || strpos($format, 'html') === false) { - $response->setHeader('Debugbar-Time', "{$time}") - ->setHeader('Debugbar-Link', site_url("?debugbar_time={$time}")); - - return; - } - - $oldKintMode = Kint::$mode_default; - Kint::$mode_default = Kint::MODE_RICH; - $kintScript = @Kint::dump(''); - Kint::$mode_default = $oldKintMode; - $kintScript = substr($kintScript, 0, strpos($kintScript, '</style>') + 8); - $kintScript = ($kintScript === '0') ? '' : $kintScript; - - $script = PHP_EOL - . '<script ' . csp_script_nonce() . ' id="debugbar_loader" ' - . 'data-time="' . $time . '" ' - . 'src="' . site_url() . '?debugbar"></script>' - . '<script ' . csp_script_nonce() . ' id="debugbar_dynamic_script"></script>' - . '<style ' . csp_style_nonce() . ' id="debugbar_dynamic_style"></style>' - . $kintScript - . PHP_EOL; - - if (strpos($response->getBody(), '<head>') !== false) { - $response->setBody( - preg_replace( - '/<head>/', - '<head>' . $script, - $response->getBody(), - 1 - ) - ); - - return; - } - - $response->appendBody($script); - } - } - - /** - * Inject debug toolbar into the response. - * - * @codeCoverageIgnore - * - * @return void - */ - public function respond() - { - if (ENVIRONMENT === 'testing') { - return; - } - - $request = Services::request(); - - // If the request contains '?debugbar then we're - // simply returning the loading script - if ($request->getGet('debugbar') !== null) { - header('Content-Type: application/javascript'); - - ob_start(); - include $this->config->viewsPath . 'toolbarloader.js'; - $output = ob_get_clean(); - $output = str_replace('{url}', rtrim(site_url(), '/'), $output); - echo $output; - - exit; - } - - // Otherwise, if it includes ?debugbar_time, then - // we should return the entire debugbar. - if ($request->getGet('debugbar_time')) { - helper('security'); - - // Negotiate the content-type to format the output - $format = $request->negotiate('media', ['text/html', 'application/json', 'application/xml']); - $format = explode('/', $format)[1]; - - $filename = sanitize_filename('debugbar_' . $request->getGet('debugbar_time')); - $filename = WRITEPATH . 'debugbar/' . $filename . '.json'; - - if (is_file($filename)) { - // Show the toolbar if it exists - echo $this->format(file_get_contents($filename), $format); - - exit; - } - - // Filename not found - http_response_code(404); - - exit; // Exit here is needed to avoid loading the index page - } - } - - /** - * Format output - */ - protected function format(string $data, string $format = 'html'): string - { - $data = json_decode($data, true); - - if ($this->config->maxHistory !== 0 && preg_match('/\d+\.\d{6}/s', (string) Services::request()->getGet('debugbar_time'), $debugbarTime)) { - $history = new History(); - $history->setFiles( - $debugbarTime[0], - $this->config->maxHistory - ); - - $data['collectors'][] = $history->getAsArray(); - } - - $output = ''; - - switch ($format) { - case 'html': - $data['styles'] = []; - extract($data); - $parser = Services::parser($this->config->viewsPath, null, false); - ob_start(); - include $this->config->viewsPath . 'toolbar.tpl.php'; - $output = ob_get_clean(); - break; - - case 'json': - $formatter = new JSONFormatter(); - $output = $formatter->format($data); - break; - - case 'xml': - $formatter = new XMLFormatter(); - $output = $formatter->format($data); - break; - } - - return $output; - } -} diff --git a/system4.4.6/Debug/Toolbar/Collectors/BaseCollector.php b/system4.4.6/Debug/Toolbar/Collectors/BaseCollector.php deleted file mode 100644 index 4704fcdc..00000000 --- a/system4.4.6/Debug/Toolbar/Collectors/BaseCollector.php +++ /dev/null @@ -1,236 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Debug\Toolbar\Collectors; - -/** - * Base Toolbar collector - */ -class BaseCollector -{ - /** - * Whether this collector has data that can - * be displayed in the Timeline. - * - * @var bool - */ - protected $hasTimeline = false; - - /** - * Whether this collector needs to display - * content in a tab or not. - * - * @var bool - */ - protected $hasTabContent = false; - - /** - * Whether this collector needs to display - * a label or not. - * - * @var bool - */ - protected $hasLabel = false; - - /** - * Whether this collector has data that - * should be shown in the Vars tab. - * - * @var bool - */ - protected $hasVarData = false; - - /** - * The 'title' of this Collector. - * Used to name things in the toolbar HTML. - * - * @var string - */ - protected $title = ''; - - /** - * Gets the Collector's title. - */ - public function getTitle(bool $safe = false): string - { - if ($safe) { - return str_replace(' ', '-', strtolower($this->title)); - } - - return $this->title; - } - - /** - * Returns any information that should be shown next to the title. - */ - public function getTitleDetails(): string - { - return ''; - } - - /** - * Does this collector need it's own tab? - */ - public function hasTabContent(): bool - { - return (bool) $this->hasTabContent; - } - - /** - * Does this collector have a label? - */ - public function hasLabel(): bool - { - return (bool) $this->hasLabel; - } - - /** - * Does this collector have information for the timeline? - */ - public function hasTimelineData(): bool - { - return (bool) $this->hasTimeline; - } - - /** - * Grabs the data for the timeline, properly formatted, - * or returns an empty array. - */ - public function timelineData(): array - { - if (! $this->hasTimeline) { - return []; - } - - return $this->formatTimelineData(); - } - - /** - * Does this Collector have data that should be shown in the - * 'Vars' tab? - */ - public function hasVarData(): bool - { - return (bool) $this->hasVarData; - } - - /** - * Gets a collection of data that should be shown in the 'Vars' tab. - * The format is an array of sections, each with their own array - * of key/value pairs: - * - * $data = [ - * 'section 1' => [ - * 'foo' => 'bar, - * 'bar' => 'baz' - * ], - * 'section 2' => [ - * 'foo' => 'bar, - * 'bar' => 'baz' - * ], - * ]; - * - * @return array|null - */ - public function getVarData() - { - return null; - } - - /** - * Child classes should implement this to return the timeline data - * formatted for correct usage. - * - * Timeline data should be formatted into arrays that look like: - * - * [ - * 'name' => 'Database::Query', - * 'component' => 'Database', - * 'start' => 10 // milliseconds - * 'duration' => 15 // milliseconds - * ] - */ - protected function formatTimelineData(): array - { - return []; - } - - /** - * Returns the data of this collector to be formatted in the toolbar - * - * @return array|string - */ - public function display() - { - return []; - } - - /** - * This makes nicer looking paths for the error output. - * - * @deprecated Use the dedicated `clean_path()` function. - */ - public function cleanPath(string $file): string - { - return clean_path($file); - } - - /** - * Gets the "badge" value for the button. - * - * @return int|null - */ - public function getBadgeValue() - { - return null; - } - - /** - * Does this collector have any data collected? - * - * If not, then the toolbar button won't get shown. - */ - public function isEmpty(): bool - { - return false; - } - - /** - * Returns the HTML to display the icon. Should either - * be SVG, or a base-64 encoded. - * - * Recommended dimensions are 24px x 24px - */ - public function icon(): string - { - return ''; - } - - /** - * Return settings as an array. - */ - public function getAsArray(): array - { - return [ - 'title' => $this->getTitle(), - 'titleSafe' => $this->getTitle(true), - 'titleDetails' => $this->getTitleDetails(), - 'display' => $this->display(), - 'badgeValue' => $this->getBadgeValue(), - 'isEmpty' => $this->isEmpty(), - 'hasTabContent' => $this->hasTabContent(), - 'hasLabel' => $this->hasLabel(), - 'icon' => $this->icon(), - 'hasTimelineData' => $this->hasTimelineData(), - 'timelineData' => $this->timelineData(), - ]; - } -} diff --git a/system4.4.6/Debug/Toolbar/Collectors/Config.php b/system4.4.6/Debug/Toolbar/Collectors/Config.php deleted file mode 100644 index faf7a19b..00000000 --- a/system4.4.6/Debug/Toolbar/Collectors/Config.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Debug\Toolbar\Collectors; - -use CodeIgniter\CodeIgniter; -use Config\App; -use Config\Services; - -/** - * Debug toolbar configuration - */ -class Config -{ - /** - * Return toolbar config values as an array. - */ - public static function display(): array - { - $config = config(App::class); - - return [ - 'ciVersion' => CodeIgniter::CI_VERSION, - 'phpVersion' => PHP_VERSION, - 'phpSAPI' => PHP_SAPI, - 'environment' => ENVIRONMENT, - 'baseURL' => $config->baseURL, - 'timezone' => app_timezone(), - 'locale' => Services::request()->getLocale(), - 'cspEnabled' => $config->CSPEnabled, - ]; - } -} diff --git a/system4.4.6/Debug/Toolbar/Collectors/Database.php b/system4.4.6/Debug/Toolbar/Collectors/Database.php deleted file mode 100644 index 5b5614ad..00000000 --- a/system4.4.6/Debug/Toolbar/Collectors/Database.php +++ /dev/null @@ -1,258 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Debug\Toolbar\Collectors; - -use CodeIgniter\Database\Query; -use CodeIgniter\I18n\Time; -use Config\Toolbar; - -/** - * Collector for the Database tab of the Debug Toolbar. - * - * @see \CodeIgniter\Debug\Toolbar\Collectors\DatabaseTest - */ -class Database extends BaseCollector -{ - /** - * Whether this collector has timeline data. - * - * @var bool - */ - protected $hasTimeline = true; - - /** - * Whether this collector should display its own tab. - * - * @var bool - */ - protected $hasTabContent = true; - - /** - * Whether this collector has data for the Vars tab. - * - * @var bool - */ - protected $hasVarData = false; - - /** - * The name used to reference this collector in the toolbar. - * - * @var string - */ - protected $title = 'Database'; - - /** - * Array of database connections. - * - * @var array - */ - protected $connections; - - /** - * The query instances that have been collected - * through the DBQuery Event. - * - * @var array - */ - protected static $queries = []; - - /** - * Constructor - */ - public function __construct() - { - $this->getConnections(); - } - - /** - * The static method used during Events to collect - * data. - * - * @internal - * - * @return void - */ - public static function collect(Query $query) - { - $config = config(Toolbar::class); - - // Provide default in case it's not set - $max = $config->maxQueries ?: 100; - - if (count(static::$queries) < $max) { - $queryString = $query->getQuery(); - - $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); - - if (! is_cli()) { - // when called in the browser, the first two trace arrays - // are from the DB event trigger, which are unneeded - $backtrace = array_slice($backtrace, 2); - } - - static::$queries[] = [ - 'query' => $query, - 'string' => $queryString, - 'duplicate' => in_array($queryString, array_column(static::$queries, 'string', null), true), - 'trace' => $backtrace, - ]; - } - } - - /** - * Returns timeline data formatted for the toolbar. - * - * @return array The formatted data or an empty array. - */ - protected function formatTimelineData(): array - { - $data = []; - - foreach ($this->connections as $alias => $connection) { - // Connection Time - $data[] = [ - 'name' => 'Connecting to Database: "' . $alias . '"', - 'component' => 'Database', - 'start' => $connection->getConnectStart(), - 'duration' => $connection->getConnectDuration(), - ]; - } - - foreach (static::$queries as $query) { - $data[] = [ - 'name' => 'Query', - 'component' => 'Database', - 'start' => $query['query']->getStartTime(true), - 'duration' => $query['query']->getDuration(), - 'query' => $query['query']->debugToolbarDisplay(), - ]; - } - - return $data; - } - - /** - * Returns the data of this collector to be formatted in the toolbar - */ - public function display(): array - { - $data = []; - $data['queries'] = array_map(static function (array $query) { - $isDuplicate = $query['duplicate'] === true; - - $firstNonSystemLine = ''; - - foreach ($query['trace'] as $index => &$line) { - // simplify file and line - if (isset($line['file'])) { - $line['file'] = clean_path($line['file']) . ':' . $line['line']; - unset($line['line']); - } else { - $line['file'] = '[internal function]'; - } - - // find the first trace line that does not originate from `system/` - if ($firstNonSystemLine === '' && strpos($line['file'], 'SYSTEMPATH') === false) { - $firstNonSystemLine = $line['file']; - } - - // simplify function call - if (isset($line['class'])) { - $line['function'] = $line['class'] . $line['type'] . $line['function']; - unset($line['class'], $line['type']); - } - - if (strrpos($line['function'], '{closure}') === false) { - $line['function'] .= '()'; - } - - $line['function'] = str_repeat(chr(0xC2) . chr(0xA0), 8) . $line['function']; - - // add index numbering padded with nonbreaking space - $indexPadded = str_pad(sprintf('%d', $index + 1), 3, ' ', STR_PAD_LEFT); - $indexPadded = preg_replace('/\s/', chr(0xC2) . chr(0xA0), $indexPadded); - - $line['index'] = $indexPadded . str_repeat(chr(0xC2) . chr(0xA0), 4); - } - - return [ - 'hover' => $isDuplicate ? 'This query was called more than once.' : '', - 'class' => $isDuplicate ? 'duplicate' : '', - 'duration' => ((float) $query['query']->getDuration(5) * 1000) . ' ms', - 'sql' => $query['query']->debugToolbarDisplay(), - 'trace' => $query['trace'], - 'trace-file' => $firstNonSystemLine, - 'qid' => md5($query['query'] . Time::now()->format('0.u00 U')), - ]; - }, static::$queries); - - return $data; - } - - /** - * Gets the "badge" value for the button. - */ - public function getBadgeValue(): int - { - return count(static::$queries); - } - - /** - * Information to be displayed next to the title. - * - * @return string The number of queries (in parentheses) or an empty string. - */ - public function getTitleDetails(): string - { - $this->getConnections(); - - $queryCount = count(static::$queries); - $uniqueCount = count(array_filter(static::$queries, static fn ($query) => $query['duplicate'] === false)); - $connectionCount = count($this->connections); - - return sprintf( - '(%d total Quer%s, %d %s unique across %d Connection%s)', - $queryCount, - $queryCount > 1 ? 'ies' : 'y', - $uniqueCount, - $uniqueCount > 1 ? 'of them' : '', - $connectionCount, - $connectionCount > 1 ? 's' : '' - ); - } - - /** - * Does this collector have any data collected? - */ - public function isEmpty(): bool - { - return static::$queries === []; - } - - /** - * Display the icon. - * - * Icon from https://icons8.com - 1em package - */ - public function icon(): string - { - return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo/UNF/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII='; - } - - /** - * Gets the connections from the database config - */ - private function getConnections(): void - { - $this->connections = \Config\Database::getConnections(); - } -} diff --git a/system4.4.6/Debug/Toolbar/Collectors/Events.php b/system4.4.6/Debug/Toolbar/Collectors/Events.php deleted file mode 100644 index 178a8866..00000000 --- a/system4.4.6/Debug/Toolbar/Collectors/Events.php +++ /dev/null @@ -1,123 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Debug\Toolbar\Collectors; - -/** - * Events collector - */ -class Events extends BaseCollector -{ - /** - * Whether this collector has data that can - * be displayed in the Timeline. - * - * @var bool - */ - protected $hasTimeline = true; - - /** - * Whether this collector needs to display - * content in a tab or not. - * - * @var bool - */ - protected $hasTabContent = true; - - /** - * Whether this collector has data that - * should be shown in the Vars tab. - * - * @var bool - */ - protected $hasVarData = false; - - /** - * The 'title' of this Collector. - * Used to name things in the toolbar HTML. - * - * @var string - */ - protected $title = 'Events'; - - /** - * Child classes should implement this to return the timeline data - * formatted for correct usage. - */ - protected function formatTimelineData(): array - { - $data = []; - - $rows = \CodeIgniter\Events\Events::getPerformanceLogs(); - - foreach ($rows as $info) { - $data[] = [ - 'name' => 'Event: ' . $info['event'], - 'component' => 'Events', - 'start' => $info['start'], - 'duration' => $info['end'] - $info['start'], - ]; - } - - return $data; - } - - /** - * Returns the data of this collector to be formatted in the toolbar - */ - public function display(): array - { - $data = [ - 'events' => [], - ]; - - foreach (\CodeIgniter\Events\Events::getPerformanceLogs() as $row) { - $key = $row['event']; - - if (! array_key_exists($key, $data['events'])) { - $data['events'][$key] = [ - 'event' => $key, - 'duration' => ($row['end'] - $row['start']) * 1000, - 'count' => 1, - ]; - - continue; - } - - $data['events'][$key]['duration'] += ($row['end'] - $row['start']) * 1000; - $data['events'][$key]['count']++; - } - - foreach ($data['events'] as &$row) { - $row['duration'] = number_format($row['duration'], 2); - } - - return $data; - } - - /** - * Gets the "badge" value for the button. - */ - public function getBadgeValue(): int - { - return count(\CodeIgniter\Events\Events::getPerformanceLogs()); - } - - /** - * Display the icon. - * - * Icon from https://icons8.com - 1em package - */ - public function icon(): string - { - return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC'; - } -} diff --git a/system4.4.6/Debug/Toolbar/Collectors/Files.php b/system4.4.6/Debug/Toolbar/Collectors/Files.php deleted file mode 100644 index c281906c..00000000 --- a/system4.4.6/Debug/Toolbar/Collectors/Files.php +++ /dev/null @@ -1,102 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Debug\Toolbar\Collectors; - -/** - * Files collector - */ -class Files extends BaseCollector -{ - /** - * Whether this collector has data that can - * be displayed in the Timeline. - * - * @var bool - */ - protected $hasTimeline = false; - - /** - * Whether this collector needs to display - * content in a tab or not. - * - * @var bool - */ - protected $hasTabContent = true; - - /** - * The 'title' of this Collector. - * Used to name things in the toolbar HTML. - * - * @var string - */ - protected $title = 'Files'; - - /** - * Returns any information that should be shown next to the title. - */ - public function getTitleDetails(): string - { - return '( ' . count(get_included_files()) . ' )'; - } - - /** - * Returns the data of this collector to be formatted in the toolbar - */ - public function display(): array - { - $rawFiles = get_included_files(); - $coreFiles = []; - $userFiles = []; - - foreach ($rawFiles as $file) { - $path = clean_path($file); - - if (strpos($path, 'SYSTEMPATH') !== false) { - $coreFiles[] = [ - 'path' => $path, - 'name' => basename($file), - ]; - } else { - $userFiles[] = [ - 'path' => $path, - 'name' => basename($file), - ]; - } - } - - sort($userFiles); - sort($coreFiles); - - return [ - 'coreFiles' => $coreFiles, - 'userFiles' => $userFiles, - ]; - } - - /** - * Displays the number of included files as a badge in the tab button. - */ - public function getBadgeValue(): int - { - return count(get_included_files()); - } - - /** - * Display the icon. - * - * Icon from https://icons8.com - 1em package - */ - public function icon(): string - { - return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC'; - } -} diff --git a/system4.4.6/Debug/Toolbar/Collectors/History.php b/system4.4.6/Debug/Toolbar/Collectors/History.php deleted file mode 100644 index fcf06e16..00000000 --- a/system4.4.6/Debug/Toolbar/Collectors/History.php +++ /dev/null @@ -1,143 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Debug\Toolbar\Collectors; - -use DateTime; - -/** - * History collector - * - * @see \CodeIgniter\Debug\Toolbar\Collectors\HistoryTest - */ -class History extends BaseCollector -{ - /** - * Whether this collector has data that can - * be displayed in the Timeline. - * - * @var bool - */ - protected $hasTimeline = false; - - /** - * Whether this collector needs to display - * content in a tab or not. - * - * @var bool - */ - protected $hasTabContent = true; - - /** - * Whether this collector needs to display - * a label or not. - * - * @var bool - */ - protected $hasLabel = true; - - /** - * The 'title' of this Collector. - * Used to name things in the toolbar HTML. - * - * @var string - */ - protected $title = 'History'; - - /** - * @var array History files - */ - protected $files = []; - - /** - * Specify time limit & file count for debug history. - * - * @param string $current Current history time - * @param int $limit Max history files - * - * @return void - */ - public function setFiles(string $current, int $limit = 20) - { - $filenames = glob(WRITEPATH . 'debugbar/debugbar_*.json'); - - $files = []; - $counter = 0; - - foreach (array_reverse($filenames) as $filename) { - $counter++; - - // Oldest files will be deleted - if ($limit >= 0 && $counter > $limit) { - unlink($filename); - - continue; - } - - // Get the contents of this specific history request - $contents = file_get_contents($filename); - - $contents = @json_decode($contents); - if (json_last_error() === JSON_ERROR_NONE) { - preg_match('/debugbar_(.*)\.json$/s', $filename, $time); - $time = sprintf('%.6f', $time[1] ?? 0); - - // Debugbar files shown in History Collector - $files[] = [ - 'time' => $time, - 'datetime' => DateTime::createFromFormat('U.u', $time)->format('Y-m-d H:i:s.u'), - 'active' => $time === $current, - 'status' => $contents->vars->response->statusCode, - 'method' => $contents->method, - 'url' => $contents->url, - 'isAJAX' => $contents->isAJAX ? 'Yes' : 'No', - 'contentType' => $contents->vars->response->contentType, - ]; - } - } - - $this->files = $files; - } - - /** - * Returns the data of this collector to be formatted in the toolbar - */ - public function display(): array - { - return ['files' => $this->files]; - } - - /** - * Displays the number of included files as a badge in the tab button. - */ - public function getBadgeValue(): int - { - return count($this->files); - } - - /** - * Return true if there are no history files. - */ - public function isEmpty(): bool - { - return $this->files === []; - } - - /** - * Display the icon. - * - * Icon from https://icons8.com - 1em package - */ - public function icon(): string - { - return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJySURBVEhL3ZU7aJNhGIVTpV6i4qCIgkIHxcXLErS4FBwUFNwiCKGhuTYJGaIgnRoo4qRu6iCiiIuIXXTTIkIpuqoFwaGgonUQlC5KafU5ycmNP0lTdPLA4fu+8573/a4/f6hXpFKpwUwmc9fDfweKbk+n07fgEv33TLSbtt/hvwNFT1PsG/zdTE0Gp+GFfD6/2fbVIxqNrqPIRbjg4t/hY8aztcngfDabHXbKyiiXy2vcrcPH8oDCry2FKDrA+Ar6L01E/ypyXzXaARjDGGcoeNxSDZXE0dHRA5VRE5LJ5CFy5jzJuOX2wHRHRnjbklZ6isQ3tIctBaAd4vlK3jLtkOVWqABBXd47jGHLmjTmSScttQV5J+SjfcUweFQEbsjAas5aqoCLXutJl7vtQsAzpRowYqkBinyCC8Vicb2lOih8zoldd0F8RD7qTFiqAnGrAy8stUAvi/hbqDM+YzkAFrLPdR5ZqoLXsd+Bh5YCIH7JniVdquUWxOPxDfboHhrI5XJ7HHhiqQXox+APe/Qk64+gGYVCYZs8cMpSFQj9JOoFzVqqo7k4HIvFYpscCoAjOmLffUsNUGRaQUwDlmofUa34ecsdgXdcXo4wbakBgiUFafXJV8A4DJ/2UrxUKm3E95H8RbjLcgOJRGILhnmCP+FBy5XvwN2uIPcy1AJvWgqC4xm2aU4Xb3lF4I+Tpyf8hRe5w3J7YLymSeA8Z3nSclv4WLRyFdfOjzrUFX0klJUEtZtntCNc+F69cz/FiDzEPtjzmcUMOr83kDQEX6pAJxJfpL3OX22n01YN7SZCoQnaSdoZ+Jz+PZihH3wt/xlCoT9M6nEtmRSPCQAAAABJRU5ErkJggg=='; - } -} diff --git a/system4.4.6/Debug/Toolbar/Collectors/Logs.php b/system4.4.6/Debug/Toolbar/Collectors/Logs.php deleted file mode 100644 index d656ca9b..00000000 --- a/system4.4.6/Debug/Toolbar/Collectors/Logs.php +++ /dev/null @@ -1,95 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Debug\Toolbar\Collectors; - -use Config\Services; - -/** - * Loags collector - */ -class Logs extends BaseCollector -{ - /** - * Whether this collector has data that can - * be displayed in the Timeline. - * - * @var bool - */ - protected $hasTimeline = false; - - /** - * Whether this collector needs to display - * content in a tab or not. - * - * @var bool - */ - protected $hasTabContent = true; - - /** - * The 'title' of this Collector. - * Used to name things in the toolbar HTML. - * - * @var string - */ - protected $title = 'Logs'; - - /** - * Our collected data. - * - * @var array - */ - protected $data; - - /** - * Returns the data of this collector to be formatted in the toolbar - */ - public function display(): array - { - return [ - 'logs' => $this->collectLogs(), - ]; - } - - /** - * Does this collector actually have any data to display? - */ - public function isEmpty(): bool - { - $this->collectLogs(); - - return empty($this->data); - } - - /** - * Display the icon. - * - * Icon from https://icons8.com - 1em package - */ - public function icon(): string - { - return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg=='; - } - - /** - * Ensures the data has been collected. - * - * @return array - */ - protected function collectLogs() - { - if (! empty($this->data)) { - return $this->data; - } - - return $this->data = Services::logger(true)->logCache ?? []; - } -} diff --git a/system4.4.6/Debug/Toolbar/Collectors/Routes.php b/system4.4.6/Debug/Toolbar/Collectors/Routes.php deleted file mode 100644 index 0420c19b..00000000 --- a/system4.4.6/Debug/Toolbar/Collectors/Routes.php +++ /dev/null @@ -1,141 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Debug\Toolbar\Collectors; - -use CodeIgniter\Router\DefinedRouteCollector; -use Config\Services; -use ReflectionException; -use ReflectionFunction; -use ReflectionMethod; - -/** - * Routes collector - */ -class Routes extends BaseCollector -{ - /** - * Whether this collector has data that can - * be displayed in the Timeline. - * - * @var bool - */ - protected $hasTimeline = false; - - /** - * Whether this collector needs to display - * content in a tab or not. - * - * @var bool - */ - protected $hasTabContent = true; - - /** - * The 'title' of this Collector. - * Used to name things in the toolbar HTML. - * - * @var string - */ - protected $title = 'Routes'; - - /** - * Returns the data of this collector to be formatted in the toolbar - * - * @throws ReflectionException - */ - public function display(): array - { - $rawRoutes = Services::routes(true); - $router = Services::router(null, null, true); - - // Get our parameters - // Closure routes - if (is_callable($router->controllerName())) { - $method = new ReflectionFunction($router->controllerName()); - } else { - try { - $method = new ReflectionMethod($router->controllerName(), $router->methodName()); - } catch (ReflectionException $e) { - // If we're here, the method doesn't exist - // and is likely calculated in _remap. - $method = new ReflectionMethod($router->controllerName(), '_remap'); - } - } - - $rawParams = $method->getParameters(); - - $params = []; - - foreach ($rawParams as $key => $param) { - $params[] = [ - 'name' => '$' . $param->getName() . ' = ', - 'value' => $router->params()[$key] ?? - ' <empty> | default: ' - . var_export( - $param->isDefaultValueAvailable() ? $param->getDefaultValue() : null, - true - ), - ]; - } - - $matchedRoute = [ - [ - 'directory' => $router->directory(), - 'controller' => $router->controllerName(), - 'method' => $router->methodName(), - 'paramCount' => count($router->params()), - 'truePCount' => count($params), - 'params' => $params, - ], - ]; - - // Defined Routes - $routes = []; - - $definedRouteCollector = new DefinedRouteCollector($rawRoutes); - - foreach ($definedRouteCollector->collect() as $route) { - // filter for strings, as callbacks aren't displayable - if ($route['handler'] !== '(Closure)') { - $routes[] = [ - 'method' => strtoupper($route['method']), - 'route' => $route['route'], - 'handler' => $route['handler'], - ]; - } - } - - return [ - 'matchedRoute' => $matchedRoute, - 'routes' => $routes, - ]; - } - - /** - * Returns a count of all the routes in the system. - */ - public function getBadgeValue(): int - { - $rawRoutes = Services::routes(true); - - return count($rawRoutes->getRoutes()); - } - - /** - * Display the icon. - * - * Icon from https://icons8.com - 1em package - */ - public function icon(): string - { - return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw/FR+Gg2bB8Ptzrst/v6C/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg=='; - } -} diff --git a/system4.4.6/Debug/Toolbar/Collectors/Timers.php b/system4.4.6/Debug/Toolbar/Collectors/Timers.php deleted file mode 100644 index cfce9e61..00000000 --- a/system4.4.6/Debug/Toolbar/Collectors/Timers.php +++ /dev/null @@ -1,71 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Debug\Toolbar\Collectors; - -use Config\Services; - -/** - * Timers collector - */ -class Timers extends BaseCollector -{ - /** - * Whether this collector has data that can - * be displayed in the Timeline. - * - * @var bool - */ - protected $hasTimeline = true; - - /** - * Whether this collector needs to display - * content in a tab or not. - * - * @var bool - */ - protected $hasTabContent = false; - - /** - * The 'title' of this Collector. - * Used to name things in the toolbar HTML. - * - * @var string - */ - protected $title = 'Timers'; - - /** - * Child classes should implement this to return the timeline data - * formatted for correct usage. - */ - protected function formatTimelineData(): array - { - $data = []; - - $benchmark = Services::timer(true); - $rows = $benchmark->getTimers(6); - - foreach ($rows as $name => $info) { - if ($name === 'total_execution') { - continue; - } - - $data[] = [ - 'name' => ucwords(str_replace('_', ' ', $name)), - 'component' => 'Timer', - 'start' => $info['start'], - 'duration' => $info['end'] - $info['start'], - ]; - } - - return $data; - } -} diff --git a/system4.4.6/Debug/Toolbar/Collectors/Views.php b/system4.4.6/Debug/Toolbar/Collectors/Views.php deleted file mode 100644 index ea44dae4..00000000 --- a/system4.4.6/Debug/Toolbar/Collectors/Views.php +++ /dev/null @@ -1,149 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Debug\Toolbar\Collectors; - -use CodeIgniter\View\RendererInterface; -use Config\Services; - -/** - * Views collector - */ -class Views extends BaseCollector -{ - /** - * Whether this collector has data that can - * be displayed in the Timeline. - * - * @var bool - */ - protected $hasTimeline = true; - - /** - * Whether this collector needs to display - * content in a tab or not. - * - * @var bool - */ - protected $hasTabContent = false; - - /** - * Whether this collector needs to display - * a label or not. - * - * @var bool - */ - protected $hasLabel = true; - - /** - * Whether this collector has data that - * should be shown in the Vars tab. - * - * @var bool - */ - protected $hasVarData = true; - - /** - * The 'title' of this Collector. - * Used to name things in the toolbar HTML. - * - * @var string - */ - protected $title = 'Views'; - - /** - * Instance of the shared Renderer service - * - * @var RendererInterface|null - */ - protected $viewer; - - /** - * Views counter - * - * @var array - */ - protected $views = []; - - private function initViewer(): void - { - $this->viewer ??= Services::renderer(); - } - - /** - * Child classes should implement this to return the timeline data - * formatted for correct usage. - */ - protected function formatTimelineData(): array - { - $this->initViewer(); - - $data = []; - - $rows = $this->viewer->getPerformanceData(); - - foreach ($rows as $info) { - $data[] = [ - 'name' => 'View: ' . $info['view'], - 'component' => 'Views', - 'start' => $info['start'], - 'duration' => $info['end'] - $info['start'], - ]; - } - - return $data; - } - - /** - * Gets a collection of data that should be shown in the 'Vars' tab. - * The format is an array of sections, each with their own array - * of key/value pairs: - * - * $data = [ - * 'section 1' => [ - * 'foo' => 'bar, - * 'bar' => 'baz' - * ], - * 'section 2' => [ - * 'foo' => 'bar, - * 'bar' => 'baz' - * ], - * ]; - */ - public function getVarData(): array - { - $this->initViewer(); - - return [ - 'View Data' => $this->viewer->getData(), - ]; - } - - /** - * Returns a count of all views. - */ - public function getBadgeValue(): int - { - $this->initViewer(); - - return count($this->viewer->getPerformanceData()); - } - - /** - * Display the icon. - * - * Icon from https://icons8.com - 1em package - */ - public function icon(): string - { - return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB/eUFlU8uKJ0eDBFOu/9EvoeKnlJS2/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII='; - } -} diff --git a/system4.4.6/Debug/Toolbar/Views/_config.tpl b/system4.4.6/Debug/Toolbar/Views/_config.tpl deleted file mode 100644 index e3235ec3..00000000 --- a/system4.4.6/Debug/Toolbar/Views/_config.tpl +++ /dev/null @@ -1,48 +0,0 @@ -<p class="debug-bar-alignRight"> - <a href="https://codeigniter.com/user_guide/" target="_blank" >Read the CodeIgniter docs...</a> -</p> - -<table> - <tbody> - <tr> - <td>CodeIgniter Version:</td> - <td>{ ciVersion }</td> - </tr> - <tr> - <td>PHP Version:</td> - <td>{ phpVersion }</td> - </tr> - <tr> - <td>PHP SAPI:</td> - <td>{ phpSAPI }</td> - </tr> - <tr> - <td>Environment:</td> - <td>{ environment }</td> - </tr> - <tr> - <td>Base URL:</td> - <td> - { if $baseURL == '' } - <div class="warning"> - The $baseURL should always be set manually to prevent possible URL personification from external parties. - </div> - { else } - { baseURL } - { endif } - </td> - </tr> - <tr> - <td>Timezone:</td> - <td>{ timezone }</td> - </tr> - <tr> - <td>Locale:</td> - <td>{ locale }</td> - </tr> - <tr> - <td>Content Security Policy Enabled:</td> - <td>{ if $cspEnabled } Yes { else } No { endif }</td> - </tr> - </tbody> -</table> diff --git a/system4.4.6/Debug/Toolbar/Views/_database.tpl b/system4.4.6/Debug/Toolbar/Views/_database.tpl deleted file mode 100644 index 054dd362..00000000 --- a/system4.4.6/Debug/Toolbar/Views/_database.tpl +++ /dev/null @@ -1,26 +0,0 @@ -<table> - <thead> - <tr> - <th class="debug-bar-width6r">Time</th> - <th>Query String</th> - </tr> - </thead> - <tbody> - {queries} - <tr class="{class}" title="{hover}" data-toggle="{qid}-trace"> - <td class="narrow">{duration}</td> - <td>{! sql !}</td> - <td class="debug-bar-alignRight"><strong>{trace-file}</strong></td> - </tr> - <tr class="muted debug-bar-ndisplay" id="{qid}-trace"> - <td></td> - <td colspan="2"> - {trace} - {index}<strong>{file}</strong><br/> - {function}<br/><br/> - {/trace} - </td> - </tr> - {/queries} - </tbody> -</table> diff --git a/system4.4.6/Debug/Toolbar/Views/_events.tpl b/system4.4.6/Debug/Toolbar/Views/_events.tpl deleted file mode 100644 index 88d732f4..00000000 --- a/system4.4.6/Debug/Toolbar/Views/_events.tpl +++ /dev/null @@ -1,18 +0,0 @@ -<table> - <thead> - <tr> - <th class="debug-bar-width6r">Time</th> - <th>Event Name</th> - <th>Times Called</th> - </tr> - </thead> - <tbody> - {events} - <tr> - <td class="narrow">{ duration } ms</td> - <td>{event}</td> - <td>{count}</td> - </tr> - {/events} - </tbody> -</table> diff --git a/system4.4.6/Debug/Toolbar/Views/_files.tpl b/system4.4.6/Debug/Toolbar/Views/_files.tpl deleted file mode 100644 index 9c992ab7..00000000 --- a/system4.4.6/Debug/Toolbar/Views/_files.tpl +++ /dev/null @@ -1,16 +0,0 @@ -<table> - <tbody> - {userFiles} - <tr> - <td>{name}</td> - <td>{path}</td> - </tr> - {/userFiles} - {coreFiles} - <tr class="muted"> - <td class="debug-bar-width20e">{name}</td> - <td>{path}</td> - </tr> - {/coreFiles} - </tbody> -</table> diff --git a/system4.4.6/Debug/Toolbar/Views/_history.tpl b/system4.4.6/Debug/Toolbar/Views/_history.tpl deleted file mode 100644 index 7f22f560..00000000 --- a/system4.4.6/Debug/Toolbar/Views/_history.tpl +++ /dev/null @@ -1,28 +0,0 @@ -<table> - <thead> - <tr> - <th>Action</th> - <th>Datetime</th> - <th>Status</th> - <th>Method</th> - <th>URL</th> - <th>Content-Type</th> - <th>Is AJAX?</th> - </tr> - </thead> - <tbody> - {files} - <tr data-active="{active}"> - <td class="debug-bar-width70p"> - <button class="ci-history-load" data-time="{time}">Load</button> - </td> - <td class="debug-bar-width190p">{datetime}</td> - <td>{status}</td> - <td>{method}</td> - <td>{url}</td> - <td>{contentType}</td> - <td>{isAJAX}</td> - </tr> - {/files} - </tbody> -</table> diff --git a/system4.4.6/Debug/Toolbar/Views/_logs.tpl b/system4.4.6/Debug/Toolbar/Views/_logs.tpl deleted file mode 100644 index 7c80d849..00000000 --- a/system4.4.6/Debug/Toolbar/Views/_logs.tpl +++ /dev/null @@ -1,20 +0,0 @@ -{ if $logs == [] } -<p>Nothing was logged. If you were expecting logged items, ensure that LoggerConfig file has the correct threshold set.</p> -{ else } -<table> - <thead> - <tr> - <th>Severity</th> - <th>Message</th> - </tr> - </thead> - <tbody> - {logs} - <tr> - <td>{level}</td> - <td>{msg}</td> - </tr> - {/logs} - </tbody> -</table> -{ endif } diff --git a/system4.4.6/Debug/Toolbar/Views/_routes.tpl b/system4.4.6/Debug/Toolbar/Views/_routes.tpl deleted file mode 100644 index e277046a..00000000 --- a/system4.4.6/Debug/Toolbar/Views/_routes.tpl +++ /dev/null @@ -1,52 +0,0 @@ -<h3>Matched Route</h3> - -<table> - <tbody> - {matchedRoute} - <tr> - <td>Directory:</td> - <td>{directory}</td> - </tr> - <tr> - <td>Controller:</td> - <td>{controller}</td> - </tr> - <tr> - <td>Method:</td> - <td>{method}</td> - </tr> - <tr> - <td>Params:</td> - <td>{paramCount} / {truePCount}</td> - </tr> - {params} - <tr class="route-params-item"> - <td>{name}</td> - <td>{value}</td> - </tr> - {/params} - {/matchedRoute} - </tbody> -</table> - - -<h3>Defined Routes</h3> - -<table> - <thead> - <tr> - <th>Method</th> - <th>Route</th> - <th>Handler</th> - </tr> - </thead> - <tbody> - {routes} - <tr> - <td>{method}</td> - <td data-debugbar-route="{method}">{route}</td> - <td>{handler}</td> - </tr> - {/routes} - </tbody> -</table> diff --git a/system4.4.6/Debug/Toolbar/Views/toolbar.css b/system4.4.6/Debug/Toolbar/Views/toolbar.css deleted file mode 100644 index a3b934b6..00000000 --- a/system4.4.6/Debug/Toolbar/Views/toolbar.css +++ /dev/null @@ -1,853 +0,0 @@ -/** - * This file is part of the CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -#debug-icon { - bottom: 0; - position: fixed; - right: 0; - z-index: 10000; - height: 36px; - width: 36px; - margin: 0px; - padding: 0px; - clear: both; - text-align: center; -} -#debug-icon a svg { - margin: 8px; - max-width: 20px; - max-height: 20px; -} -#debug-icon.fixed-top { - bottom: auto; - top: 0; -} -#debug-icon .debug-bar-ndisplay { - display: none; -} - -#debug-bar { - bottom: 0; - left: 0; - position: fixed; - right: 0; - z-index: 10000; - height: 36px; - line-height: 36px; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; - font-size: 16px; - font-weight: 400; -} -#debug-bar h1 { - display: flex; - font-weight: normal; - margin: 0 0 0 auto; -} -#debug-bar h1 svg { - width: 16px; - margin-right: 5px; -} -#debug-bar h2 { - font-size: 16px; - margin: 0; - padding: 5px 0 10px 0; -} -#debug-bar h2 span { - font-size: 13px; -} -#debug-bar h3 { - font-size: 12px; - font-weight: 200; - margin: 0 0 0 10px; - padding: 0; - text-transform: uppercase; -} -#debug-bar p { - font-size: 12px; - margin: 0 0 0 15px; - padding: 0; -} -#debug-bar a { - text-decoration: none; -} -#debug-bar a:hover { - text-decoration: underline; -} -#debug-bar button { - border: 1px solid; - border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - cursor: pointer; - line-height: 15px; -} -#debug-bar button:hover { - text-decoration: underline; -} -#debug-bar table { - border-collapse: collapse; - font-size: 14px; - line-height: normal; - margin: 5px 10px 15px 10px; - width: calc(100% - 10px); -} -#debug-bar table strong { - font-weight: 500; -} -#debug-bar table th { - display: table-cell; - font-weight: 600; - padding-bottom: 0.7em; - text-align: left; -} -#debug-bar table tr { - border: none; -} -#debug-bar table td { - border: none; - display: table-cell; - margin: 0; - text-align: left; -} -#debug-bar table td:first-child { - max-width: 20%; -} -#debug-bar table td:first-child.narrow { - width: 7em; -} -#debug-bar td[data-debugbar-route] form { - display: none; -} -#debug-bar td[data-debugbar-route]:hover form { - display: block; -} -#debug-bar td[data-debugbar-route]:hover > div { - display: none; -} -#debug-bar td[data-debugbar-route] input[type=text] { - padding: 2px; -} -#debug-bar .toolbar { - display: flex; - overflow: hidden; - overflow-y: auto; - padding: 0 12px 0 12px; - white-space: nowrap; - z-index: 10000; -} -#debug-bar .toolbar .rotate { - animation: toolbar-rotate 9s linear infinite; -} -@keyframes toolbar-rotate { - to { - transform: rotate(360deg); - } -} -#debug-bar.fixed-top { - bottom: auto; - top: 0; -} -#debug-bar.fixed-top .tab { - bottom: auto; - top: 36px; -} -#debug-bar #toolbar-position a, -#debug-bar #toolbar-theme a { - padding: 0 6px; - display: inline-flex; - vertical-align: top; -} -#debug-bar #toolbar-position a:hover, -#debug-bar #toolbar-theme a:hover { - text-decoration: none; -} -#debug-bar #debug-bar-link { - display: flex; - padding: 6px; -} -#debug-bar .ci-label { - display: inline-flex; - font-size: 14px; -} -#debug-bar .ci-label:hover { - cursor: pointer; -} -#debug-bar .ci-label a { - color: inherit; - display: flex; - letter-spacing: normal; - padding: 0 10px; - text-decoration: none; - align-items: center; -} -#debug-bar .ci-label img { - margin: 6px 3px 6px 0; - width: 16px !important; -} -#debug-bar .ci-label .badge { - border-radius: 12px; - -moz-border-radius: 12px; - -webkit-border-radius: 12px; - display: inline-block; - font-size: 75%; - font-weight: bold; - line-height: 12px; - margin-left: 5px; - padding: 2px 5px; - text-align: center; - vertical-align: baseline; - white-space: nowrap; -} -#debug-bar .tab { - bottom: 35px; - display: none; - left: 0; - max-height: 62%; - overflow: hidden; - overflow-y: auto; - padding: 1em 2em; - position: fixed; - right: 0; - z-index: 9999; -} -#debug-bar .timeline { - margin-left: 0; - width: 100%; -} -#debug-bar .timeline th { - border-left: 1px solid; - font-size: 12px; - font-weight: 200; - padding: 5px 5px 10px 5px; - position: relative; - text-align: left; -} -#debug-bar .timeline th:first-child { - border-left: 0; -} -#debug-bar .timeline td { - border-left: 1px solid; - padding: 5px; - position: relative; -} -#debug-bar .timeline td:first-child { - border-left: 0; - max-width: none; -} -#debug-bar .timeline td.child-container { - padding: 0px; -} -#debug-bar .timeline td.child-container .timeline { - margin: 0px; -} -#debug-bar .timeline td.child-container .timeline td:first-child:not(.child-container) { - padding-left: calc(5px + 10px * var(--level)); -} -#debug-bar .timeline .timer { - border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - display: inline-block; - padding: 5px; - position: absolute; - top: 30%; -} -#debug-bar .timeline .timeline-parent { - cursor: pointer; -} -#debug-bar .timeline .timeline-parent td:first-child nav { - background: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMCAxNTAiPjxwYXRoIGQ9Ik02IDdoMThsLTkgMTV6bTAgMzBoMThsLTkgMTV6bTAgNDVoMThsLTktMTV6bTAgMzBoMThsLTktMTV6bTAgMTJsMTggMThtLTE4IDBsMTgtMTgiIGZpbGw9IiM1NTUiLz48cGF0aCBkPSJNNiAxMjZsMTggMThtLTE4IDBsMTgtMTgiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSIjNTU1Ii8+PC9zdmc+") no-repeat scroll 0 0/15px 75px transparent; - background-position: 0 25%; - display: inline-block; - height: 15px; - width: 15px; - margin-right: 3px; - vertical-align: middle; -} -#debug-bar .timeline .timeline-parent-open { - background-color: #DFDFDF; -} -#debug-bar .timeline .timeline-parent-open td:first-child nav { - background-position: 0 75%; -} -#debug-bar .timeline .child-row:hover { - background: transparent; -} -#debug-bar .route-params, -#debug-bar .route-params-item { - vertical-align: top; -} -#debug-bar .route-params td:first-child, -#debug-bar .route-params-item td:first-child { - font-style: italic; - padding-left: 1em; - text-align: right; -} -#debug-bar > .debug-bar-dblock { - display: block; -} - -.debug-view.show-view { - border: 1px solid; - margin: 4px; -} - -.debug-view-path { - font-family: monospace; - font-size: 12px; - letter-spacing: normal; - min-height: 16px; - padding: 2px; - text-align: left; -} - -.show-view .debug-view-path { - display: block !important; -} - -@media screen and (max-width: 1024px) { - #debug-bar .ci-label img { - margin: unset; - } - .hide-sm { - display: none !important; - } -} -#debug-icon { - background-color: #FFFFFF; - box-shadow: 0 0 4px #DFDFDF; - -moz-box-shadow: 0 0 4px #DFDFDF; - -webkit-box-shadow: 0 0 4px #DFDFDF; -} -#debug-icon a:active, -#debug-icon a:link, -#debug-icon a:visited { - color: #DD8615; -} - -#debug-bar { - background-color: #FFFFFF; - color: #434343; -} -#debug-bar h1, -#debug-bar h2, -#debug-bar h3, -#debug-bar p, -#debug-bar a, -#debug-bar button, -#debug-bar table, -#debug-bar thead, -#debug-bar tr, -#debug-bar td, -#debug-bar button, -#debug-bar .toolbar { - background-color: transparent; - color: #434343; -} -#debug-bar button { - background-color: #FFFFFF; -} -#debug-bar table strong { - color: #DD8615; -} -#debug-bar table tbody tr:hover { - background-color: #DFDFDF; -} -#debug-bar table tbody tr.current { - background-color: #FDC894; -} -#debug-bar table tbody tr.current:hover td { - background-color: #DD4814; - color: #FFFFFF; -} -#debug-bar .toolbar { - background-color: #FFFFFF; - box-shadow: 0 0 4px #DFDFDF; - -moz-box-shadow: 0 0 4px #DFDFDF; - -webkit-box-shadow: 0 0 4px #DFDFDF; -} -#debug-bar .toolbar img { - filter: brightness(0) invert(0.4); -} -#debug-bar.fixed-top .toolbar { - box-shadow: 0 0 4px #DFDFDF; - -moz-box-shadow: 0 0 4px #DFDFDF; - -webkit-box-shadow: 0 0 4px #DFDFDF; -} -#debug-bar.fixed-top .tab { - box-shadow: 0 1px 4px #DFDFDF; - -moz-box-shadow: 0 1px 4px #DFDFDF; - -webkit-box-shadow: 0 1px 4px #DFDFDF; -} -#debug-bar .muted { - color: #434343; -} -#debug-bar .muted td { - color: #DFDFDF; -} -#debug-bar .muted:hover td { - color: #434343; -} -#debug-bar #toolbar-position, -#debug-bar #toolbar-theme { - filter: brightness(0) invert(0.6); -} -#debug-bar .ci-label.active { - background-color: #DFDFDF; -} -#debug-bar .ci-label:hover { - background-color: #DFDFDF; -} -#debug-bar .ci-label .badge { - background-color: #DD4814; - color: #FFFFFF; -} -#debug-bar .tab { - background-color: #FFFFFF; - box-shadow: 0 -1px 4px #DFDFDF; - -moz-box-shadow: 0 -1px 4px #DFDFDF; - -webkit-box-shadow: 0 -1px 4px #DFDFDF; -} -#debug-bar .timeline th, -#debug-bar .timeline td { - border-color: #DFDFDF; -} -#debug-bar .timeline .timer { - background-color: #DD8615; -} - -.debug-view.show-view { - border-color: #DD8615; -} - -.debug-view-path { - background-color: #FDC894; - color: #434343; -} - -@media (prefers-color-scheme: dark) { - #debug-icon { - background-color: #252525; - box-shadow: 0 0 4px #DFDFDF; - -moz-box-shadow: 0 0 4px #DFDFDF; - -webkit-box-shadow: 0 0 4px #DFDFDF; - } - #debug-icon a:active, - #debug-icon a:link, - #debug-icon a:visited { - color: #DD8615; - } - #debug-bar { - background-color: #252525; - color: #DFDFDF; - } - #debug-bar h1, - #debug-bar h2, - #debug-bar h3, - #debug-bar p, - #debug-bar a, - #debug-bar button, - #debug-bar table, - #debug-bar thead, - #debug-bar tr, - #debug-bar td, - #debug-bar button, - #debug-bar .toolbar { - background-color: transparent; - color: #DFDFDF; - } - #debug-bar button { - background-color: #252525; - } - #debug-bar table strong { - color: #DD8615; - } - #debug-bar table tbody tr:hover { - background-color: #434343; - } - #debug-bar table tbody tr.current { - background-color: #FDC894; - } - #debug-bar table tbody tr.current td { - color: #252525; - } - #debug-bar table tbody tr.current:hover td { - background-color: #DD4814; - color: #FFFFFF; - } - #debug-bar .toolbar { - background-color: #434343; - box-shadow: 0 0 4px #434343; - -moz-box-shadow: 0 0 4px #434343; - -webkit-box-shadow: 0 0 4px #434343; - } - #debug-bar .toolbar img { - filter: brightness(0) invert(1); - } - #debug-bar.fixed-top .toolbar { - box-shadow: 0 0 4px #434343; - -moz-box-shadow: 0 0 4px #434343; - -webkit-box-shadow: 0 0 4px #434343; - } - #debug-bar.fixed-top .tab { - box-shadow: 0 1px 4px #434343; - -moz-box-shadow: 0 1px 4px #434343; - -webkit-box-shadow: 0 1px 4px #434343; - } - #debug-bar .muted { - color: #DFDFDF; - } - #debug-bar .muted td { - color: #434343; - } - #debug-bar .muted:hover td { - color: #DFDFDF; - } - #debug-bar #toolbar-position, - #debug-bar #toolbar-theme { - filter: brightness(0) invert(0.6); - } - #debug-bar .ci-label.active { - background-color: #252525; - } - #debug-bar .ci-label:hover { - background-color: #252525; - } - #debug-bar .ci-label .badge { - background-color: #DD4814; - color: #FFFFFF; - } - #debug-bar .tab { - background-color: #252525; - box-shadow: 0 -1px 4px #434343; - -moz-box-shadow: 0 -1px 4px #434343; - -webkit-box-shadow: 0 -1px 4px #434343; - } - #debug-bar .timeline th, - #debug-bar .timeline td { - border-color: #434343; - } - #debug-bar .timeline .timer { - background-color: #DD8615; - } - .debug-view.show-view { - border-color: #DD8615; - } - .debug-view-path { - background-color: #FDC894; - color: #434343; - } -} -#toolbarContainer.dark #debug-icon { - background-color: #252525; - box-shadow: 0 0 4px #DFDFDF; - -moz-box-shadow: 0 0 4px #DFDFDF; - -webkit-box-shadow: 0 0 4px #DFDFDF; -} -#toolbarContainer.dark #debug-icon a:active, -#toolbarContainer.dark #debug-icon a:link, -#toolbarContainer.dark #debug-icon a:visited { - color: #DD8615; -} -#toolbarContainer.dark #debug-bar { - background-color: #252525; - color: #DFDFDF; -} -#toolbarContainer.dark #debug-bar h1, -#toolbarContainer.dark #debug-bar h2, -#toolbarContainer.dark #debug-bar h3, -#toolbarContainer.dark #debug-bar p, -#toolbarContainer.dark #debug-bar a, -#toolbarContainer.dark #debug-bar button, -#toolbarContainer.dark #debug-bar table, -#toolbarContainer.dark #debug-bar thead, -#toolbarContainer.dark #debug-bar tr, -#toolbarContainer.dark #debug-bar td, -#toolbarContainer.dark #debug-bar button, -#toolbarContainer.dark #debug-bar .toolbar { - background-color: transparent; - color: #DFDFDF; -} -#toolbarContainer.dark #debug-bar button { - background-color: #252525; -} -#toolbarContainer.dark #debug-bar table strong { - color: #DD8615; -} -#toolbarContainer.dark #debug-bar table tbody tr:hover { - background-color: #434343; -} -#toolbarContainer.dark #debug-bar table tbody tr.current { - background-color: #FDC894; -} -#toolbarContainer.dark #debug-bar table tbody tr.current td { - color: #252525; -} -#toolbarContainer.dark #debug-bar table tbody tr.current:hover td { - background-color: #DD4814; - color: #FFFFFF; -} -#toolbarContainer.dark #debug-bar .toolbar { - background-color: #434343; - box-shadow: 0 0 4px #434343; - -moz-box-shadow: 0 0 4px #434343; - -webkit-box-shadow: 0 0 4px #434343; -} -#toolbarContainer.dark #debug-bar .toolbar img { - filter: brightness(0) invert(1); -} -#toolbarContainer.dark #debug-bar.fixed-top .toolbar { - box-shadow: 0 0 4px #434343; - -moz-box-shadow: 0 0 4px #434343; - -webkit-box-shadow: 0 0 4px #434343; -} -#toolbarContainer.dark #debug-bar.fixed-top .tab { - box-shadow: 0 1px 4px #434343; - -moz-box-shadow: 0 1px 4px #434343; - -webkit-box-shadow: 0 1px 4px #434343; -} -#toolbarContainer.dark #debug-bar .muted { - color: #DFDFDF; -} -#toolbarContainer.dark #debug-bar .muted td { - color: #434343; -} -#toolbarContainer.dark #debug-bar .muted:hover td { - color: #DFDFDF; -} -#toolbarContainer.dark #debug-bar #toolbar-position, -#toolbarContainer.dark #debug-bar #toolbar-theme { - filter: brightness(0) invert(0.6); -} -#toolbarContainer.dark #debug-bar .ci-label.active { - background-color: #252525; -} -#toolbarContainer.dark #debug-bar .ci-label:hover { - background-color: #252525; -} -#toolbarContainer.dark #debug-bar .ci-label .badge { - background-color: #DD4814; - color: #FFFFFF; -} -#toolbarContainer.dark #debug-bar .tab { - background-color: #252525; - box-shadow: 0 -1px 4px #434343; - -moz-box-shadow: 0 -1px 4px #434343; - -webkit-box-shadow: 0 -1px 4px #434343; -} -#toolbarContainer.dark #debug-bar .timeline th, -#toolbarContainer.dark #debug-bar .timeline td { - border-color: #434343; -} -#toolbarContainer.dark #debug-bar .timeline .timer { - background-color: #DD8615; -} -#toolbarContainer.dark .debug-view.show-view { - border-color: #DD8615; -} -#toolbarContainer.dark .debug-view-path { - background-color: #FDC894; - color: #434343; -} -#toolbarContainer.dark td[data-debugbar-route] input[type=text] { - background: #000; - color: #fff; -} - -#toolbarContainer.light #debug-icon { - background-color: #FFFFFF; - box-shadow: 0 0 4px #DFDFDF; - -moz-box-shadow: 0 0 4px #DFDFDF; - -webkit-box-shadow: 0 0 4px #DFDFDF; -} -#toolbarContainer.light #debug-icon a:active, -#toolbarContainer.light #debug-icon a:link, -#toolbarContainer.light #debug-icon a:visited { - color: #DD8615; -} -#toolbarContainer.light #debug-bar { - background-color: #FFFFFF; - color: #434343; -} -#toolbarContainer.light #debug-bar h1, -#toolbarContainer.light #debug-bar h2, -#toolbarContainer.light #debug-bar h3, -#toolbarContainer.light #debug-bar p, -#toolbarContainer.light #debug-bar a, -#toolbarContainer.light #debug-bar button, -#toolbarContainer.light #debug-bar table, -#toolbarContainer.light #debug-bar thead, -#toolbarContainer.light #debug-bar tr, -#toolbarContainer.light #debug-bar td, -#toolbarContainer.light #debug-bar button, -#toolbarContainer.light #debug-bar .toolbar { - background-color: transparent; - color: #434343; -} -#toolbarContainer.light #debug-bar button { - background-color: #FFFFFF; -} -#toolbarContainer.light #debug-bar table strong { - color: #DD8615; -} -#toolbarContainer.light #debug-bar table tbody tr:hover { - background-color: #DFDFDF; -} -#toolbarContainer.light #debug-bar table tbody tr.current { - background-color: #FDC894; -} -#toolbarContainer.light #debug-bar table tbody tr.current:hover td { - background-color: #DD4814; - color: #FFFFFF; -} -#toolbarContainer.light #debug-bar .toolbar { - background-color: #FFFFFF; - box-shadow: 0 0 4px #DFDFDF; - -moz-box-shadow: 0 0 4px #DFDFDF; - -webkit-box-shadow: 0 0 4px #DFDFDF; -} -#toolbarContainer.light #debug-bar .toolbar img { - filter: brightness(0) invert(0.4); -} -#toolbarContainer.light #debug-bar.fixed-top .toolbar { - box-shadow: 0 0 4px #DFDFDF; - -moz-box-shadow: 0 0 4px #DFDFDF; - -webkit-box-shadow: 0 0 4px #DFDFDF; -} -#toolbarContainer.light #debug-bar.fixed-top .tab { - box-shadow: 0 1px 4px #DFDFDF; - -moz-box-shadow: 0 1px 4px #DFDFDF; - -webkit-box-shadow: 0 1px 4px #DFDFDF; -} -#toolbarContainer.light #debug-bar .muted { - color: #434343; -} -#toolbarContainer.light #debug-bar .muted td { - color: #DFDFDF; -} -#toolbarContainer.light #debug-bar .muted:hover td { - color: #434343; -} -#toolbarContainer.light #debug-bar #toolbar-position, -#toolbarContainer.light #debug-bar #toolbar-theme { - filter: brightness(0) invert(0.6); -} -#toolbarContainer.light #debug-bar .ci-label.active { - background-color: #DFDFDF; -} -#toolbarContainer.light #debug-bar .ci-label:hover { - background-color: #DFDFDF; -} -#toolbarContainer.light #debug-bar .ci-label .badge { - background-color: #DD4814; - color: #FFFFFF; -} -#toolbarContainer.light #debug-bar .tab { - background-color: #FFFFFF; - box-shadow: 0 -1px 4px #DFDFDF; - -moz-box-shadow: 0 -1px 4px #DFDFDF; - -webkit-box-shadow: 0 -1px 4px #DFDFDF; -} -#toolbarContainer.light #debug-bar .timeline th, -#toolbarContainer.light #debug-bar .timeline td { - border-color: #DFDFDF; -} -#toolbarContainer.light #debug-bar .timeline .timer { - background-color: #DD8615; -} -#toolbarContainer.light .debug-view.show-view { - border-color: #DD8615; -} -#toolbarContainer.light .debug-view-path { - background-color: #FDC894; - color: #434343; -} - -.debug-bar-width30 { - width: 30%; -} - -.debug-bar-width10 { - width: 10%; -} - -.debug-bar-width70p { - width: 70px; -} - -.debug-bar-width190p { - width: 190px; -} - -.debug-bar-width20e { - width: 20em; -} - -.debug-bar-width6r { - width: 6rem; -} - -.debug-bar-ndisplay { - display: none; -} - -.debug-bar-alignRight { - text-align: right; -} - -.debug-bar-alignLeft { - text-align: left; -} - -.debug-bar-noverflow { - overflow: hidden; -} - -.debug-bar-dtableRow { - display: table-row; -} - -.debug-bar-dinlineBlock { - display: inline-block; -} - -.debug-bar-pointer { - cursor: pointer; -} - -.debug-bar-mleft4 { - margin-left: 4px; -} - -.debug-bar-level-0 { - --level: 0; -} - -.debug-bar-level-1 { - --level: 1; -} - -.debug-bar-level-2 { - --level: 2; -} - -.debug-bar-level-3 { - --level: 3; -} - -.debug-bar-level-4 { - --level: 4; -} - -.debug-bar-level-5 { - --level: 5; -} - -.debug-bar-level-6 { - --level: 6; -} diff --git a/system4.4.6/Debug/Toolbar/Views/toolbar.js b/system4.4.6/Debug/Toolbar/Views/toolbar.js deleted file mode 100644 index 54fe3d69..00000000 --- a/system4.4.6/Debug/Toolbar/Views/toolbar.js +++ /dev/null @@ -1,825 +0,0 @@ -/* - * Functionality for the CodeIgniter Debug Toolbar. - */ - -var ciDebugBar = { - toolbarContainer: null, - toolbar: null, - icon: null, - - init: function () { - this.toolbarContainer = document.getElementById("toolbarContainer"); - this.toolbar = document.getElementById("debug-bar"); - this.icon = document.getElementById("debug-icon"); - - ciDebugBar.createListeners(); - ciDebugBar.setToolbarState(); - ciDebugBar.setToolbarPosition(); - ciDebugBar.setToolbarTheme(); - ciDebugBar.toggleViewsHints(); - ciDebugBar.routerLink(); - ciDebugBar.setHotReloadState(); - - document - .getElementById("debug-bar-link") - .addEventListener("click", ciDebugBar.toggleToolbar, true); - document - .getElementById("debug-icon-link") - .addEventListener("click", ciDebugBar.toggleToolbar, true); - - // Allows to highlight the row of the current history request - var btn = this.toolbar.querySelector( - 'button[data-time="' + localStorage.getItem("debugbar-time") + '"]' - ); - ciDebugBar.addClass(btn.parentNode.parentNode, "current"); - - historyLoad = this.toolbar.getElementsByClassName("ci-history-load"); - - for (var i = 0; i < historyLoad.length; i++) { - historyLoad[i].addEventListener( - "click", - function () { - loadDoc(this.getAttribute("data-time")); - }, - true - ); - } - - // Display the active Tab on page load - var tab = ciDebugBar.readCookie("debug-bar-tab"); - if (document.getElementById(tab)) { - var el = document.getElementById(tab); - ciDebugBar.switchClass(el, "debug-bar-ndisplay", "debug-bar-dblock"); - ciDebugBar.addClass(el, "active"); - tab = document.querySelector("[data-tab=" + tab + "]"); - if (tab) { - ciDebugBar.addClass(tab.parentNode, "active"); - } - } - }, - - createListeners: function () { - var buttons = [].slice.call( - this.toolbar.querySelectorAll(".ci-label a") - ); - - for (var i = 0; i < buttons.length; i++) { - buttons[i].addEventListener("click", ciDebugBar.showTab, true); - } - - // Hook up generic toggle via data attributes `data-toggle="foo"` - var links = this.toolbar.querySelectorAll("[data-toggle]"); - for (var i = 0; i < links.length; i++) { - let toggleData = links[i].getAttribute("data-toggle"); - if (toggleData === "datatable") { - - let datatable = links[i].getAttribute("data-table"); - links[i].addEventListener("click", function() { - ciDebugBar.toggleDataTable(datatable) - }, true); - - } else if (toggleData === "childrows") { - - let child = links[i].getAttribute("data-child"); - links[i].addEventListener("click", function() { - ciDebugBar.toggleChildRows(child) - }, true); - - } else { - links[i].addEventListener("click", ciDebugBar.toggleRows, true); - } - } - }, - - showTab: function () { - // Get the target tab, if any - var tab = document.getElementById(this.getAttribute("data-tab")); - - // If the label have not a tab stops here - if (! tab) { - return; - } - - // Remove debug-bar-tab cookie - ciDebugBar.createCookie("debug-bar-tab", "", -1); - - // Check our current state. - var state = tab.classList.contains("debug-bar-dblock"); - - // Hide all tabs - var tabs = document.querySelectorAll("#debug-bar .tab"); - - for (var i = 0; i < tabs.length; i++) { - ciDebugBar.switchClass(tabs[i], "debug-bar-dblock", "debug-bar-ndisplay"); - } - - // Mark all labels as inactive - var labels = document.querySelectorAll("#debug-bar .ci-label"); - - for (var i = 0; i < labels.length; i++) { - ciDebugBar.removeClass(labels[i], "active"); - } - - // Show/hide the selected tab - if (! state) { - ciDebugBar.switchClass(tab, "debug-bar-ndisplay", "debug-bar-dblock"); - ciDebugBar.addClass(this.parentNode, "active"); - // Create debug-bar-tab cookie to persistent state - ciDebugBar.createCookie( - "debug-bar-tab", - this.getAttribute("data-tab"), - 365 - ); - } - }, - - addClass: function (el, className) { - if (el.classList) { - el.classList.add(className); - } else { - el.className += " " + className; - } - }, - - removeClass: function (el, className) { - if (el.classList) { - el.classList.remove(className); - } else { - el.className = el.className.replace( - new RegExp( - "(^|\\b)" + className.split(" ").join("|") + "(\\b|$)", - "gi" - ), - " " - ); - } - }, - - switchClass : function(el, classFrom, classTo) { - ciDebugBar.removeClass(el, classFrom); - ciDebugBar.addClass(el, classTo); - }, - - /** - * Toggle display of another object based on - * the data-toggle value of this object - * - * @param event - */ - toggleRows: function (event) { - if (event.target) { - let row = event.target.closest("tr"); - let target = document.getElementById( - row.getAttribute("data-toggle") - ); - - if (target.classList.contains("debug-bar-ndisplay")) { - ciDebugBar.switchClass(target, "debug-bar-ndisplay", "debug-bar-dtableRow"); - } else { - ciDebugBar.switchClass(target, "debug-bar-dtableRow", "debug-bar-ndisplay"); - } - } - }, - - /** - * Toggle display of a data table - * - * @param obj - */ - toggleDataTable: function (obj) { - if (typeof obj == "string") { - obj = document.getElementById(obj + "_table"); - } - - if (obj) { - if (obj.classList.contains("debug-bar-ndisplay")) { - ciDebugBar.switchClass(obj, "debug-bar-ndisplay", "debug-bar-dblock"); - } else { - ciDebugBar.switchClass(obj, "debug-bar-dblock", "debug-bar-ndisplay"); - } - } - }, - - /** - * Toggle display of timeline child elements - * - * @param obj - */ - toggleChildRows: function (obj) { - if (typeof obj == "string") { - par = document.getElementById(obj + "_parent"); - obj = document.getElementById(obj + "_children"); - } - - if (par && obj) { - - if (obj.classList.contains("debug-bar-ndisplay")) { - ciDebugBar.removeClass(obj, "debug-bar-ndisplay"); - } else { - ciDebugBar.addClass(obj, "debug-bar-ndisplay"); - } - - par.classList.toggle("timeline-parent-open"); - } - }, - - //-------------------------------------------------------------------- - - /** - * Toggle tool bar from full to icon and icon to full - */ - toggleToolbar: function () { - var open = ! ciDebugBar.toolbar.classList.contains("debug-bar-ndisplay"); - - if (open) { - ciDebugBar.switchClass(ciDebugBar.icon, "debug-bar-ndisplay", "debug-bar-dinlineBlock"); - ciDebugBar.switchClass(ciDebugBar.toolbar, "debug-bar-dinlineBlock", "debug-bar-ndisplay"); - } else { - ciDebugBar.switchClass(ciDebugBar.icon, "debug-bar-dinlineBlock", "debug-bar-ndisplay"); - ciDebugBar.switchClass(ciDebugBar.toolbar, "debug-bar-ndisplay", "debug-bar-dinlineBlock"); - } - - // Remember it for other page loads on this site - ciDebugBar.createCookie("debug-bar-state", "", -1); - ciDebugBar.createCookie( - "debug-bar-state", - open == true ? "minimized" : "open", - 365 - ); - }, - - /** - * Sets the initial state of the toolbar (open or minimized) when - * the page is first loaded to allow it to remember the state between refreshes. - */ - setToolbarState: function () { - var open = ciDebugBar.readCookie("debug-bar-state"); - - if (open != "open") { - ciDebugBar.switchClass(ciDebugBar.icon, "debug-bar-ndisplay", "debug-bar-dinlineBlock"); - ciDebugBar.switchClass(ciDebugBar.toolbar, "debug-bar-dinlineBlock", "debug-bar-ndisplay"); - } else { - ciDebugBar.switchClass(ciDebugBar.icon, "debug-bar-dinlineBlock", "debug-bar-ndisplay"); - ciDebugBar.switchClass(ciDebugBar.toolbar, "debug-bar-ndisplay", "debug-bar-dinlineBlock"); - } - }, - - toggleViewsHints: function () { - // Avoid toggle hints on history requests that are not the initial - if ( - localStorage.getItem("debugbar-time") != - localStorage.getItem("debugbar-time-new") - ) { - var a = document.querySelector('a[data-tab="ci-views"]'); - a.href = "#"; - return; - } - - var nodeList = []; // [ Element, NewElement( 1 )/OldElement( 0 ) ] - var sortedComments = []; - var comments = []; - - var getComments = function () { - var nodes = []; - var result = []; - var xpathResults = document.evaluate( - "//comment()[starts-with(., ' DEBUG-VIEW')]", - document, - null, - XPathResult.ANY_TYPE, - null - ); - var nextNode = xpathResults.iterateNext(); - while (nextNode) { - nodes.push(nextNode); - nextNode = xpathResults.iterateNext(); - } - - // sort comment by opening and closing tags - for (var i = 0; i < nodes.length; ++i) { - // get file path + name to use as key - var path = nodes[i].nodeValue.substring( - 18, - nodes[i].nodeValue.length - 1 - ); - - if (nodes[i].nodeValue[12] === "S") { - // simple check for start comment - // create new entry - result[path] = [nodes[i], null]; - } else if (result[path]) { - // add to existing entry - result[path][1] = nodes[i]; - } - } - - return result; - }; - - // find node that has TargetNode as parentNode - var getParentNode = function (node, targetNode) { - if (node.parentNode === null) { - return null; - } - - if (node.parentNode !== targetNode) { - return getParentNode(node.parentNode, targetNode); - } - - return node; - }; - - // define invalid & outer ( also invalid ) elements - const INVALID_ELEMENTS = ["NOSCRIPT", "SCRIPT", "STYLE"]; - const OUTER_ELEMENTS = ["HTML", "BODY", "HEAD"]; - - var getValidElementInner = function (node, reverse) { - // handle invalid tags - if (OUTER_ELEMENTS.indexOf(node.nodeName) !== -1) { - for (var i = 0; i < document.body.children.length; ++i) { - var index = reverse - ? document.body.children.length - (i + 1) - : i; - var element = document.body.children[index]; - - // skip invalid tags - if (INVALID_ELEMENTS.indexOf(element.nodeName) !== -1) { - continue; - } - - return [element, reverse]; - } - - return null; - } - - // get to next valid element - while ( - node !== null && - INVALID_ELEMENTS.indexOf(node.nodeName) !== -1 - ) { - node = reverse - ? node.previousElementSibling - : node.nextElementSibling; - } - - // return non array if we couldnt find something - if (node === null) { - return null; - } - - return [node, reverse]; - }; - - // get next valid element ( to be safe to add divs ) - // @return [ element, skip element ] or null if we couldnt find a valid place - var getValidElement = function (nodeElement) { - if (nodeElement) { - if (nodeElement.nextElementSibling !== null) { - return ( - getValidElementInner( - nodeElement.nextElementSibling, - false - ) || - getValidElementInner( - nodeElement.previousElementSibling, - true - ) - ); - } - if (nodeElement.previousElementSibling !== null) { - return getValidElementInner( - nodeElement.previousElementSibling, - true - ); - } - } - - // something went wrong! -> element is not in DOM - return null; - }; - - function showHints() { - // Had AJAX? Reset view blocks - sortedComments = getComments(); - - for (var key in sortedComments) { - var startElement = getValidElement(sortedComments[key][0]); - var endElement = getValidElement(sortedComments[key][1]); - - // skip if we couldnt get a valid element - if (startElement === null || endElement === null) { - continue; - } - - // find element which has same parent as startelement - var jointParent = getParentNode( - endElement[0], - startElement[0].parentNode - ); - if (jointParent === null) { - // find element which has same parent as endelement - jointParent = getParentNode( - startElement[0], - endElement[0].parentNode - ); - if (jointParent === null) { - // both tries failed - continue; - } else { - startElement[0] = jointParent; - } - } else { - endElement[0] = jointParent; - } - - var debugDiv = document.createElement("div"); // holder - var debugPath = document.createElement("div"); // path - var childArray = startElement[0].parentNode.childNodes; // target child array - var parent = startElement[0].parentNode; - var start, end; - - // setup container - debugDiv.classList.add("debug-view"); - debugDiv.classList.add("show-view"); - debugPath.classList.add("debug-view-path"); - debugPath.innerText = key; - debugDiv.appendChild(debugPath); - - // calc distance between them - // start - for (var i = 0; i < childArray.length; ++i) { - // check for comment ( start & end ) -> if its before valid start element - if ( - childArray[i] === sortedComments[key][1] || - childArray[i] === sortedComments[key][0] || - childArray[i] === startElement[0] - ) { - start = i; - if (childArray[i] === sortedComments[key][0]) { - start++; // increase to skip the start comment - } - break; - } - } - // adjust if we want to skip the start element - if (startElement[1]) { - start++; - } - - // end - for (var i = start; i < childArray.length; ++i) { - if (childArray[i] === endElement[0]) { - end = i; - // dont break to check for end comment after end valid element - } else if (childArray[i] === sortedComments[key][1]) { - // if we found the end comment, we can break - end = i; - break; - } - } - - // move elements - var number = end - start; - if (endElement[1]) { - number++; - } - for (var i = 0; i < number; ++i) { - if (INVALID_ELEMENTS.indexOf(childArray[start]) !== -1) { - // skip invalid childs that can cause problems if moved - start++; - continue; - } - debugDiv.appendChild(childArray[start]); - } - - // add container to DOM - nodeList.push(parent.insertBefore(debugDiv, childArray[start])); - } - - ciDebugBar.createCookie("debug-view", "show", 365); - ciDebugBar.addClass(btn, "active"); - } - - function hideHints() { - for (var i = 0; i < nodeList.length; ++i) { - var index; - - // find index - for ( - var j = 0; - j < nodeList[i].parentNode.childNodes.length; - ++j - ) { - if (nodeList[i].parentNode.childNodes[j] === nodeList[i]) { - index = j; - break; - } - } - - // move child back - while (nodeList[i].childNodes.length !== 1) { - nodeList[i].parentNode.insertBefore( - nodeList[i].childNodes[1], - nodeList[i].parentNode.childNodes[index].nextSibling - ); - index++; - } - - nodeList[i].parentNode.removeChild(nodeList[i]); - } - nodeList.length = 0; - - ciDebugBar.createCookie("debug-view", "", -1); - ciDebugBar.removeClass(btn, "active"); - } - - var btn = document.querySelector("[data-tab=ci-views]"); - - // If the Views Collector is inactive stops here - if (! btn) { - return; - } - - btn.parentNode.onclick = function () { - if (ciDebugBar.readCookie("debug-view")) { - hideHints(); - } else { - showHints(); - } - }; - - // Determine Hints state on page load - if (ciDebugBar.readCookie("debug-view")) { - showHints(); - } - }, - - setToolbarPosition: function () { - var btnPosition = this.toolbar.querySelector("#toolbar-position"); - - if (ciDebugBar.readCookie("debug-bar-position") === "top") { - ciDebugBar.addClass(ciDebugBar.icon, "fixed-top"); - ciDebugBar.addClass(ciDebugBar.toolbar, "fixed-top"); - } - - btnPosition.addEventListener( - "click", - function () { - var position = ciDebugBar.readCookie("debug-bar-position"); - - ciDebugBar.createCookie("debug-bar-position", "", -1); - - if (! position || position === "bottom") { - ciDebugBar.createCookie("debug-bar-position", "top", 365); - ciDebugBar.addClass(ciDebugBar.icon, "fixed-top"); - ciDebugBar.addClass(ciDebugBar.toolbar, "fixed-top"); - } else { - ciDebugBar.createCookie( - "debug-bar-position", - "bottom", - 365 - ); - ciDebugBar.removeClass(ciDebugBar.icon, "fixed-top"); - ciDebugBar.removeClass(ciDebugBar.toolbar, "fixed-top"); - } - }, - true - ); - }, - - setToolbarTheme: function () { - var btnTheme = this.toolbar.querySelector("#toolbar-theme"); - var isDarkMode = window.matchMedia( - "(prefers-color-scheme: dark)" - ).matches; - var isLightMode = window.matchMedia( - "(prefers-color-scheme: light)" - ).matches; - - // If a cookie is set with a value, we force the color scheme - if (ciDebugBar.readCookie("debug-bar-theme") === "dark") { - ciDebugBar.removeClass(ciDebugBar.toolbarContainer, "light"); - ciDebugBar.addClass(ciDebugBar.toolbarContainer, "dark"); - } else if (ciDebugBar.readCookie("debug-bar-theme") === "light") { - ciDebugBar.removeClass(ciDebugBar.toolbarContainer, "dark"); - ciDebugBar.addClass(ciDebugBar.toolbarContainer, "light"); - } - - btnTheme.addEventListener( - "click", - function () { - var theme = ciDebugBar.readCookie("debug-bar-theme"); - - if ( - ! theme && - window.matchMedia("(prefers-color-scheme: dark)").matches - ) { - // If there is no cookie, and "prefers-color-scheme" is set to "dark" - // It means that the user wants to switch to light mode - ciDebugBar.createCookie("debug-bar-theme", "light", 365); - ciDebugBar.removeClass(ciDebugBar.toolbarContainer, "dark"); - ciDebugBar.addClass(ciDebugBar.toolbarContainer, "light"); - } else { - if (theme === "dark") { - ciDebugBar.createCookie( - "debug-bar-theme", - "light", - 365 - ); - ciDebugBar.removeClass( - ciDebugBar.toolbarContainer, - "dark" - ); - ciDebugBar.addClass( - ciDebugBar.toolbarContainer, - "light" - ); - } else { - // In any other cases: if there is no cookie, or the cookie is set to - // "light", or the "prefers-color-scheme" is "light"... - ciDebugBar.createCookie("debug-bar-theme", "dark", 365); - ciDebugBar.removeClass( - ciDebugBar.toolbarContainer, - "light" - ); - ciDebugBar.addClass( - ciDebugBar.toolbarContainer, - "dark" - ); - } - } - }, - true - ); - }, - - setHotReloadState: function () { - var btn = document.getElementById("debug-hot-reload").parentNode; - var btnImg = btn.getElementsByTagName("img")[0]; - var eventSource; - - // If the Hot Reload Collector is inactive stops here - if (! btn) { - return; - } - - btn.onclick = function () { - if (ciDebugBar.readCookie("debug-hot-reload")) { - ciDebugBar.createCookie("debug-hot-reload", "", -1); - ciDebugBar.removeClass(btn, "active"); - ciDebugBar.removeClass(btnImg, "rotate"); - - // Close the EventSource connection if it exists - if (typeof eventSource !== "undefined") { - eventSource.close(); - eventSource = void 0; // Undefine the variable - } - } else { - ciDebugBar.createCookie("debug-hot-reload", "show", 365); - ciDebugBar.addClass(btn, "active"); - ciDebugBar.addClass(btnImg, "rotate"); - - eventSource = ciDebugBar.hotReloadConnect(); - } - }; - - // Determine Hot Reload state on page load - if (ciDebugBar.readCookie("debug-hot-reload")) { - ciDebugBar.addClass(btn, "active"); - ciDebugBar.addClass(btnImg, "rotate"); - eventSource = ciDebugBar.hotReloadConnect(); - } - }, - - hotReloadConnect: function () { - const eventSource = new EventSource(ciSiteURL + "/__hot-reload"); - - eventSource.addEventListener("reload", function (e) { - console.log("reload", e); - window.location.reload(); - }); - - eventSource.onerror = (err) => { - console.error("EventSource failed:", err); - }; - - return eventSource; - }, - - /** - * Helper to create a cookie. - * - * @param name - * @param value - * @param days - */ - createCookie: function (name, value, days) { - if (days) { - var date = new Date(); - - date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000); - - var expires = "; expires=" + date.toGMTString(); - } else { - var expires = ""; - } - - document.cookie = - name + "=" + value + expires + "; path=/; samesite=Lax"; - }, - - readCookie: function (name) { - var nameEQ = name + "="; - var ca = document.cookie.split(";"); - - for (var i = 0; i < ca.length; i++) { - var c = ca[i]; - while (c.charAt(0) == " ") { - c = c.substring(1, c.length); - } - if (c.indexOf(nameEQ) == 0) { - return c.substring(nameEQ.length, c.length); - } - } - return null; - }, - - trimSlash: function (text) { - return text.replace(/^\/|\/$/g, ""); - }, - - routerLink: function () { - var row, _location; - var rowGet = this.toolbar.querySelectorAll( - 'td[data-debugbar-route="GET"]' - ); - var patt = /\((?:[^)(]+|\((?:[^)(]+|\([^)(]*\))*\))*\)/; - - for (var i = 0; i < rowGet.length; i++) { - row = rowGet[i]; - if (!/\/\(.+?\)/.test(rowGet[i].innerText)) { - ciDebugBar.addClass(row, "debug-bar-pointer"); - row.setAttribute( - "title", - location.origin + "/" + ciDebugBar.trimSlash(row.innerText) - ); - row.addEventListener("click", function (ev) { - _location = - location.origin + - "/" + - ciDebugBar.trimSlash(ev.target.innerText); - var redirectWindow = window.open(_location, "_blank"); - redirectWindow.location; - }); - } else { - row.innerHTML = - "<div>" + - row.innerText + - "</div>" + - '<form data-debugbar-route-tpl="' + - ciDebugBar.trimSlash(row.innerText.replace(patt, "?")) + - '">' + - row.innerText.replace( - patt, - '<input type="text" placeholder="$1">' - ) + - '<input type="submit" value="Go" class="debug-bar-mleft4">' + - "</form>"; - } - } - - rowGet = this.toolbar.querySelectorAll( - 'td[data-debugbar-route="GET"] form' - ); - for (var i = 0; i < rowGet.length; i++) { - row = rowGet[i]; - - row.addEventListener("submit", function (event) { - event.preventDefault(); - var inputArray = [], - t = 0; - var input = event.target.querySelectorAll("input[type=text]"); - var tpl = event.target.getAttribute("data-debugbar-route-tpl"); - - for (var n = 0; n < input.length; n++) { - if (input[n].value.length > 0) { - inputArray.push(input[n].value); - } - } - - if (inputArray.length > 0) { - _location = - location.origin + - "/" + - tpl.replace(/\?/g, function () { - return inputArray[t++]; - }); - - var redirectWindow = window.open(_location, "_blank"); - redirectWindow.location; - } - }); - } - }, -}; diff --git a/system4.4.6/Debug/Toolbar/Views/toolbar.tpl.php b/system4.4.6/Debug/Toolbar/Views/toolbar.tpl.php deleted file mode 100644 index e2336326..00000000 --- a/system4.4.6/Debug/Toolbar/Views/toolbar.tpl.php +++ /dev/null @@ -1,277 +0,0 @@ -<?php -/** - * @var CodeIgniter\Debug\Toolbar $this - * @var int $totalTime - * @var int $totalMemory - * @var string $url - * @var string $method - * @var bool $isAJAX - * @var int $startTime - * @var int $totalTime - * @var int $totalMemory - * @var float $segmentDuration - * @var int $segmentCount - * @var string $CI_VERSION - * @var array $collectors - * @var array $vars - * @var array $styles - * @var CodeIgniter\View\Parser $parser - */ -?> -<style> - <?= preg_replace('#[\r\n\t ]+#', ' ', file_get_contents(__DIR__ . '/toolbar.css')) ?> -</style> - -<script id="toolbar_js"> - var ciSiteURL = "<?= rtrim(site_url(), '/') ?>" - <?= file_get_contents(__DIR__ . '/toolbar.js') ?> -</script> -<div id="debug-icon" class="debug-bar-ndisplay"> - <a id="debug-icon-link" href="#"> - <svg xmlns="http://www.w3.org/2000/svg" version="1.0" viewBox="0 0 155 200"><defs/><path fill="#dd4814" d="M73.7 3.7c2.2 7.9-.7 18.5-7.8 29-1.8 2.6-10.7 12.2-19.7 21.3-23.9 24-33.6 37.1-40.3 54.4-7.9 20.6-7.8 40.8.5 58.2C12.8 180 27.6 193 42.5 198l6 2-3-2.2c-21-15.2-22.9-38.7-4.8-58.8 2.5-2.7 4.8-5 5.1-5 .4 0 .7 2.7.7 6.1 0 5.7.2 6.2 3.7 9.5 3 2.7 4.6 3.4 7.8 3.4 5.6 0 9.9-2.4 11.6-6.5 2.9-6.9 1.6-12-5-20.5-10.5-13.4-11.7-23.3-4.3-34.7l3.1-4.8.7 4.7c1.3 8.2 5.8 12.9 25 25.8 20.9 14.1 30.6 26.1 32.8 40.5 1.1 7.2-.1 16.1-3.1 21.8-2.7 5.3-11.2 14.3-16.5 17.4-2.4 1.4-4.3 2.6-4.3 2.8 0 .2 2.4-.4 5.3-1.4 24.1-8.3 42.7-27.1 48.2-48.6 1.9-7.6 1.9-20.2-.1-28.5-3.5-15.2-14.6-30.5-29.9-41.2l-7-4.9-.6 3.3c-.8 4.8-2.6 7.6-5.9 9.3-4.5 2.3-10.3 1.9-13.8-1-6.7-5.7-7.8-14.6-3.7-30.5 3-11.6 3.2-20.6.5-29.1C88.3 18 80.6 6.3 74.8 2.2 73.1.9 73 1 73.7 3.7z"/></svg> - </a> -</div> -<div id="debug-bar"> - <div class="toolbar"> - <span id="toolbar-position"><a href="#">↕</a></span> - <span id="toolbar-theme"><a href="#">🔅</a></span> - <span id="hot-reload-btn" class="ci-label"> - <a id="debug-hot-reload" href="#" title="Toggle Hot Reload"> - <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABNklEQVR4nN2US04CQRCGv/DaiBxEvYWuBRPDKSCIXsCdcg0ULqTI8xIGN7JwTCU/ScV5tTO64Us6maSq/7+nuqvgkLgHopTl+QAWwBToAg3+wMTzM7YBrihp4jkCToEB8OJyRkCFAB5yDDxVoAd8OpNMOkrcAeMAgz3nzsQ0EqkDayXZqXy5Qugrdy2tGNdKeNWv40xCqGpvJK0YEwXt8ooylMZzUnCh4EkJgzNpmFaMrYLNEgbH0thmGVhSUVrSeE8KLv+7RBMFb0oY3EnDeihGN+WZhmJ7ZlnPtKHB5RvtNwy0d5XWaGgqRmp7a/9QLjRevoDLvOSRM+nnlKumk++0xwZlLhVnEulOhnohTS37vnU1t5M/ho7rPR03/LKW1bxNQep6ETZb5mpGW2/Ak2KpF3oYfAPX9Xpc671kqwAAAABJRU5ErkJggg==" /> - </a> - </span> - <span class="ci-label"> - <a href="#" data-tab="ci-timeline"> - <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAD7SURBVEhLY6ArSEtLK09NTbWHcvGC9PR0BaDaQiAdUl9fzwQVxg+AFvwHamqHcnGCpKQkeaDa9yD1UD09UCn8AKaBWJySkmIApFehi0ONwwRQBceBLurAh4FqFoHUAtkrgPgREN+ByYEw1DhMANVEMIhAYQ5U1wtU/wmILwLZRlAp/IBYC8gGw88CaFj3A/FnIL4ETDXGUCnyANSC/UC6HIpnQMXAqQXIvo0khxNDjcMEQEmU9AzDuNI7Lgw1DhOAJIEuhQcRKMcC+e+QNHdDpcgD6BaAANSSQqBcENFlDi6AzQKqgkFlwWhxjVI8o2OgmkFaXI8CTMDAAAAxd1O4FzLMaAAAAABJRU5ErkJggg=="> - <span class="hide-sm"><?= $totalTime ?> ms <?= $totalMemory ?> MB</span> - </a> - </span> - - <?php foreach ($collectors as $c) : ?> - <?php if (! $c['isEmpty'] && ($c['hasTabContent'] || $c['hasLabel'])) : ?> - <span class="ci-label"> - <a href="#" data-tab="ci-<?= $c['titleSafe'] ?>"> - <img src="<?= $c['icon'] ?>"> - <span class="hide-sm"> - <?= $c['title'] ?> - <?php if ($c['badgeValue'] !== null) : ?> - <span class="badge"><?= $c['badgeValue'] ?></span> - <?php endif ?> - </span> - </a> - </span> - <?php endif ?> - <?php endforeach ?> - - <span class="ci-label"> - <a href="#" data-tab="ci-vars"> - <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACLSURBVEhLYxgFJIHU1NSraWlp/6H4T0pKSjRUijoAyXAwBlrYDpViAFpmARQrJwZDtWACoCROC4D8CnR5XBiqBRMADfyNprgRKkUdAApzoCUdUNwE5MtApYYIALp6NBWBMVQLJgAaOJqK8AOgq+mSio6DggjEBtLUT0UwQ5HZIADkj6aiUTAggIEBANAEDa/lkCRlAAAAAElFTkSuQmCC"> - <span class="hide-sm">Vars</span> - </a> - </span> - - <h1> - <span class="ci-label"> - <a href="#" data-tab="ci-config"> - <svg xmlns="http://www.w3.org/2000/svg" version="1.0" viewBox="0 0 155 200"><defs/><path fill="#dd4814" d="M73.7 3.7c2.2 7.9-.7 18.5-7.8 29-1.8 2.6-10.7 12.2-19.7 21.3-23.9 24-33.6 37.1-40.3 54.4-7.9 20.6-7.8 40.8.5 58.2C12.8 180 27.6 193 42.5 198l6 2-3-2.2c-21-15.2-22.9-38.7-4.8-58.8 2.5-2.7 4.8-5 5.1-5 .4 0 .7 2.7.7 6.1 0 5.7.2 6.2 3.7 9.5 3 2.7 4.6 3.4 7.8 3.4 5.6 0 9.9-2.4 11.6-6.5 2.9-6.9 1.6-12-5-20.5-10.5-13.4-11.7-23.3-4.3-34.7l3.1-4.8.7 4.7c1.3 8.2 5.8 12.9 25 25.8 20.9 14.1 30.6 26.1 32.8 40.5 1.1 7.2-.1 16.1-3.1 21.8-2.7 5.3-11.2 14.3-16.5 17.4-2.4 1.4-4.3 2.6-4.3 2.8 0 .2 2.4-.4 5.3-1.4 24.1-8.3 42.7-27.1 48.2-48.6 1.9-7.6 1.9-20.2-.1-28.5-3.5-15.2-14.6-30.5-29.9-41.2l-7-4.9-.6 3.3c-.8 4.8-2.6 7.6-5.9 9.3-4.5 2.3-10.3 1.9-13.8-1-6.7-5.7-7.8-14.6-3.7-30.5 3-11.6 3.2-20.6.5-29.1C88.3 18 80.6 6.3 74.8 2.2 73.1.9 73 1 73.7 3.7z"/></svg> - <?= $CI_VERSION ?> - </a> - </span> - </h1> - - <!-- Open/Close Toggle --> - <a id="debug-bar-link" href="#" title="Open/Close"> - <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEPSURBVEhL7ZVLDoJAEEThRuoGDwSEG+jCuFU34s3AK3APP1VDDSGMqI1xx0s6M/2rnlHEaMZElmWrPM+vsDvsYbQ7+us0TReSC2EBrEHxCevRYuppYLXkQpC8sVCuGfTvqSE3hFdFwUGuGfRvqSE35NUAfKZrbQNQm2jrMA+gOK+M+FmhDsRL5voHMA8gFGecq0JOXLWlQg7E7AMIxZnjOiZOEJ82gFCcedUE4gS56QP8yf8ywItz7e+RituKlkkDBoIOH4Nd4HZD4NsGYJ/Abn1xEVOcuZ8f0zc/tHiYmzTAwscBvDIK/veyQ9K/rnewjdF26q0kF1IUxZIFPAVW98x/a+qp8L2M/+HMhETRE6S8TxpZ7KGXAAAAAElFTkSuQmCC"> - </a> - </div> - - <!-- Timeline --> - <div id="ci-timeline" class="tab"> - <table class="timeline"> - <thead> - <tr> - <th class="debug-bar-width30">NAME</th> - <th class="debug-bar-width10">COMPONENT</th> - <th class="debug-bar-width10">DURATION</th> - <?php for ($i = 0; $i < $segmentCount; $i++) : ?> - <th><?= $i * $segmentDuration ?> ms</th> - <?php endfor ?> - </tr> - </thead> - <tbody> - <?= $this->renderTimeline($collectors, $startTime, $segmentCount, $segmentDuration, $styles) ?> - </tbody> - </table> - </div> - - <!-- Collector-provided Tabs --> - <?php foreach ($collectors as $c) : ?> - <?php if (! $c['isEmpty']) : ?> - <?php if ($c['hasTabContent']) : ?> - <div id="ci-<?= $c['titleSafe'] ?>" class="tab"> - <h2><?= $c['title'] ?> <span><?= $c['titleDetails'] ?></span></h2> - - <?= is_string($c['display']) ? $c['display'] : $parser->setData($c['display'])->render("_{$c['titleSafe']}.tpl") ?> - </div> - <?php endif ?> - <?php endif ?> - <?php endforeach ?> - - <!-- In & Out --> - <div id="ci-vars" class="tab"> - - <!-- VarData from Collectors --> - <?php if (isset($vars['varData'])) : ?> - <?php foreach ($vars['varData'] as $heading => $items) : ?> - - <a href="#" data-toggle="datatable" data-table="<?= strtolower(str_replace(' ', '-', $heading)) ?>"> - <h2><?= $heading ?></h2> - </a> - - <?php if (is_array($items)) : ?> - - <table id="<?= strtolower(str_replace(' ', '-', $heading . '_table')) ?>"> - <tbody> - <?php foreach ($items as $key => $value) : ?> - <tr> - <td><?= $key ?></td> - <td><?= $value ?></td> - </tr> - <?php endforeach ?> - </tbody> - </table> - - <?php else: ?> - <p class="muted">No data to display.</p> - <?php endif ?> - <?php endforeach ?> - <?php endif ?> - - <!-- Session --> - <a href="#" data-toggle="datatable" data-table="session"> - <h2>Session User Data</h2> - </a> - - <?php if (isset($vars['session'])) : ?> - <?php if (! empty($vars['session'])) : ?> - <table id="session_table"> - <tbody> - <?php foreach ($vars['session'] as $key => $value) : ?> - <tr> - <td><?= $key ?></td> - <td><?= $value ?></td> - </tr> - <?php endforeach ?> - </tbody> - </table> - <?php else : ?> - <p class="muted">No data to display.</p> - <?php endif ?> - <?php else : ?> - <p class="muted">Session doesn't seem to be active.</p> - <?php endif ?> - - <h2>Request <span>( <?= $vars['request'] ?> )</span></h2> - - <?php if (isset($vars['get']) && $get = $vars['get']) : ?> - <a href="#" data-toggle="datatable" data-table="get"> - <h3>$_GET</h3> - </a> - - <table id="get_table"> - <tbody> - <?php foreach ($get as $name => $value) : ?> - <tr> - <td><?= $name ?></td> - <td><?= $value ?></td> - </tr> - <?php endforeach ?> - </tbody> - </table> - <?php endif ?> - - <?php if (isset($vars['post']) && $post = $vars['post']) : ?> - <a href="#" data-toggle="datatable" data-table="post"> - <h3>$_POST</h3> - </a> - - <table id="post_table"> - <tbody> - <?php foreach ($post as $name => $value) : ?> - <tr> - <td><?= $name ?></td> - <td><?= $value ?></td> - </tr> - <?php endforeach ?> - </tbody> - </table> - <?php endif ?> - - <?php if (isset($vars['headers']) && $headers = $vars['headers']) : ?> - <a href="#" data-toggle="datatable" data-table="request_headers"> - <h3>Headers</h3> - </a> - - <table id="request_headers_table"> - <tbody> - <?php foreach ($headers as $header => $value) : ?> - <tr> - <td><?= $header ?></td> - <td><?= $value ?></td> - </tr> - <?php endforeach ?> - </tbody> - </table> - <?php endif ?> - - <?php if (isset($vars['cookies']) && $cookies = $vars['cookies']) : ?> - <a href="#" data-toggle="datatable" data-table="cookie"> - <h3>Cookies</h3> - </a> - - <table id="cookie_table"> - <tbody> - <?php foreach ($cookies as $name => $value) : ?> - <tr> - <td><?= $name ?></td> - <td><?= is_array($value) ? print_r($value, true) : $value ?></td> - </tr> - <?php endforeach ?> - </tbody> - </table> - <?php endif ?> - - <h2>Response - <span>( <?= $vars['response']['statusCode'] . ' - ' . $vars['response']['reason'] ?> )</span> - </h2> - - <?php if (isset($vars['response']['headers']) && $headers = $vars['response']['headers']) : ?> - <a href="#" data-toggle="datatable" data-table="response_headers"> - <h3>Headers</h3> - </a> - - <table id="response_headers_table"> - <tbody> - <?php foreach ($headers as $header => $value) : ?> - <tr> - <td><?= $header ?></td> - <td><?= $value ?></td> - </tr> - <?php endforeach ?> - </tbody> - </table> - <?php endif ?> - </div> - - <!-- Config Values --> - <div id="ci-config" class="tab"> - <h2>System Configuration</h2> - - <?= $parser->setData($config)->render('_config.tpl') ?> - </div> -</div> -<style> -<?php foreach ($styles as $name => $style): ?> -<?= sprintf(".%s { %s }\n", $name, $style) ?> -<?php endforeach ?> -</style> diff --git a/system4.4.6/Debug/Toolbar/Views/toolbarloader.js b/system4.4.6/Debug/Toolbar/Views/toolbarloader.js deleted file mode 100644 index a8bacb4c..00000000 --- a/system4.4.6/Debug/Toolbar/Views/toolbarloader.js +++ /dev/null @@ -1,90 +0,0 @@ -document.addEventListener('DOMContentLoaded', loadDoc, false); - -function loadDoc(time) { - if (isNaN(time)) { - time = document.getElementById("debugbar_loader").getAttribute("data-time"); - localStorage.setItem('debugbar-time', time); - } - - localStorage.setItem('debugbar-time-new', time); - - let url = '{url}'; - let xhttp = new XMLHttpRequest(); - - xhttp.onreadystatechange = function() { - if (this.readyState === 4 && this.status === 200) { - let toolbar = document.getElementById("toolbarContainer"); - - if (! toolbar) { - toolbar = document.createElement('div'); - toolbar.setAttribute('id', 'toolbarContainer'); - document.body.appendChild(toolbar); - } - - let responseText = this.responseText; - let dynamicStyle = document.getElementById('debugbar_dynamic_style'); - let dynamicScript = document.getElementById('debugbar_dynamic_script'); - - // get the first style block, copy contents to dynamic_style, then remove here - let start = responseText.indexOf('>', responseText.indexOf('<style')) + 1; - let end = responseText.indexOf('</style>', start); - dynamicStyle.innerHTML = responseText.substr(start, end - start); - responseText = responseText.substr(end + 8); - - // get the first script after the first style, copy contents to dynamic_script, then remove here - start = responseText.indexOf('>', responseText.indexOf('<script')) + 1; - end = responseText.indexOf('\<\/script>', start); - dynamicScript.innerHTML = responseText.substr(start, end - start); - responseText = responseText.substr(end + 9); - - // check for last style block, append contents to dynamic_style, then remove here - start = responseText.indexOf('>', responseText.indexOf('<style')) + 1; - end = responseText.indexOf('</style>', start); - dynamicStyle.innerHTML += responseText.substr(start, end - start); - responseText = responseText.substr(0, start - 8); - - toolbar.innerHTML = responseText; - - if (typeof ciDebugBar === 'object') { - ciDebugBar.init(); - } - } else if (this.readyState === 4 && this.status === 404) { - console.log('CodeIgniter DebugBar: File "WRITEPATH/debugbar/debugbar_' + time + '" not found.'); - } - }; - - xhttp.open("GET", url + "?debugbar_time=" + time, true); - xhttp.send(); -} - -window.oldXHR = window.ActiveXObject - ? new ActiveXObject('Microsoft.XMLHTTP') - : window.XMLHttpRequest; - -function newXHR() { - const realXHR = new window.oldXHR(); - - realXHR.addEventListener("readystatechange", function() { - // Only success responses and URLs that do not contains "debugbar_time" are tracked - if (realXHR.readyState === 4 && realXHR.status.toString()[0] === '2' && realXHR.responseURL.indexOf('debugbar_time') === -1) { - if (realXHR.getAllResponseHeaders().indexOf("Debugbar-Time") >= 0) { - let debugbarTime = realXHR.getResponseHeader('Debugbar-Time'); - - if (debugbarTime) { - let h2 = document.querySelector('#ci-history > h2'); - - if (h2) { - h2.innerHTML = 'History <small>You have new debug data.</small> <button id="ci-history-update">Update</button>'; - document.querySelector('a[data-tab="ci-history"] > span > .badge').className += ' active'; - document.getElementById('ci-history-update').addEventListener('click', function () { - loadDoc(debugbarTime); - }, false) - } - } - } - } - }, false); - return realXHR; -} - -window.XMLHttpRequest = newXHR; diff --git a/system4.4.6/Email/Email.php b/system4.4.6/Email/Email.php deleted file mode 100644 index 183ac945..00000000 --- a/system4.4.6/Email/Email.php +++ /dev/null @@ -1,2275 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Email; - -use CodeIgniter\Events\Events; -use CodeIgniter\I18n\Time; -use Config\Mimes; -use ErrorException; - -/** - * CodeIgniter Email Class - * - * Permits email to be sent using Mail, Sendmail, or SMTP. - * - * @see \CodeIgniter\Email\EmailTest - */ -class Email -{ - /** - * Properties from the last successful send. - * - * @var array|null - */ - public $archive; - - /** - * Properties to be added to the next archive. - * - * @var array - */ - protected $tmpArchive = []; - - /** - * @var string - */ - public $fromEmail; - - /** - * @var string - */ - public $fromName; - - /** - * Used as the User-Agent and X-Mailer headers' value. - * - * @var string - */ - public $userAgent = 'CodeIgniter'; - - /** - * Path to the Sendmail binary. - * - * @var string - */ - public $mailPath = '/usr/sbin/sendmail'; - - /** - * Which method to use for sending e-mails. - * - * @var string 'mail', 'sendmail' or 'smtp' - */ - public $protocol = 'mail'; - - /** - * STMP Server Hostname - * - * @var string - */ - public $SMTPHost = ''; - - /** - * SMTP Username - * - * @var string - */ - public $SMTPUser = ''; - - /** - * SMTP Password - * - * @var string - */ - public $SMTPPass = ''; - - /** - * SMTP Server port - * - * @var int - */ - public $SMTPPort = 25; - - /** - * SMTP connection timeout in seconds - * - * @var int - */ - public $SMTPTimeout = 5; - - /** - * SMTP persistent connection - * - * @var bool - */ - public $SMTPKeepAlive = false; - - /** - * SMTP Encryption - * - * @var string '', 'tls' or 'ssl'. 'tls' will issue a STARTTLS command - * to the server. 'ssl' means implicit SSL. Connection on port - * 465 should set this to ''. - */ - public $SMTPCrypto = ''; - - /** - * Whether to apply word-wrapping to the message body. - * - * @var bool - */ - public $wordWrap = true; - - /** - * Number of characters to wrap at. - * - * @see Email::$wordWrap - * - * @var int - */ - public $wrapChars = 76; - - /** - * Message format. - * - * @var string 'text' or 'html' - */ - public $mailType = 'text'; - - /** - * Character set (default: utf-8) - * - * @var string - */ - public $charset = 'utf-8'; - - /** - * Alternative message (for HTML messages only) - * - * @var string - */ - public $altMessage = ''; - - /** - * Whether to validate e-mail addresses. - * - * @var bool - */ - public $validate = true; - - /** - * X-Priority header value. - * - * @var int 1-5 - */ - public $priority = 3; - - /** - * Newline character sequence. - * Use "\r\n" to comply with RFC 822. - * - * @see http://www.ietf.org/rfc/rfc822.txt - * - * @var string "\r\n" or "\n" - */ - public $newline = "\n"; - - /** - * CRLF character sequence - * - * RFC 2045 specifies that for 'quoted-printable' encoding, - * "\r\n" must be used. However, it appears that some servers - * (even on the receiving end) don't handle it properly and - * switching to "\n", while improper, is the only solution - * that seems to work for all environments. - * - * @see http://www.ietf.org/rfc/rfc822.txt - * - * @var string - */ - public $CRLF = "\n"; - - /** - * Whether to use Delivery Status Notification. - * - * @var bool - */ - public $DSN = false; - - /** - * Whether to send multipart alternatives. - * Yahoo! doesn't seem to like these. - * - * @var bool - */ - public $sendMultipart = true; - - /** - * Whether to send messages to BCC recipients in batches. - * - * @var bool - */ - public $BCCBatchMode = false; - - /** - * BCC Batch max number size. - * - * @see Email::$BCCBatchMode - * - * @var int|string - */ - public $BCCBatchSize = 200; - - /** - * Subject header - * - * @var string - */ - protected $subject = ''; - - /** - * Message body - * - * @var string - */ - protected $body = ''; - - /** - * Final message body to be sent. - * - * @var string - */ - protected $finalBody = ''; - - /** - * Final headers to send - * - * @var string - */ - protected $headerStr = ''; - - /** - * SMTP Connection socket placeholder - * - * @var resource|null - */ - protected $SMTPConnect; - - /** - * Mail encoding - * - * @var string '8bit' or '7bit' - */ - protected $encoding = '8bit'; - - /** - * Whether to perform SMTP authentication - * - * @var bool - */ - protected $SMTPAuth = false; - - /** - * Whether to send a Reply-To header - * - * @var bool - */ - protected $replyToFlag = false; - - /** - * Debug messages - * - * @see Email::printDebugger() - * - * @var array - */ - protected $debugMessage = []; - - /** - * Raw debug messages - * - * @var string[] - */ - private array $debugMessageRaw = []; - - /** - * Recipients - * - * @var array|string - */ - protected $recipients = []; - - /** - * CC Recipients - * - * @var array - */ - protected $CCArray = []; - - /** - * BCC Recipients - * - * @var array - */ - protected $BCCArray = []; - - /** - * Message headers - * - * @var array - */ - protected $headers = []; - - /** - * Attachment data - * - * @var array - */ - protected $attachments = []; - - /** - * Valid $protocol values - * - * @see Email::$protocol - * - * @var array - */ - protected $protocols = [ - 'mail', - 'sendmail', - 'smtp', - ]; - - /** - * Character sets valid for 7-bit encoding, - * excluding language suffix. - * - * @var list<string> - */ - protected $baseCharsets = [ - 'us-ascii', - 'iso-2022-', - ]; - - /** - * Bit depths - * - * Valid mail encodings - * - * @see Email::$encoding - * - * @var array - */ - protected $bitDepths = [ - '7bit', - '8bit', - ]; - - /** - * $priority translations - * - * Actual values to send with the X-Priority header - * - * @var array - */ - protected $priorities = [ - 1 => '1 (Highest)', - 2 => '2 (High)', - 3 => '3 (Normal)', - 4 => '4 (Low)', - 5 => '5 (Lowest)', - ]; - - /** - * mbstring.func_overload flag - * - * @var bool - */ - protected static $func_overload; - - /** - * @param array|\Config\Email|null $config - */ - public function __construct($config = null) - { - $this->initialize($config); - if (! isset(static::$func_overload)) { - static::$func_overload = (extension_loaded('mbstring') && ini_get('mbstring.func_overload')); - } - } - - /** - * Initialize preferences - * - * @param array|\Config\Email|null $config - * - * @return Email - */ - public function initialize($config) - { - $this->clear(); - - if ($config instanceof \Config\Email) { - $config = get_object_vars($config); - } - - foreach (array_keys(get_class_vars(static::class)) as $key) { - if (property_exists($this, $key) && isset($config[$key])) { - $method = 'set' . ucfirst($key); - - if (method_exists($this, $method)) { - $this->{$method}($config[$key]); - } else { - $this->{$key} = $config[$key]; - } - } - } - - $this->charset = strtoupper($this->charset); - $this->SMTPAuth = isset($this->SMTPUser[0], $this->SMTPPass[0]); - - return $this; - } - - /** - * @param bool $clearAttachments - * - * @return Email - */ - public function clear($clearAttachments = false) - { - $this->subject = ''; - $this->body = ''; - $this->finalBody = ''; - $this->headerStr = ''; - $this->replyToFlag = false; - $this->recipients = []; - $this->CCArray = []; - $this->BCCArray = []; - $this->headers = []; - $this->debugMessage = []; - $this->debugMessageRaw = []; - - $this->setHeader('Date', $this->setDate()); - - if ($clearAttachments !== false) { - $this->attachments = []; - } - - return $this; - } - - /** - * @param string $from - * @param string $name - * @param string|null $returnPath Return-Path - * - * @return Email - */ - public function setFrom($from, $name = '', $returnPath = null) - { - if (preg_match('/\<(.*)\>/', $from, $match)) { - $from = $match[1]; - } - - if ($this->validate) { - $this->validateEmail($this->stringToArray($from)); - - if ($returnPath) { - $this->validateEmail($this->stringToArray($returnPath)); - } - } - - $this->tmpArchive['fromEmail'] = $from; - $this->tmpArchive['fromName'] = $name; - - if ($name !== '') { - // only use Q encoding if there are characters that would require it - if (! preg_match('/[\200-\377]/', $name)) { - $name = '"' . addcslashes($name, "\0..\37\177'\"\\") . '"'; - } else { - $name = $this->prepQEncoding($name); - } - } - - $this->setHeader('From', $name . ' <' . $from . '>'); - if (! isset($returnPath)) { - $returnPath = $from; - } - $this->setHeader('Return-Path', '<' . $returnPath . '>'); - $this->tmpArchive['returnPath'] = $returnPath; - - return $this; - } - - /** - * @param string $replyto - * @param string $name - * - * @return Email - */ - public function setReplyTo($replyto, $name = '') - { - if (preg_match('/\<(.*)\>/', $replyto, $match)) { - $replyto = $match[1]; - } - - if ($this->validate) { - $this->validateEmail($this->stringToArray($replyto)); - } - - if ($name !== '') { - $this->tmpArchive['replyName'] = $name; - - // only use Q encoding if there are characters that would require it - if (! preg_match('/[\200-\377]/', $name)) { - $name = '"' . addcslashes($name, "\0..\37\177'\"\\") . '"'; - } else { - $name = $this->prepQEncoding($name); - } - } - - $this->setHeader('Reply-To', $name . ' <' . $replyto . '>'); - $this->replyToFlag = true; - $this->tmpArchive['replyTo'] = $replyto; - - return $this; - } - - /** - * @param array|string $to - * - * @return Email - */ - public function setTo($to) - { - $to = $this->stringToArray($to); - $to = $this->cleanEmail($to); - - if ($this->validate) { - $this->validateEmail($to); - } - - if ($this->getProtocol() !== 'mail') { - $this->setHeader('To', implode(', ', $to)); - } - - $this->recipients = $to; - - return $this; - } - - /** - * @param string $cc - * - * @return Email - */ - public function setCC($cc) - { - $cc = $this->cleanEmail($this->stringToArray($cc)); - - if ($this->validate) { - $this->validateEmail($cc); - } - - $this->setHeader('Cc', implode(', ', $cc)); - - if ($this->getProtocol() === 'smtp') { - $this->CCArray = $cc; - } - - $this->tmpArchive['CCArray'] = $cc; - - return $this; - } - - /** - * @param string $bcc - * @param string $limit - * - * @return Email - */ - public function setBCC($bcc, $limit = '') - { - if ($limit !== '' && is_numeric($limit)) { - $this->BCCBatchMode = true; - $this->BCCBatchSize = $limit; - } - - $bcc = $this->cleanEmail($this->stringToArray($bcc)); - - if ($this->validate) { - $this->validateEmail($bcc); - } - - if ($this->getProtocol() === 'smtp' || ($this->BCCBatchMode && count($bcc) > $this->BCCBatchSize)) { - $this->BCCArray = $bcc; - } else { - $this->setHeader('Bcc', implode(', ', $bcc)); - $this->tmpArchive['BCCArray'] = $bcc; - } - - return $this; - } - - /** - * @param string $subject - * - * @return Email - */ - public function setSubject($subject) - { - $this->tmpArchive['subject'] = $subject; - - $subject = $this->prepQEncoding($subject); - $this->setHeader('Subject', $subject); - - return $this; - } - - /** - * @param string $body - * - * @return Email - */ - public function setMessage($body) - { - $this->body = rtrim(str_replace("\r", '', $body)); - - return $this; - } - - /** - * @param string $file Can be local path, URL or buffered content - * @param string $disposition 'attachment' - * @param string|null $newname - * @param string $mime - * - * @return bool|Email - */ - public function attach($file, $disposition = '', $newname = null, $mime = '') - { - if ($mime === '') { - if (strpos($file, '://') === false && ! is_file($file)) { - $this->setErrorMessage(lang('Email.attachmentMissing', [$file])); - - return false; - } - - if (! $fp = @fopen($file, 'rb')) { - $this->setErrorMessage(lang('Email.attachmentUnreadable', [$file])); - - return false; - } - - $fileContent = stream_get_contents($fp); - - $mime = $this->mimeTypes(pathinfo($file, PATHINFO_EXTENSION)); - - fclose($fp); - } else { - $fileContent = &$file; // buffered file - } - - // declare names on their own, to make phpcbf happy - $namesAttached = [$file, $newname]; - - $this->attachments[] = [ - 'name' => $namesAttached, - 'disposition' => empty($disposition) ? 'attachment' : $disposition, - // Can also be 'inline' Not sure if it matters - 'type' => $mime, - 'content' => chunk_split(base64_encode($fileContent)), - 'multipart' => 'mixed', - ]; - - return $this; - } - - /** - * Set and return attachment Content-ID - * Useful for attached inline pictures - * - * @param string $filename - * - * @return bool|string - */ - public function setAttachmentCID($filename) - { - foreach ($this->attachments as $i => $attachment) { - // For file path. - if ($attachment['name'][0] === $filename) { - $this->attachments[$i]['multipart'] = 'related'; - - $this->attachments[$i]['cid'] = uniqid(basename($attachment['name'][0]) . '@', true); - - return $this->attachments[$i]['cid']; - } - - // For buffer string. - if ($attachment['name'][1] === $filename) { - $this->attachments[$i]['multipart'] = 'related'; - - $this->attachments[$i]['cid'] = uniqid(basename($attachment['name'][1]) . '@', true); - - return $this->attachments[$i]['cid']; - } - } - - return false; - } - - /** - * @param string $header - * @param string $value - * - * @return Email - */ - public function setHeader($header, $value) - { - $this->headers[$header] = str_replace(["\n", "\r"], '', $value); - - return $this; - } - - /** - * @param array|string $email - * - * @return array - */ - protected function stringToArray($email) - { - if (! is_array($email)) { - return (strpos($email, ',') !== false) ? preg_split('/[\s,]/', $email, -1, PREG_SPLIT_NO_EMPTY) : (array) trim($email); - } - - return $email; - } - - /** - * @param string $str - * - * @return Email - */ - public function setAltMessage($str) - { - $this->altMessage = (string) $str; - - return $this; - } - - /** - * @param string $type - * - * @return Email - */ - public function setMailType($type = 'text') - { - $this->mailType = ($type === 'html') ? 'html' : 'text'; - - return $this; - } - - /** - * @param bool $wordWrap - * - * @return Email - */ - public function setWordWrap($wordWrap = true) - { - $this->wordWrap = (bool) $wordWrap; - - return $this; - } - - /** - * @param string $protocol - * - * @return Email - */ - public function setProtocol($protocol = 'mail') - { - $this->protocol = in_array($protocol, $this->protocols, true) ? strtolower($protocol) : 'mail'; - - return $this; - } - - /** - * @param int $n - * - * @return Email - */ - public function setPriority($n = 3) - { - $this->priority = preg_match('/^[1-5]$/', (string) $n) ? (int) $n : 3; - - return $this; - } - - /** - * @param string $newline - * - * @return Email - */ - public function setNewline($newline = "\n") - { - $this->newline = in_array($newline, ["\n", "\r\n", "\r"], true) ? $newline : "\n"; - - return $this; - } - - /** - * @param string $CRLF - * - * @return Email - */ - public function setCRLF($CRLF = "\n") - { - $this->CRLF = ($CRLF !== "\n" && $CRLF !== "\r\n" && $CRLF !== "\r") ? "\n" : $CRLF; - - return $this; - } - - /** - * @return string - */ - protected function getMessageID() - { - $from = str_replace(['>', '<'], '', $this->headers['Return-Path']); - - return '<' . uniqid('', true) . strstr($from, '@') . '>'; - } - - /** - * @return string - */ - protected function getProtocol() - { - $this->protocol = strtolower($this->protocol); - - if (! in_array($this->protocol, $this->protocols, true)) { - $this->protocol = 'mail'; - } - - return $this->protocol; - } - - /** - * @return string - */ - protected function getEncoding() - { - if (! in_array($this->encoding, $this->bitDepths, true)) { - $this->encoding = '8bit'; - } - - foreach ($this->baseCharsets as $charset) { - if (strpos($this->charset, $charset) === 0) { - $this->encoding = '7bit'; - - break; - } - } - - return $this->encoding; - } - - /** - * @return string - */ - protected function getContentType() - { - if ($this->mailType === 'html') { - return empty($this->attachments) ? 'html' : 'html-attach'; - } - - if ($this->mailType === 'text' && ! empty($this->attachments)) { - return 'plain-attach'; - } - - return 'plain'; - } - - /** - * Set RFC 822 Date - * - * @return string - */ - protected function setDate() - { - $timezone = date('Z'); - $operator = ($timezone[0] === '-') ? '-' : '+'; - $timezone = abs($timezone); - $timezone = floor($timezone / 3600) * 100 + ($timezone % 3600) / 60; - - return sprintf('%s %s%04d', date('D, j M Y H:i:s'), $operator, $timezone); - } - - /** - * @return string - */ - protected function getMimeMessage() - { - return 'This is a multi-part message in MIME format.' . $this->newline . 'Your email application may not support this format.'; - } - - /** - * @param array|string $email - * - * @return bool - */ - public function validateEmail($email) - { - if (! is_array($email)) { - $this->setErrorMessage(lang('Email.mustBeArray')); - - return false; - } - - foreach ($email as $val) { - if (! $this->isValidEmail($val)) { - $this->setErrorMessage(lang('Email.invalidAddress', [$val])); - - return false; - } - } - - return true; - } - - /** - * @param string $email - * - * @return bool - */ - public function isValidEmail($email) - { - if (function_exists('idn_to_ascii') && defined('INTL_IDNA_VARIANT_UTS46') && $atpos = strpos($email, '@')) { - $email = static::substr($email, 0, ++$atpos) - . idn_to_ascii(static::substr($email, $atpos), 0, INTL_IDNA_VARIANT_UTS46); - } - - return (bool) filter_var($email, FILTER_VALIDATE_EMAIL); - } - - /** - * @param array|string $email - * - * @return array|string - */ - public function cleanEmail($email) - { - if (! is_array($email)) { - return preg_match('/\<(.*)\>/', $email, $match) ? $match[1] : $email; - } - - $cleanEmail = []; - - foreach ($email as $addy) { - $cleanEmail[] = preg_match('/\<(.*)\>/', $addy, $match) ? $match[1] : $addy; - } - - return $cleanEmail; - } - - /** - * Build alternative plain text message - * - * Provides the raw message for use in plain-text headers of - * HTML-formatted emails. - * - * If the user hasn't specified his own alternative message - * it creates one by stripping the HTML - * - * @return string - */ - protected function getAltMessage() - { - if (! empty($this->altMessage)) { - return ($this->wordWrap) ? $this->wordWrap($this->altMessage, 76) : $this->altMessage; - } - - $body = preg_match('/\<body.*?\>(.*)\<\/body\>/si', $this->body, $match) ? $match[1] : $this->body; - $body = str_replace("\t", '', preg_replace('#<!--(.*)--\>#', '', trim(strip_tags($body)))); - - for ($i = 20; $i >= 3; $i--) { - $body = str_replace(str_repeat("\n", $i), "\n\n", $body); - } - - $body = preg_replace('| +|', ' ', $body); - - return ($this->wordWrap) ? $this->wordWrap($body, 76) : $body; - } - - /** - * @param string $str - * @param int|null $charlim Line-length limit - * - * @return string - */ - public function wordWrap($str, $charlim = null) - { - if (empty($charlim)) { - $charlim = empty($this->wrapChars) ? 76 : $this->wrapChars; - } - - if (strpos($str, "\r") !== false) { - $str = str_replace(["\r\n", "\r"], "\n", $str); - } - - $str = preg_replace('| +\n|', "\n", $str); - - $unwrap = []; - - if (preg_match_all('|\{unwrap\}(.+?)\{/unwrap\}|s', $str, $matches)) { - for ($i = 0, $c = count($matches[0]); $i < $c; $i++) { - $unwrap[] = $matches[1][$i]; - $str = str_replace($matches[0][$i], '{{unwrapped' . $i . '}}', $str); - } - } - - // Use PHP's native function to do the initial wordwrap. - // We set the cut flag to FALSE so that any individual words that are - // too long get left alone. In the next step we'll deal with them. - $str = wordwrap($str, $charlim, "\n", false); - - // Split the string into individual lines of text and cycle through them - $output = ''; - - foreach (explode("\n", $str) as $line) { - if (static::strlen($line) <= $charlim) { - $output .= $line . $this->newline; - - continue; - } - - $temp = ''; - - do { - if (preg_match('!\[url.+\]|://|www\.!', $line)) { - break; - } - - $temp .= static::substr($line, 0, $charlim - 1); - $line = static::substr($line, $charlim - 1); - } while (static::strlen($line) > $charlim); - - if ($temp !== '') { - $output .= $temp . $this->newline; - } - - $output .= $line . $this->newline; - } - - foreach ($unwrap as $key => $val) { - $output = str_replace('{{unwrapped' . $key . '}}', $val, $output); - } - - return $output; - } - - /** - * Build final headers - * - * @return void - */ - protected function buildHeaders() - { - $this->setHeader('User-Agent', $this->userAgent); - $this->setHeader('X-Sender', $this->cleanEmail($this->headers['From'])); - $this->setHeader('X-Mailer', $this->userAgent); - $this->setHeader('X-Priority', $this->priorities[$this->priority]); - $this->setHeader('Message-ID', $this->getMessageID()); - $this->setHeader('Mime-Version', '1.0'); - } - - /** - * Write Headers as a string - * - * @return void - */ - protected function writeHeaders() - { - if ($this->protocol === 'mail' && isset($this->headers['Subject'])) { - $this->subject = $this->headers['Subject']; - unset($this->headers['Subject']); - } - - reset($this->headers); - $this->headerStr = ''; - - foreach ($this->headers as $key => $val) { - $val = trim($val); - - if ($val !== '') { - $this->headerStr .= $key . ': ' . $val . $this->newline; - } - } - - if ($this->getProtocol() === 'mail') { - $this->headerStr = rtrim($this->headerStr); - } - } - - /** - * Build Final Body and attachments - * - * @return void - */ - protected function buildMessage() - { - if ($this->wordWrap === true && $this->mailType !== 'html') { - $this->body = $this->wordWrap($this->body); - } - - $this->writeHeaders(); - $hdr = ($this->getProtocol() === 'mail') ? $this->newline : ''; - $body = ''; - - switch ($this->getContentType()) { - case 'plain': - $hdr .= 'Content-Type: text/plain; charset=' - . $this->charset - . $this->newline - . 'Content-Transfer-Encoding: ' - . $this->getEncoding(); - - if ($this->getProtocol() === 'mail') { - $this->headerStr .= $hdr; - $this->finalBody = $this->body; - } else { - $this->finalBody = $hdr . $this->newline . $this->newline . $this->body; - } - - return; - - case 'html': - $boundary = uniqid('B_ALT_', true); - - if ($this->sendMultipart === false) { - $hdr .= 'Content-Type: text/html; charset=' - . $this->charset . $this->newline - . 'Content-Transfer-Encoding: quoted-printable'; - } else { - $hdr .= 'Content-Type: multipart/alternative; boundary="' . $boundary . '"'; - $body .= $this->getMimeMessage() . $this->newline . $this->newline - . '--' . $boundary . $this->newline - . 'Content-Type: text/plain; charset=' . $this->charset . $this->newline - . 'Content-Transfer-Encoding: ' . $this->getEncoding() . $this->newline . $this->newline - . $this->getAltMessage() . $this->newline . $this->newline - . '--' . $boundary . $this->newline - . 'Content-Type: text/html; charset=' . $this->charset . $this->newline - . 'Content-Transfer-Encoding: quoted-printable' . $this->newline . $this->newline; - } - - $this->finalBody = $body . $this->prepQuotedPrintable($this->body) . $this->newline . $this->newline; - - if ($this->getProtocol() === 'mail') { - $this->headerStr .= $hdr; - } else { - $this->finalBody = $hdr . $this->newline . $this->newline . $this->finalBody; - } - - if ($this->sendMultipart !== false) { - $this->finalBody .= '--' . $boundary . '--'; - } - - return; - - case 'plain-attach': - $boundary = uniqid('B_ATC_', true); - $hdr .= 'Content-Type: multipart/mixed; boundary="' . $boundary . '"'; - - if ($this->getProtocol() === 'mail') { - $this->headerStr .= $hdr; - } - - $body .= $this->getMimeMessage() . $this->newline - . $this->newline - . '--' . $boundary . $this->newline - . 'Content-Type: text/plain; charset=' . $this->charset . $this->newline - . 'Content-Transfer-Encoding: ' . $this->getEncoding() . $this->newline - . $this->newline - . $this->body . $this->newline . $this->newline; - - $this->appendAttachments($body, $boundary); - break; - - case 'html-attach': - $altBoundary = uniqid('B_ALT_', true); - $lastBoundary = null; - - if ($this->attachmentsHaveMultipart('mixed')) { - $atcBoundary = uniqid('B_ATC_', true); - $hdr .= 'Content-Type: multipart/mixed; boundary="' . $atcBoundary . '"'; - $lastBoundary = $atcBoundary; - } - - if ($this->attachmentsHaveMultipart('related')) { - $relBoundary = uniqid('B_REL_', true); - - $relBoundaryHeader = 'Content-Type: multipart/related; boundary="' . $relBoundary . '"'; - - if (isset($lastBoundary)) { - $body .= '--' . $lastBoundary . $this->newline . $relBoundaryHeader; - } else { - $hdr .= $relBoundaryHeader; - } - - $lastBoundary = $relBoundary; - } - - if ($this->getProtocol() === 'mail') { - $this->headerStr .= $hdr; - } - - static::strlen($body) && $body .= $this->newline . $this->newline; - - $body .= $this->getMimeMessage() . $this->newline . $this->newline - . '--' . $lastBoundary . $this->newline - . 'Content-Type: multipart/alternative; boundary="' . $altBoundary . '"' . $this->newline . $this->newline - . '--' . $altBoundary . $this->newline - . 'Content-Type: text/plain; charset=' . $this->charset . $this->newline - . 'Content-Transfer-Encoding: ' . $this->getEncoding() . $this->newline . $this->newline - . $this->getAltMessage() . $this->newline . $this->newline - . '--' . $altBoundary . $this->newline - . 'Content-Type: text/html; charset=' . $this->charset . $this->newline - . 'Content-Transfer-Encoding: quoted-printable' . $this->newline . $this->newline - . $this->prepQuotedPrintable($this->body) . $this->newline . $this->newline - . '--' . $altBoundary . '--' . $this->newline . $this->newline; - - if (isset($relBoundary)) { - $body .= $this->newline . $this->newline; - $this->appendAttachments($body, $relBoundary, 'related'); - } - - // multipart/mixed attachments - if (isset($atcBoundary)) { - $body .= $this->newline . $this->newline; - $this->appendAttachments($body, $atcBoundary, 'mixed'); - } - - break; - } - - $this->finalBody = ($this->getProtocol() === 'mail') ? $body : $hdr . $this->newline . $this->newline . $body; - } - - /** - * @param mixed $type - * - * @return bool - */ - protected function attachmentsHaveMultipart($type) - { - foreach ($this->attachments as &$attachment) { - if ($attachment['multipart'] === $type) { - return true; - } - } - - return false; - } - - /** - * @param string $body Message body to append to - * @param string $boundary Multipart boundary - * @param string|null $multipart When provided, only attachments of this type will be processed - * - * @return void - */ - protected function appendAttachments(&$body, $boundary, $multipart = null) - { - foreach ($this->attachments as $attachment) { - if (isset($multipart) && $attachment['multipart'] !== $multipart) { - continue; - } - - $name = $attachment['name'][1] ?? basename($attachment['name'][0]); - $body .= '--' . $boundary . $this->newline - . 'Content-Type: ' . $attachment['type'] . '; name="' . $name . '"' . $this->newline - . 'Content-Disposition: ' . $attachment['disposition'] . ';' . $this->newline - . 'Content-Transfer-Encoding: base64' . $this->newline - . (empty($attachment['cid']) ? '' : 'Content-ID: <' . $attachment['cid'] . '>' . $this->newline) - . $this->newline - . $attachment['content'] . $this->newline; - } - - // $name won't be set if no attachments were appended, - // and therefore a boundary wouldn't be necessary - if (! empty($name)) { - $body .= '--' . $boundary . '--'; - } - } - - /** - * Prepares string for Quoted-Printable Content-Transfer-Encoding - * Refer to RFC 2045 http://www.ietf.org/rfc/rfc2045.txt - * - * @param string $str - * - * @return string - */ - protected function prepQuotedPrintable($str) - { - // ASCII code numbers for "safe" characters that can always be - // used literally, without encoding, as described in RFC 2049. - // http://www.ietf.org/rfc/rfc2049.txt - static $asciiSafeChars = [ - // ' ( ) + , - . / : = ? - 39, - 40, - 41, - 43, - 44, - 45, - 46, - 47, - 58, - 61, - 63, - // numbers - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - // upper-case letters - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - // lower-case letters - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - ]; - - // We are intentionally wrapping so mail servers will encode characters - // properly and MUAs will behave, so {unwrap} must go! - $str = str_replace(['{unwrap}', '{/unwrap}'], '', $str); - - // RFC 2045 specifies CRLF as "\r\n". - // However, many developers choose to override that and violate - // the RFC rules due to (apparently) a bug in MS Exchange, - // which only works with "\n". - if ($this->CRLF === "\r\n") { - return quoted_printable_encode($str); - } - - // Reduce multiple spaces & remove nulls - $str = preg_replace(['| +|', '/\x00+/'], [' ', ''], $str); - - // Standardize newlines - if (strpos($str, "\r") !== false) { - $str = str_replace(["\r\n", "\r"], "\n", $str); - } - - $escape = '='; - $output = ''; - - foreach (explode("\n", $str) as $line) { - $length = static::strlen($line); - $temp = ''; - - // Loop through each character in the line to add soft-wrap - // characters at the end of a line " =\r\n" and add the newly - // processed line(s) to the output (see comment on $crlf class property) - for ($i = 0; $i < $length; $i++) { - // Grab the next character - $char = $line[$i]; - $ascii = ord($char); - - // Convert spaces and tabs but only if it's the end of the line - if ($ascii === 32 || $ascii === 9) { - if ($i === ($length - 1)) { - $char = $escape . sprintf('%02s', dechex($ascii)); - } - } - // DO NOT move this below the $ascii_safe_chars line! - // - // = (equals) signs are allowed by RFC2049, but must be encoded - // as they are the encoding delimiter! - elseif ($ascii === 61) { - $char = $escape . strtoupper(sprintf('%02s', dechex($ascii))); // =3D - } elseif (! in_array($ascii, $asciiSafeChars, true)) { - $char = $escape . strtoupper(sprintf('%02s', dechex($ascii))); - } - - // If we're at the character limit, add the line to the output, - // reset our temp variable, and keep on chuggin' - if ((static::strlen($temp) + static::strlen($char)) >= 76) { - $output .= $temp . $escape . $this->CRLF; - $temp = ''; - } - - // Add the character to our temporary line - $temp .= $char; - } - - // Add our completed line to the output - $output .= $temp . $this->CRLF; - } - - // get rid of extra CRLF tacked onto the end - return static::substr($output, 0, static::strlen($this->CRLF) * -1); - } - - /** - * Performs "Q Encoding" on a string for use in email headers. - * It's related but not identical to quoted-printable, so it has its - * own method. - * - * @param string $str - * - * @return string - */ - protected function prepQEncoding($str) - { - $str = str_replace(["\r", "\n"], '', $str); - - if ($this->charset === 'UTF-8') { - // Note: We used to have mb_encode_mimeheader() as the first choice - // here, but it turned out to be buggy and unreliable. DO NOT - // re-add it! -- Narf - if (extension_loaded('iconv')) { - $output = @iconv_mime_encode('', $str, [ - 'scheme' => 'Q', - 'line-length' => 76, - 'input-charset' => $this->charset, - 'output-charset' => $this->charset, - 'line-break-chars' => $this->CRLF, - ]); - - // There are reports that iconv_mime_encode() might fail and return FALSE - if ($output !== false) { - // iconv_mime_encode() will always put a header field name. - // We've passed it an empty one, but it still prepends our - // encoded string with ': ', so we need to strip it. - return static::substr($output, 2); - } - - $chars = iconv_strlen($str, 'UTF-8'); - } elseif (extension_loaded('mbstring')) { - $chars = mb_strlen($str, 'UTF-8'); - } - } - - // We might already have this set for UTF-8 - if (! isset($chars)) { - $chars = static::strlen($str); - } - - $output = '=?' . $this->charset . '?Q?'; - - for ($i = 0, $length = static::strlen($output); $i < $chars; $i++) { - $chr = ($this->charset === 'UTF-8' && extension_loaded('iconv')) ? '=' . implode('=', str_split(strtoupper(bin2hex(iconv_substr($str, $i, 1, $this->charset))), 2)) : '=' . strtoupper(bin2hex($str[$i])); - - // RFC 2045 sets a limit of 76 characters per line. - // We'll append ?= to the end of each line though. - if ($length + ($l = static::strlen($chr)) > 74) { - $output .= '?=' . $this->CRLF // EOL - . ' =?' . $this->charset . '?Q?' . $chr; // New line - - $length = 6 + static::strlen($this->charset) + $l; // Reset the length for the new line - } else { - $output .= $chr; - $length += $l; - } - } - - // End the header - return $output . '?='; - } - - /** - * @param bool $autoClear - * - * @return bool - */ - public function send($autoClear = true) - { - if (! isset($this->headers['From']) && ! empty($this->fromEmail)) { - $this->setFrom($this->fromEmail, $this->fromName); - } - - if (! isset($this->headers['From'])) { - $this->setErrorMessage(lang('Email.noFrom')); - - return false; - } - - if ($this->replyToFlag === false) { - $this->setReplyTo($this->headers['From']); - } - - if ( - empty($this->recipients) && ! isset($this->headers['To']) - && empty($this->BCCArray) && ! isset($this->headers['Bcc']) - && ! isset($this->headers['Cc']) - ) { - $this->setErrorMessage(lang('Email.noRecipients')); - - return false; - } - - $this->buildHeaders(); - - if ($this->BCCBatchMode && count($this->BCCArray) > $this->BCCBatchSize) { - $this->batchBCCSend(); - - if ($autoClear) { - $this->clear(); - } - - return true; - } - - $this->buildMessage(); - $result = $this->spoolEmail(); - - if ($result) { - $this->setArchiveValues(); - - if ($autoClear) { - $this->clear(); - } - - Events::trigger('email', $this->archive); - } - - return $result; - } - - /** - * Batch Bcc Send. Sends groups of BCCs in batches - * - * @return void - */ - public function batchBCCSend() - { - $float = $this->BCCBatchSize - 1; - $set = ''; - $chunk = []; - - for ($i = 0, $c = count($this->BCCArray); $i < $c; $i++) { - if (isset($this->BCCArray[$i])) { - $set .= ', ' . $this->BCCArray[$i]; - } - - if ($i === $float) { - $chunk[] = static::substr($set, 1); - $float += $this->BCCBatchSize; - $set = ''; - } - - if ($i === $c - 1) { - $chunk[] = static::substr($set, 1); - } - } - - for ($i = 0, $c = count($chunk); $i < $c; $i++) { - unset($this->headers['Bcc']); - $bcc = $this->cleanEmail($this->stringToArray($chunk[$i])); - - if ($this->protocol !== 'smtp') { - $this->setHeader('Bcc', implode(', ', $bcc)); - } else { - $this->BCCArray = $bcc; - } - - $this->buildMessage(); - $this->spoolEmail(); - } - - // Update the archive - $this->setArchiveValues(); - Events::trigger('email', $this->archive); - } - - /** - * Unwrap special elements - * - * @return void - */ - protected function unwrapSpecials() - { - $this->finalBody = preg_replace_callback( - '/\{unwrap\}(.*?)\{\/unwrap\}/si', - [ - $this, - 'removeNLCallback', - ], - $this->finalBody - ); - } - - /** - * Strip line-breaks via callback - * - * @used-by unwrapSpecials() - * - * @param list<string> $matches - * - * @return string - */ - protected function removeNLCallback($matches) - { - if (strpos($matches[1], "\r") !== false || strpos($matches[1], "\n") !== false) { - $matches[1] = str_replace(["\r\n", "\r", "\n"], '', $matches[1]); - } - - return $matches[1]; - } - - /** - * Spool mail to the mail server - * - * @return bool - */ - protected function spoolEmail() - { - $this->unwrapSpecials(); - $protocol = $this->getProtocol(); - $method = 'sendWith' . ucfirst($protocol); - - try { - $success = $this->{$method}(); - } catch (ErrorException $e) { - $success = false; - log_message('error', 'Email: ' . $method . ' throwed ' . $e); - } - - if (! $success) { - $message = lang('Email.sendFailure' . ($protocol === 'mail' ? 'PHPMail' : ucfirst($protocol))); - - log_message('error', 'Email: ' . $message); - log_message('error', $this->printDebuggerRaw()); - - $this->setErrorMessage($message); - - return false; - } - - $this->setErrorMessage(lang('Email.sent', [$protocol])); - - return true; - } - - /** - * Validate email for shell - * - * Applies stricter, shell-safe validation to email addresses. - * Introduced to prevent RCE via sendmail's -f option. - * - * @see https://github.com/codeigniter4/CodeIgniter/issues/4963 - * @see https://gist.github.com/Zenexer/40d02da5e07f151adeaeeaa11af9ab36 - * - * @license https://creativecommons.org/publicdomain/zero/1.0/ CC0 1.0, Public Domain - * - * Credits for the base concept go to Paul Buonopane <paul@namepros.com> - * - * @param string $email - * - * @return bool - */ - protected function validateEmailForShell(&$email) - { - if (function_exists('idn_to_ascii') && $atpos = strpos($email, '@')) { - $email = static::substr($email, 0, ++$atpos) - . idn_to_ascii(static::substr($email, $atpos), 0, INTL_IDNA_VARIANT_UTS46); - } - - return filter_var($email, FILTER_VALIDATE_EMAIL) === $email && preg_match('#\A[a-z0-9._+-]+@[a-z0-9.-]{1,253}\z#i', $email); - } - - /** - * Send using mail() - * - * @return bool - */ - protected function sendWithMail() - { - $recipients = is_array($this->recipients) ? implode(', ', $this->recipients) : $this->recipients; - - // _validate_email_for_shell() below accepts by reference, - // so this needs to be assigned to a variable - $from = $this->cleanEmail($this->headers['Return-Path']); - - if (! $this->validateEmailForShell($from)) { - return mail($recipients, $this->subject, $this->finalBody, $this->headerStr); - } - - // most documentation of sendmail using the "-f" flag lacks a space after it, however - // we've encountered servers that seem to require it to be in place. - return mail($recipients, $this->subject, $this->finalBody, $this->headerStr, '-f ' . $from); - } - - /** - * Send using Sendmail - * - * @return bool - */ - protected function sendWithSendmail() - { - // _validate_email_for_shell() below accepts by reference, - // so this needs to be assigned to a variable - $from = $this->cleanEmail($this->headers['From']); - - $from = $this->validateEmailForShell($from) ? '-f ' . $from : ''; - - if (! function_usable('popen') || false === ($fp = @popen($this->mailPath . ' -oi ' . $from . ' -t', 'w'))) { - return false; - } - - fwrite($fp, $this->headerStr); - fwrite($fp, $this->finalBody); - $status = pclose($fp); - - if ($status !== 0) { - $this->setErrorMessage(lang('Email.exitStatus', [$status])); - $this->setErrorMessage(lang('Email.noSocket')); - - return false; - } - - return true; - } - - /** - * Send using SMTP - * - * @return bool - */ - protected function sendWithSmtp() - { - if ($this->SMTPHost === '') { - $this->setErrorMessage(lang('Email.noHostname')); - - return false; - } - - if (! $this->SMTPConnect() || ! $this->SMTPAuthenticate()) { - return false; - } - - if (! $this->sendCommand('from', $this->cleanEmail($this->headers['From']))) { - $this->SMTPEnd(); - - return false; - } - - foreach ($this->recipients as $val) { - if (! $this->sendCommand('to', $val)) { - $this->SMTPEnd(); - - return false; - } - } - - foreach ($this->CCArray as $val) { - if ($val !== '' && ! $this->sendCommand('to', $val)) { - $this->SMTPEnd(); - - return false; - } - } - - foreach ($this->BCCArray as $val) { - if ($val !== '' && ! $this->sendCommand('to', $val)) { - $this->SMTPEnd(); - - return false; - } - } - - if (! $this->sendCommand('data')) { - $this->SMTPEnd(); - - return false; - } - - // perform dot transformation on any lines that begin with a dot - $this->sendData($this->headerStr . preg_replace('/^\./m', '..$1', $this->finalBody)); - $this->sendData($this->newline . '.'); - $reply = $this->getSMTPData(); - $this->setErrorMessage($reply); - $this->SMTPEnd(); - - if (strpos($reply, '250') !== 0) { - $this->setErrorMessage(lang('Email.SMTPError', [$reply])); - - return false; - } - - return true; - } - - /** - * Shortcut to send RSET or QUIT depending on keep-alive - * - * @return void - */ - protected function SMTPEnd() - { - $this->sendCommand($this->SMTPKeepAlive ? 'reset' : 'quit'); - } - - /** - * @return bool|string - */ - protected function SMTPConnect() - { - if (is_resource($this->SMTPConnect)) { - return true; - } - - $ssl = ''; - - // Connection to port 465 should use implicit TLS (without STARTTLS) - // as per RFC 8314. - if ($this->SMTPPort === 465) { - $ssl = 'tls://'; - } - // But if $SMTPCrypto is set to `ssl`, SSL can be used. - if ($this->SMTPCrypto === 'ssl') { - $ssl = 'ssl://'; - } - - $this->SMTPConnect = fsockopen( - $ssl . $this->SMTPHost, - $this->SMTPPort, - $errno, - $errstr, - $this->SMTPTimeout - ); - - if (! is_resource($this->SMTPConnect)) { - $this->setErrorMessage(lang('Email.SMTPError', [$errno . ' ' . $errstr])); - - return false; - } - - stream_set_timeout($this->SMTPConnect, $this->SMTPTimeout); - $this->setErrorMessage($this->getSMTPData()); - - if ($this->SMTPCrypto === 'tls') { - $this->sendCommand('hello'); - $this->sendCommand('starttls'); - $crypto = stream_socket_enable_crypto( - $this->SMTPConnect, - true, - STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT - | STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT - | STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT - | STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT - ); - - if ($crypto !== true) { - $this->setErrorMessage(lang('Email.SMTPError', [$this->getSMTPData()])); - - return false; - } - } - - return $this->sendCommand('hello'); - } - - /** - * @param string $cmd - * @param string $data - * - * @return bool - */ - protected function sendCommand($cmd, $data = '') - { - switch ($cmd) { - case 'hello': - if ($this->SMTPAuth || $this->getEncoding() === '8bit') { - $this->sendData('EHLO ' . $this->getHostname()); - } else { - $this->sendData('HELO ' . $this->getHostname()); - } - - $resp = 250; - break; - - case 'starttls': - $this->sendData('STARTTLS'); - $resp = 220; - break; - - case 'from': - $this->sendData('MAIL FROM:<' . $data . '>'); - $resp = 250; - break; - - case 'to': - if ($this->DSN) { - $this->sendData('RCPT TO:<' . $data . '> NOTIFY=SUCCESS,DELAY,FAILURE ORCPT=rfc822;' . $data); - } else { - $this->sendData('RCPT TO:<' . $data . '>'); - } - $resp = 250; - break; - - case 'data': - $this->sendData('DATA'); - $resp = 354; - break; - - case 'reset': - $this->sendData('RSET'); - $resp = 250; - break; - - case 'quit': - $this->sendData('QUIT'); - $resp = 221; - break; - - default: - $resp = null; - } - - $reply = $this->getSMTPData(); - - $this->debugMessage[] = '<pre>' . $cmd . ': ' . $reply . '</pre>'; - $this->debugMessageRaw[] = $cmd . ': ' . $reply; - - if ($resp === null || ((int) static::substr($reply, 0, 3) !== $resp)) { - $this->setErrorMessage(lang('Email.SMTPError', [$reply])); - - return false; - } - - if ($cmd === 'quit') { - fclose($this->SMTPConnect); - } - - return true; - } - - /** - * @return bool - */ - protected function SMTPAuthenticate() - { - if (! $this->SMTPAuth) { - return true; - } - - if ($this->SMTPUser === '' && $this->SMTPPass === '') { - $this->setErrorMessage(lang('Email.noSMTPAuth')); - - return false; - } - - $this->sendData('AUTH LOGIN'); - $reply = $this->getSMTPData(); - - if (strpos($reply, '503') === 0) { // Already authenticated - return true; - } - - if (strpos($reply, '334') !== 0) { - $this->setErrorMessage(lang('Email.failedSMTPLogin', [$reply])); - - return false; - } - - $this->sendData(base64_encode($this->SMTPUser)); - $reply = $this->getSMTPData(); - - if (strpos($reply, '334') !== 0) { - $this->setErrorMessage(lang('Email.SMTPAuthUsername', [$reply])); - - return false; - } - - $this->sendData(base64_encode($this->SMTPPass)); - $reply = $this->getSMTPData(); - - if (strpos($reply, '235') !== 0) { - $this->setErrorMessage(lang('Email.SMTPAuthPassword', [$reply])); - - return false; - } - - if ($this->SMTPKeepAlive) { - $this->SMTPAuth = false; - } - - return true; - } - - /** - * @param string $data - * - * @return bool - */ - protected function sendData($data) - { - $data .= $this->newline; - - $result = null; - - for ($written = $timestamp = 0, $length = static::strlen($data); $written < $length; $written += $result) { - if (($result = fwrite($this->SMTPConnect, static::substr($data, $written))) === false) { - break; - } - - // See https://bugs.php.net/bug.php?id=39598 and http://php.net/manual/en/function.fwrite.php#96951 - if ($result === 0) { - if ($timestamp === 0) { - $timestamp = Time::now()->getTimestamp(); - } elseif ($timestamp < (Time::now()->getTimestamp() - $this->SMTPTimeout)) { - $result = false; - - break; - } - - usleep(250000); - - continue; - } - - $timestamp = 0; - } - - if (! is_int($result)) { - $this->setErrorMessage(lang('Email.SMTPDataFailure', [$data])); - - return false; - } - - return true; - } - - /** - * @return string - */ - protected function getSMTPData() - { - $data = ''; - - while ($str = fgets($this->SMTPConnect, 512)) { - $data .= $str; - - if ($str[3] === ' ') { - break; - } - } - - return $data; - } - - /** - * There are only two legal types of hostname - either a fully - * qualified domain name (eg: "mail.example.com") or an IP literal - * (eg: "[1.2.3.4]"). - * - * @see https://tools.ietf.org/html/rfc5321#section-2.3.5 - * @see http://cbl.abuseat.org/namingproblems.html - * - * @return string - */ - protected function getHostname() - { - if (isset($_SERVER['SERVER_NAME'])) { - return $_SERVER['SERVER_NAME']; - } - - if (isset($_SERVER['SERVER_ADDR'])) { - return '[' . $_SERVER['SERVER_ADDR'] . ']'; - } - - $hostname = gethostname(); - if ($hostname !== false) { - return $hostname; - } - - return '[127.0.0.1]'; - } - - /** - * @param array|string $include List of raw data chunks to include in the output - * Valid options are: 'headers', 'subject', 'body' - * - * @return string - */ - public function printDebugger($include = ['headers', 'subject', 'body']) - { - $msg = implode('', $this->debugMessage); - - // Determine which parts of our raw data needs to be printed - $rawData = ''; - - if (! is_array($include)) { - $include = [$include]; - } - - if (in_array('headers', $include, true)) { - $rawData = htmlspecialchars($this->headerStr) . "\n"; - } - if (in_array('subject', $include, true)) { - $rawData .= htmlspecialchars($this->subject) . "\n"; - } - if (in_array('body', $include, true)) { - $rawData .= htmlspecialchars($this->finalBody); - } - - return $msg . ($rawData === '' ? '' : '<pre>' . $rawData . '</pre>'); - } - - /** - * Returns raw debug messages - */ - private function printDebuggerRaw(): string - { - return implode("\n", $this->debugMessageRaw); - } - - /** - * @param string $msg - * - * @return void - */ - protected function setErrorMessage($msg) - { - $this->debugMessage[] = $msg . '<br>'; - $this->debugMessageRaw[] = $msg; - } - - /** - * Mime Types - * - * @param string $ext - * - * @return string - */ - protected function mimeTypes($ext = '') - { - $mime = Mimes::guessTypeFromExtension(strtolower($ext)); - - return ! empty($mime) ? $mime : 'application/x-unknown-content-type'; - } - - public function __destruct() - { - if (is_resource($this->SMTPConnect)) { - try { - $this->sendCommand('quit'); - } catch (ErrorException $e) { - $protocol = $this->getProtocol(); - $method = 'sendWith' . ucfirst($protocol); - log_message('error', 'Email: ' . $method . ' throwed ' . $e); - } - } - } - - /** - * Byte-safe strlen() - * - * @param string $str - * - * @return int - */ - protected static function strlen($str) - { - return (static::$func_overload) ? mb_strlen($str, '8bit') : strlen($str); - } - - /** - * Byte-safe substr() - * - * @param string $str - * @param int $start - * @param int|null $length - * - * @return string - */ - protected static function substr($str, $start, $length = null) - { - if (static::$func_overload) { - return mb_substr($str, $start, $length, '8bit'); - } - - return isset($length) ? substr($str, $start, $length) : substr($str, $start); - } - - /** - * Determines the values that should be stored in $archive. - * - * @return array The updated archive values - */ - protected function setArchiveValues(): array - { - // Get property values and add anything prepped in tmpArchive - $this->archive = array_merge(get_object_vars($this), $this->tmpArchive); - unset($this->archive['archive']); - - // Clear tmpArchive for next run - $this->tmpArchive = []; - - return $this->archive; - } -} diff --git a/system4.4.6/Encryption/EncrypterInterface.php b/system4.4.6/Encryption/EncrypterInterface.php deleted file mode 100644 index 16123817..00000000 --- a/system4.4.6/Encryption/EncrypterInterface.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Encryption; - -use CodeIgniter\Encryption\Exceptions\EncryptionException; - -/** - * CodeIgniter Encryption Handler - * - * Provides two-way keyed encryption - */ -interface EncrypterInterface -{ - /** - * Encrypt - convert plaintext into ciphertext - * - * @param string $data Input data - * @param array|string|null $params Overridden parameters, specifically the key - * - * @return string - * - * @throws EncryptionException - */ - public function encrypt($data, $params = null); - - /** - * Decrypt - convert ciphertext into plaintext - * - * @param string $data Encrypted data - * @param array|string|null $params Overridden parameters, specifically the key - * - * @return string - * - * @throws EncryptionException - */ - public function decrypt($data, $params = null); -} diff --git a/system4.4.6/Encryption/Encryption.php b/system4.4.6/Encryption/Encryption.php deleted file mode 100644 index 113703d5..00000000 --- a/system4.4.6/Encryption/Encryption.php +++ /dev/null @@ -1,174 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Encryption; - -use CodeIgniter\Encryption\Exceptions\EncryptionException; -use Config\Encryption as EncryptionConfig; - -/** - * CodeIgniter Encryption Manager - * - * Provides two-way keyed encryption via PHP's Sodium and/or OpenSSL extensions. - * This class determines the driver, cipher, and mode to use, and then - * initializes the appropriate encryption handler. - * - * @see \CodeIgniter\Encryption\EncryptionTest - */ -class Encryption -{ - /** - * The encrypter we create - * - * @var EncrypterInterface - */ - protected $encrypter; - - /** - * The driver being used - * - * @var string - */ - protected $driver; - - /** - * The key/seed being used - * - * @var string - */ - protected $key; - - /** - * The derived HMAC key - * - * @var string - */ - protected $hmacKey; - - /** - * HMAC digest to use - * - * @var string - */ - protected $digest = 'SHA512'; - - /** - * Map of drivers to handler classes, in preference order - * - * @var array - */ - protected $drivers = [ - 'OpenSSL', - 'Sodium', - ]; - - /** - * Handlers that are to be installed - * - * @var array<string, bool> - */ - protected $handlers = []; - - /** - * @throws EncryptionException - */ - public function __construct(?EncryptionConfig $config = null) - { - $config ??= new EncryptionConfig(); - - $this->key = $config->key; - $this->driver = $config->driver; - $this->digest = $config->digest ?? 'SHA512'; - - $this->handlers = [ - 'OpenSSL' => extension_loaded('openssl'), - // the SodiumHandler uses some API (like sodium_pad) that is available only on v1.0.14+ - 'Sodium' => extension_loaded('sodium') && version_compare(SODIUM_LIBRARY_VERSION, '1.0.14', '>='), - ]; - - if (! in_array($this->driver, $this->drivers, true) || (array_key_exists($this->driver, $this->handlers) && ! $this->handlers[$this->driver])) { - throw EncryptionException::forNoHandlerAvailable($this->driver); - } - } - - /** - * Initialize or re-initialize an encrypter - * - * @return EncrypterInterface - * - * @throws EncryptionException - */ - public function initialize(?EncryptionConfig $config = null) - { - if ($config instanceof EncryptionConfig) { - $this->key = $config->key; - $this->driver = $config->driver; - $this->digest = $config->digest ?? 'SHA512'; - } - - if (empty($this->driver)) { - throw EncryptionException::forNoDriverRequested(); - } - - if (! in_array($this->driver, $this->drivers, true)) { - throw EncryptionException::forUnKnownHandler($this->driver); - } - - if (empty($this->key)) { - throw EncryptionException::forNeedsStarterKey(); - } - - $this->hmacKey = bin2hex(\hash_hkdf($this->digest, $this->key)); - - $handlerName = 'CodeIgniter\\Encryption\\Handlers\\' . $this->driver . 'Handler'; - $this->encrypter = new $handlerName($config); - - return $this->encrypter; - } - - /** - * Create a random key - * - * @param int $length Output length - * - * @return string - */ - public static function createKey($length = 32) - { - return random_bytes($length); - } - - /** - * __get() magic, providing readonly access to some of our protected properties - * - * @param string $key Property name - * - * @return array|string|null - */ - public function __get($key) - { - if ($this->__isset($key)) { - return $this->{$key}; - } - - return null; - } - - /** - * __isset() magic, providing checking for some of our protected properties - * - * @param string $key Property name - */ - public function __isset($key): bool - { - return in_array($key, ['key', 'digest', 'driver', 'drivers'], true); - } -} diff --git a/system4.4.6/Encryption/Exceptions/EncryptionException.php b/system4.4.6/Encryption/Exceptions/EncryptionException.php deleted file mode 100644 index 41a96b69..00000000 --- a/system4.4.6/Encryption/Exceptions/EncryptionException.php +++ /dev/null @@ -1,84 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Encryption\Exceptions; - -use CodeIgniter\Exceptions\DebugTraceableTrait; -use CodeIgniter\Exceptions\ExceptionInterface; -use RuntimeException; - -/** - * Encryption exception - */ -class EncryptionException extends RuntimeException implements ExceptionInterface -{ - use DebugTraceableTrait; - - /** - * Thrown when no driver is present in the active encryption session. - * - * @return static - */ - public static function forNoDriverRequested() - { - return new static(lang('Encryption.noDriverRequested')); - } - - /** - * Thrown when the handler requested is not available. - * - * @return static - */ - public static function forNoHandlerAvailable(string $handler) - { - return new static(lang('Encryption.noHandlerAvailable', [$handler])); - } - - /** - * Thrown when the handler requested is unknown. - * - * @return static - */ - public static function forUnKnownHandler(?string $driver = null) - { - return new static(lang('Encryption.unKnownHandler', [$driver])); - } - - /** - * Thrown when no starter key is provided for the current encryption session. - * - * @return static - */ - public static function forNeedsStarterKey() - { - return new static(lang('Encryption.starterKeyNeeded')); - } - - /** - * Thrown during data decryption when a problem or error occurred. - * - * @return static - */ - public static function forAuthenticationFailed() - { - return new static(lang('Encryption.authenticationFailed')); - } - - /** - * Thrown during data encryption when a problem or error occurred. - * - * @return static - */ - public static function forEncryptionFailed() - { - return new static(lang('Encryption.encryptionFailed')); - } -} diff --git a/system4.4.6/Encryption/Handlers/BaseHandler.php b/system4.4.6/Encryption/Handlers/BaseHandler.php deleted file mode 100644 index 08c0234a..00000000 --- a/system4.4.6/Encryption/Handlers/BaseHandler.php +++ /dev/null @@ -1,76 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Encryption\Handlers; - -use CodeIgniter\Encryption\EncrypterInterface; -use Config\Encryption; - -/** - * Base class for encryption handling - */ -abstract class BaseHandler implements EncrypterInterface -{ - /** - * Constructor - */ - public function __construct(?Encryption $config = null) - { - $config ??= config(Encryption::class); - - // make the parameters conveniently accessible - foreach (get_object_vars($config) as $key => $value) { - if (property_exists($this, $key)) { - $this->{$key} = $value; - } - } - } - - /** - * Byte-safe substr() - * - * @param string $str - * @param int $start - * @param int $length - * - * @return string - */ - protected static function substr($str, $start, $length = null) - { - return mb_substr($str, $start, $length, '8bit'); - } - - /** - * __get() magic, providing readonly access to some of our properties - * - * @param string $key Property name - * - * @return array|bool|int|string|null - */ - public function __get($key) - { - if ($this->__isset($key)) { - return $this->{$key}; - } - - return null; - } - - /** - * __isset() magic, providing checking for some of our properties - * - * @param string $key Property name - */ - public function __isset($key): bool - { - return property_exists($this, $key); - } -} diff --git a/system4.4.6/Encryption/Handlers/OpenSSLHandler.php b/system4.4.6/Encryption/Handlers/OpenSSLHandler.php deleted file mode 100644 index 0d8f1075..00000000 --- a/system4.4.6/Encryption/Handlers/OpenSSLHandler.php +++ /dev/null @@ -1,156 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Encryption\Handlers; - -use CodeIgniter\Encryption\Exceptions\EncryptionException; - -/** - * Encryption handling for OpenSSL library - * - * @see \CodeIgniter\Encryption\Handlers\OpenSSLHandlerTest - */ -class OpenSSLHandler extends BaseHandler -{ - /** - * HMAC digest to use - * - * @var string - */ - protected $digest = 'SHA512'; - - /** - * List of supported HMAC algorithms - * - * @var array [name => digest size] - */ - protected array $digestSize = [ - 'SHA224' => 28, - 'SHA256' => 32, - 'SHA384' => 48, - 'SHA512' => 64, - ]; - - /** - * Cipher to use - * - * @var string - */ - protected $cipher = 'AES-256-CTR'; - - /** - * Starter key - * - * @var string - */ - protected $key = ''; - - /** - * Whether the cipher-text should be raw. If set to false, then it will be base64 encoded. - */ - protected bool $rawData = true; - - /** - * Encryption key info. - * This setting is only used by OpenSSLHandler. - * - * Set to 'encryption' for CI3 Encryption compatibility. - */ - public string $encryptKeyInfo = ''; - - /** - * Authentication key info. - * This setting is only used by OpenSSLHandler. - * - * Set to 'authentication' for CI3 Encryption compatibility. - */ - public string $authKeyInfo = ''; - - /** - * {@inheritDoc} - */ - public function encrypt($data, $params = null) - { - // Allow key override - if ($params) { - $this->key = is_array($params) && isset($params['key']) ? $params['key'] : $params; - } - - if (empty($this->key)) { - throw EncryptionException::forNeedsStarterKey(); - } - - // derive a secret key - $encryptKey = \hash_hkdf($this->digest, $this->key, 0, $this->encryptKeyInfo); - - // basic encryption - $iv = ($ivSize = \openssl_cipher_iv_length($this->cipher)) ? \openssl_random_pseudo_bytes($ivSize) : null; - - $data = \openssl_encrypt($data, $this->cipher, $encryptKey, OPENSSL_RAW_DATA, $iv); - - if ($data === false) { - throw EncryptionException::forEncryptionFailed(); - } - - $result = $this->rawData ? $iv . $data : base64_encode($iv . $data); - - // derive a secret key - $authKey = \hash_hkdf($this->digest, $this->key, 0, $this->authKeyInfo); - - $hmacKey = \hash_hmac($this->digest, $result, $authKey, $this->rawData); - - return $hmacKey . $result; - } - - /** - * {@inheritDoc} - */ - public function decrypt($data, $params = null) - { - // Allow key override - if ($params) { - $this->key = is_array($params) && isset($params['key']) ? $params['key'] : $params; - } - - if (empty($this->key)) { - throw EncryptionException::forNeedsStarterKey(); - } - - // derive a secret key - $authKey = \hash_hkdf($this->digest, $this->key, 0, $this->authKeyInfo); - - $hmacLength = $this->rawData - ? $this->digestSize[$this->digest] - : $this->digestSize[$this->digest] * 2; - - $hmacKey = self::substr($data, 0, $hmacLength); - $data = self::substr($data, $hmacLength); - $hmacCalc = \hash_hmac($this->digest, $data, $authKey, $this->rawData); - - if (! hash_equals($hmacKey, $hmacCalc)) { - throw EncryptionException::forAuthenticationFailed(); - } - - $data = $this->rawData ? $data : base64_decode($data, true); - - if ($ivSize = \openssl_cipher_iv_length($this->cipher)) { - $iv = self::substr($data, 0, $ivSize); - $data = self::substr($data, $ivSize); - } else { - $iv = null; - } - - // derive a secret key - $encryptKey = \hash_hkdf($this->digest, $this->key, 0, $this->encryptKeyInfo); - - return \openssl_decrypt($data, $this->cipher, $encryptKey, OPENSSL_RAW_DATA, $iv); - } -} diff --git a/system4.4.6/Encryption/Handlers/SodiumHandler.php b/system4.4.6/Encryption/Handlers/SodiumHandler.php deleted file mode 100644 index c483dfe9..00000000 --- a/system4.4.6/Encryption/Handlers/SodiumHandler.php +++ /dev/null @@ -1,140 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Encryption\Handlers; - -use CodeIgniter\Encryption\Exceptions\EncryptionException; - -/** - * SodiumHandler uses libsodium in encryption. - * - * @see https://github.com/jedisct1/libsodium/issues/392 - * @see \CodeIgniter\Encryption\Handlers\SodiumHandlerTest - */ -class SodiumHandler extends BaseHandler -{ - /** - * Starter key - * - * @var string - */ - protected $key = ''; - - /** - * Block size for padding message. - * - * @var int - */ - protected $blockSize = 16; - - /** - * {@inheritDoc} - */ - public function encrypt($data, $params = null) - { - $this->parseParams($params); - - if (empty($this->key)) { - throw EncryptionException::forNeedsStarterKey(); - } - - // create a nonce for this operation - $nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES); // 24 bytes - - // add padding before we encrypt the data - if ($this->blockSize <= 0) { - throw EncryptionException::forEncryptionFailed(); - } - - $data = sodium_pad($data, $this->blockSize); - - // encrypt message and combine with nonce - $ciphertext = $nonce . sodium_crypto_secretbox($data, $nonce, $this->key); - - // cleanup buffers - sodium_memzero($data); - sodium_memzero($this->key); - - return $ciphertext; - } - - /** - * {@inheritDoc} - */ - public function decrypt($data, $params = null) - { - $this->parseParams($params); - - if (empty($this->key)) { - throw EncryptionException::forNeedsStarterKey(); - } - - if (mb_strlen($data, '8bit') < (SODIUM_CRYPTO_SECRETBOX_NONCEBYTES + SODIUM_CRYPTO_SECRETBOX_MACBYTES)) { - // message was truncated - throw EncryptionException::forAuthenticationFailed(); - } - - // Extract info from encrypted data - $nonce = self::substr($data, 0, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES); - $ciphertext = self::substr($data, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES); - - // decrypt data - $data = sodium_crypto_secretbox_open($ciphertext, $nonce, $this->key); - - if ($data === false) { - // message was tampered in transit - throw EncryptionException::forAuthenticationFailed(); // @codeCoverageIgnore - } - - // remove extra padding during encryption - if ($this->blockSize <= 0) { - throw EncryptionException::forAuthenticationFailed(); - } - - $data = sodium_unpad($data, $this->blockSize); - - // cleanup buffers - sodium_memzero($ciphertext); - sodium_memzero($this->key); - - return $data; - } - - /** - * Parse the $params before doing assignment. - * - * @param array|string|null $params - * - * @return void - * - * @throws EncryptionException If key is empty - */ - protected function parseParams($params) - { - if ($params === null) { - return; - } - - if (is_array($params)) { - if (isset($params['key'])) { - $this->key = $params['key']; - } - - if (isset($params['blockSize'])) { - $this->blockSize = $params['blockSize']; - } - - return; - } - - $this->key = (string) $params; - } -} diff --git a/system4.4.6/Entity.php b/system4.4.6/Entity.php deleted file mode 100644 index 94aa7241..00000000 --- a/system4.4.6/Entity.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter; - -use CodeIgniter\Entity\Entity as CoreEntity; - -/** - * Entity encapsulation, for use with CodeIgniter\Model - * - * @deprecated use CodeIgniter\Entity\Entity class instead - */ -class Entity extends CoreEntity -{ -} diff --git a/system4.4.6/Entity/Cast/ArrayCast.php b/system4.4.6/Entity/Cast/ArrayCast.php deleted file mode 100644 index 315f2e58..00000000 --- a/system4.4.6/Entity/Cast/ArrayCast.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Entity\Cast; - -/** - * Class ArrayCast - */ -class ArrayCast extends BaseCast -{ - /** - * {@inheritDoc} - */ - public static function get($value, array $params = []): array - { - if (is_string($value) && (strpos($value, 'a:') === 0 || strpos($value, 's:') === 0)) { - $value = unserialize($value); - } - - return (array) $value; - } - - /** - * {@inheritDoc} - */ - public static function set($value, array $params = []): string - { - return serialize($value); - } -} diff --git a/system4.4.6/Entity/Cast/BaseCast.php b/system4.4.6/Entity/Cast/BaseCast.php deleted file mode 100644 index bfb156da..00000000 --- a/system4.4.6/Entity/Cast/BaseCast.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Entity\Cast; - -/** - * Class BaseCast - */ -abstract class BaseCast implements CastInterface -{ - /** - * Get - * - * @param array|bool|float|int|object|string|null $value Data - * @param array $params Additional param - * - * @return array|bool|float|int|object|string|null - */ - public static function get($value, array $params = []) - { - return $value; - } - - /** - * Set - * - * @param array|bool|float|int|object|string|null $value Data - * @param array $params Additional param - * - * @return array|bool|float|int|object|string|null - */ - public static function set($value, array $params = []) - { - return $value; - } -} diff --git a/system4.4.6/Entity/Cast/BooleanCast.php b/system4.4.6/Entity/Cast/BooleanCast.php deleted file mode 100644 index f46f5f53..00000000 --- a/system4.4.6/Entity/Cast/BooleanCast.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Entity\Cast; - -/** - * Class BooleanCast - */ -class BooleanCast extends BaseCast -{ - /** - * {@inheritDoc} - */ - public static function get($value, array $params = []): bool - { - return (bool) $value; - } -} diff --git a/system4.4.6/Entity/Cast/CSVCast.php b/system4.4.6/Entity/Cast/CSVCast.php deleted file mode 100644 index ba241427..00000000 --- a/system4.4.6/Entity/Cast/CSVCast.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Entity\Cast; - -/** - * Class CSVCast - */ -class CSVCast extends BaseCast -{ - /** - * {@inheritDoc} - */ - public static function get($value, array $params = []): array - { - return explode(',', $value); - } - - /** - * {@inheritDoc} - */ - public static function set($value, array $params = []): string - { - return implode(',', $value); - } -} diff --git a/system4.4.6/Entity/Cast/CastInterface.php b/system4.4.6/Entity/Cast/CastInterface.php deleted file mode 100644 index c1dcf1c4..00000000 --- a/system4.4.6/Entity/Cast/CastInterface.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Entity\Cast; - -/** - * Interface CastInterface - */ -interface CastInterface -{ - /** - * Get - * - * @param array|bool|float|int|object|string|null $value Data - * @param array $params Additional param - * - * @return array|bool|float|int|object|string|null - */ - public static function get($value, array $params = []); - - /** - * Set - * - * @param array|bool|float|int|object|string|null $value Data - * @param array $params Additional param - * - * @return array|bool|float|int|object|string|null - */ - public static function set($value, array $params = []); -} diff --git a/system4.4.6/Entity/Cast/DatetimeCast.php b/system4.4.6/Entity/Cast/DatetimeCast.php deleted file mode 100644 index 423300cd..00000000 --- a/system4.4.6/Entity/Cast/DatetimeCast.php +++ /dev/null @@ -1,50 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Entity\Cast; - -use CodeIgniter\I18n\Time; -use DateTime; -use Exception; - -/** - * Class DatetimeCast - */ -class DatetimeCast extends BaseCast -{ - /** - * {@inheritDoc} - * - * @return Time - * - * @throws Exception - */ - public static function get($value, array $params = []) - { - if ($value instanceof Time) { - return $value; - } - - if ($value instanceof DateTime) { - return Time::createFromInstance($value); - } - - if (is_numeric($value)) { - return Time::createFromTimestamp($value); - } - - if (is_string($value)) { - return Time::parse($value); - } - - return $value; - } -} diff --git a/system4.4.6/Entity/Cast/FloatCast.php b/system4.4.6/Entity/Cast/FloatCast.php deleted file mode 100644 index 78f87570..00000000 --- a/system4.4.6/Entity/Cast/FloatCast.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Entity\Cast; - -/** - * Class FloatCast - */ -class FloatCast extends BaseCast -{ - /** - * {@inheritDoc} - */ - public static function get($value, array $params = []): float - { - return (float) $value; - } -} diff --git a/system4.4.6/Entity/Cast/IntBoolCast.php b/system4.4.6/Entity/Cast/IntBoolCast.php deleted file mode 100644 index ce572d9e..00000000 --- a/system4.4.6/Entity/Cast/IntBoolCast.php +++ /dev/null @@ -1,36 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Entity\Cast; - -/** - * Int Bool Cast - * - * DB column: int (0/1) <--> Class property: bool - */ -final class IntBoolCast extends BaseCast -{ - /** - * @param int $value - */ - public static function get($value, array $params = []): bool - { - return (bool) $value; - } - - /** - * @param bool|int|string $value - */ - public static function set($value, array $params = []): int - { - return (int) $value; - } -} diff --git a/system4.4.6/Entity/Cast/IntegerCast.php b/system4.4.6/Entity/Cast/IntegerCast.php deleted file mode 100644 index b9357d7e..00000000 --- a/system4.4.6/Entity/Cast/IntegerCast.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Entity\Cast; - -/** - * Class IntegerCast - */ -class IntegerCast extends BaseCast -{ - /** - * {@inheritDoc} - */ - public static function get($value, array $params = []): int - { - return (int) $value; - } -} diff --git a/system4.4.6/Entity/Cast/JsonCast.php b/system4.4.6/Entity/Cast/JsonCast.php deleted file mode 100644 index 534631be..00000000 --- a/system4.4.6/Entity/Cast/JsonCast.php +++ /dev/null @@ -1,65 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Entity\Cast; - -use CodeIgniter\Entity\Exceptions\CastException; -use JsonException; -use stdClass; - -/** - * Class JsonCast - */ -class JsonCast extends BaseCast -{ - /** - * {@inheritDoc} - */ - public static function get($value, array $params = []) - { - $associative = in_array('array', $params, true); - - $tmp = $value !== null ? ($associative ? [] : new stdClass()) : null; - - if (function_exists('json_decode') - && ( - (is_string($value) - && strlen($value) > 1 - && in_array($value[0], ['[', '{', '"'], true)) - || is_numeric($value) - ) - ) { - try { - $tmp = json_decode($value, $associative, 512, JSON_THROW_ON_ERROR); - } catch (JsonException $e) { - throw CastException::forInvalidJsonFormat($e->getCode()); - } - } - - return $tmp; - } - - /** - * {@inheritDoc} - */ - public static function set($value, array $params = []): string - { - if (function_exists('json_encode')) { - try { - $value = json_encode($value, JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR); - } catch (JsonException $e) { - throw CastException::forInvalidJsonFormat($e->getCode()); - } - } - - return $value; - } -} diff --git a/system4.4.6/Entity/Cast/ObjectCast.php b/system4.4.6/Entity/Cast/ObjectCast.php deleted file mode 100644 index 0a22ed8a..00000000 --- a/system4.4.6/Entity/Cast/ObjectCast.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Entity\Cast; - -/** - * Class ObjectCast - */ -class ObjectCast extends BaseCast -{ - /** - * {@inheritDoc} - */ - public static function get($value, array $params = []): object - { - return (object) $value; - } -} diff --git a/system4.4.6/Entity/Cast/StringCast.php b/system4.4.6/Entity/Cast/StringCast.php deleted file mode 100644 index 974567cc..00000000 --- a/system4.4.6/Entity/Cast/StringCast.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Entity\Cast; - -/** - * Class StringCast - */ -class StringCast extends BaseCast -{ - /** - * {@inheritDoc} - */ - public static function get($value, array $params = []): string - { - return (string) $value; - } -} diff --git a/system4.4.6/Entity/Cast/TimestampCast.php b/system4.4.6/Entity/Cast/TimestampCast.php deleted file mode 100644 index f9669d59..00000000 --- a/system4.4.6/Entity/Cast/TimestampCast.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Entity\Cast; - -use CodeIgniter\Entity\Exceptions\CastException; - -/** - * Class TimestampCast - */ -class TimestampCast extends BaseCast -{ - /** - * {@inheritDoc} - */ - public static function get($value, array $params = []) - { - $value = strtotime($value); - - if ($value === false) { - throw CastException::forInvalidTimestamp(); - } - - return $value; - } -} diff --git a/system4.4.6/Entity/Cast/URICast.php b/system4.4.6/Entity/Cast/URICast.php deleted file mode 100644 index bb49e745..00000000 --- a/system4.4.6/Entity/Cast/URICast.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Entity\Cast; - -use CodeIgniter\HTTP\URI; - -/** - * Class URICast - */ -class URICast extends BaseCast -{ - /** - * {@inheritDoc} - */ - public static function get($value, array $params = []): URI - { - return $value instanceof URI ? $value : new URI($value); - } -} diff --git a/system4.4.6/Entity/Entity.php b/system4.4.6/Entity/Entity.php deleted file mode 100644 index 0e751b68..00000000 --- a/system4.4.6/Entity/Entity.php +++ /dev/null @@ -1,606 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Entity; - -use CodeIgniter\Entity\Cast\ArrayCast; -use CodeIgniter\Entity\Cast\BooleanCast; -use CodeIgniter\Entity\Cast\CastInterface; -use CodeIgniter\Entity\Cast\CSVCast; -use CodeIgniter\Entity\Cast\DatetimeCast; -use CodeIgniter\Entity\Cast\FloatCast; -use CodeIgniter\Entity\Cast\IntBoolCast; -use CodeIgniter\Entity\Cast\IntegerCast; -use CodeIgniter\Entity\Cast\JsonCast; -use CodeIgniter\Entity\Cast\ObjectCast; -use CodeIgniter\Entity\Cast\StringCast; -use CodeIgniter\Entity\Cast\TimestampCast; -use CodeIgniter\Entity\Cast\URICast; -use CodeIgniter\Entity\Exceptions\CastException; -use CodeIgniter\I18n\Time; -use DateTime; -use Exception; -use JsonSerializable; -use ReturnTypeWillChange; - -/** - * Entity encapsulation, for use with CodeIgniter\Model - * - * @see \CodeIgniter\Entity\EntityTest - */ -class Entity implements JsonSerializable -{ - /** - * Maps names used in sets and gets against unique - * names within the class, allowing independence from - * database column names. - * - * Example: - * $datamap = [ - * 'class_property_name' => 'db_column_name' - * ]; - * - * @var array<string, string> - */ - protected $datamap = []; - - /** - * The date fields. - * - * @var list<string> - */ - protected $dates = [ - 'created_at', - 'updated_at', - 'deleted_at', - ]; - - /** - * Array of field names and the type of value to cast them as when - * they are accessed. - * - * @var array<string, string> - */ - protected $casts = []; - - /** - * Custom convert handlers - * - * @var array<string, string> - */ - protected $castHandlers = []; - - /** - * Default convert handlers - * - * @var array<string, string> - */ - private array $defaultCastHandlers = [ - 'array' => ArrayCast::class, - 'bool' => BooleanCast::class, - 'boolean' => BooleanCast::class, - 'csv' => CSVCast::class, - 'datetime' => DatetimeCast::class, - 'double' => FloatCast::class, - 'float' => FloatCast::class, - 'int' => IntegerCast::class, - 'integer' => IntegerCast::class, - 'int-bool' => IntBoolCast::class, - 'json' => JsonCast::class, - 'object' => ObjectCast::class, - 'string' => StringCast::class, - 'timestamp' => TimestampCast::class, - 'uri' => URICast::class, - ]; - - /** - * Holds the current values of all class vars. - * - * @var array - */ - protected $attributes = []; - - /** - * Holds original copies of all class vars so we can determine - * what's actually been changed and not accidentally write - * nulls where we shouldn't. - * - * @var array - */ - protected $original = []; - - /** - * Holds info whenever properties have to be casted - */ - private bool $_cast = true; - - /** - * Allows filling in Entity parameters during construction. - */ - public function __construct(?array $data = null) - { - $this->syncOriginal(); - - $this->fill($data); - } - - /** - * Takes an array of key/value pairs and sets them as class - * properties, using any `setCamelCasedProperty()` methods - * that may or may not exist. - * - * @param array<string, array|bool|float|int|object|string|null> $data - * - * @return $this - */ - public function fill(?array $data = null) - { - if (! is_array($data)) { - return $this; - } - - foreach ($data as $key => $value) { - $this->__set($key, $value); - } - - return $this; - } - - /** - * General method that will return all public and protected values - * of this entity as an array. All values are accessed through the - * __get() magic method so will have any casts, etc applied to them. - * - * @param bool $onlyChanged If true, only return values that have changed since object creation - * @param bool $cast If true, properties will be cast. - * @param bool $recursive If true, inner entities will be cast as array as well. - */ - public function toArray(bool $onlyChanged = false, bool $cast = true, bool $recursive = false): array - { - $this->_cast = $cast; - - $keys = array_filter(array_keys($this->attributes), static fn ($key) => strpos($key, '_') !== 0); - - if (is_array($this->datamap)) { - $keys = array_unique( - [...array_diff($keys, $this->datamap), ...array_keys($this->datamap)] - ); - } - - $return = []; - - // Loop over the properties, to allow magic methods to do their thing. - foreach ($keys as $key) { - if ($onlyChanged && ! $this->hasChanged($key)) { - continue; - } - - $return[$key] = $this->__get($key); - - if ($recursive) { - if ($return[$key] instanceof self) { - $return[$key] = $return[$key]->toArray($onlyChanged, $cast, $recursive); - } elseif (is_callable([$return[$key], 'toArray'])) { - $return[$key] = $return[$key]->toArray(); - } - } - } - - $this->_cast = true; - - return $return; - } - - /** - * Returns the raw values of the current attributes. - * - * @param bool $onlyChanged If true, only return values that have changed since object creation - * @param bool $recursive If true, inner entities will be cast as array as well. - */ - public function toRawArray(bool $onlyChanged = false, bool $recursive = false): array - { - $return = []; - - if (! $onlyChanged) { - if ($recursive) { - return array_map(static function ($value) use ($onlyChanged, $recursive) { - if ($value instanceof self) { - $value = $value->toRawArray($onlyChanged, $recursive); - } elseif (is_callable([$value, 'toRawArray'])) { - $value = $value->toRawArray(); - } - - return $value; - }, $this->attributes); - } - - return $this->attributes; - } - - foreach ($this->attributes as $key => $value) { - if (! $this->hasChanged($key)) { - continue; - } - - if ($recursive) { - if ($value instanceof self) { - $value = $value->toRawArray($onlyChanged, $recursive); - } elseif (is_callable([$value, 'toRawArray'])) { - $value = $value->toRawArray(); - } - } - - $return[$key] = $value; - } - - return $return; - } - - /** - * Ensures our "original" values match the current values. - * - * @return $this - */ - public function syncOriginal() - { - $this->original = $this->attributes; - - return $this; - } - - /** - * Checks a property to see if it has changed since the entity - * was created. Or, without a parameter, checks if any - * properties have changed. - * - * @param string|null $key class property - */ - public function hasChanged(?string $key = null): bool - { - // If no parameter was given then check all attributes - if ($key === null) { - return $this->original !== $this->attributes; - } - - $dbColumn = $this->mapProperty($key); - - // Key doesn't exist in either - if (! array_key_exists($dbColumn, $this->original) && ! array_key_exists($dbColumn, $this->attributes)) { - return false; - } - - // It's a new element - if (! array_key_exists($dbColumn, $this->original) && array_key_exists($dbColumn, $this->attributes)) { - return true; - } - - return $this->original[$dbColumn] !== $this->attributes[$dbColumn]; - } - - /** - * Set raw data array without any mutations - * - * @return $this - */ - public function injectRawData(array $data) - { - $this->attributes = $data; - - $this->syncOriginal(); - - return $this; - } - - /** - * Set raw data array without any mutations - * - * @return $this - * - * @deprecated Use injectRawData() instead. - */ - public function setAttributes(array $data) - { - return $this->injectRawData($data); - } - - /** - * Checks the datamap to see if this property name is being mapped, - * and returns the db column name, if any, or the original property name. - * - * @return string db column name - */ - protected function mapProperty(string $key) - { - if ($this->datamap === []) { - return $key; - } - - if (! empty($this->datamap[$key])) { - return $this->datamap[$key]; - } - - return $key; - } - - /** - * Converts the given string|timestamp|DateTime|Time instance - * into the "CodeIgniter\I18n\Time" object. - * - * @param DateTime|float|int|string|Time $value - * - * @return Time - * - * @throws Exception - */ - protected function mutateDate($value) - { - return DatetimeCast::get($value); - } - - /** - * Provides the ability to cast an item as a specific data type. - * Add ? at the beginning of $type (i.e. ?string) to get NULL - * instead of casting $value if $value === null - * - * @param bool|float|int|string|null $value Attribute value - * @param string $attribute Attribute name - * @param string $method Allowed to "get" and "set" - * - * @return array|bool|float|int|object|string|null - * - * @throws CastException - */ - protected function castAs($value, string $attribute, string $method = 'get') - { - if (empty($this->casts[$attribute])) { - return $value; - } - - $type = $this->casts[$attribute]; - - $isNullable = false; - - if (strpos($type, '?') === 0) { - $isNullable = true; - - if ($value === null) { - return null; - } - - $type = substr($type, 1); - } - - // In order not to create a separate handler for the - // json-array type, we transform the required one. - $type = $type === 'json-array' ? 'json[array]' : $type; - - if (! in_array($method, ['get', 'set'], true)) { - throw CastException::forInvalidMethod($method); - } - - $params = []; - - // Attempt to retrieve additional parameters if specified - // type[param, param2,param3] - if (preg_match('/^(.+)\[(.+)\]$/', $type, $matches)) { - $type = $matches[1]; - $params = array_map('trim', explode(',', $matches[2])); - } - - if ($isNullable) { - $params[] = 'nullable'; - } - - $type = trim($type, '[]'); - - $handlers = array_merge($this->defaultCastHandlers, $this->castHandlers); - - if (empty($handlers[$type])) { - return $value; - } - - if (! is_subclass_of($handlers[$type], CastInterface::class)) { - throw CastException::forInvalidInterface($handlers[$type]); - } - - return $handlers[$type]::$method($value, $params); - } - - /** - * Support for json_encode() - * - * @return array - */ - #[ReturnTypeWillChange] - public function jsonSerialize() - { - return $this->toArray(); - } - - /** - * Change the value of the private $_cast property - * - * @return bool|Entity - */ - public function cast(?bool $cast = null) - { - if ($cast === null) { - return $this->_cast; - } - - $this->_cast = $cast; - - return $this; - } - - /** - * Magic method to all protected/private class properties to be - * easily set, either through a direct access or a - * `setCamelCasedProperty()` method. - * - * Examples: - * $this->my_property = $p; - * $this->setMyProperty() = $p; - * - * @param array|bool|float|int|object|string|null $value - * - * @return void - * - * @throws Exception - */ - public function __set(string $key, $value = null) - { - $dbColumn = $this->mapProperty($key); - - // Check if the field should be mutated into a date - if (in_array($dbColumn, $this->dates, true)) { - $value = $this->mutateDate($value); - } - - $value = $this->castAs($value, $dbColumn, 'set'); - - // if a setter method exists for this key, use that method to - // insert this value. should be outside $isNullable check, - // so maybe wants to do sth with null value automatically - $method = 'set' . str_replace(' ', '', ucwords(str_replace(['-', '_'], ' ', $dbColumn))); - - // If a "`_set` + $key" method exists, it is a setter. - if (method_exists($this, '_' . $method)) { - $this->{'_' . $method}($value); - - return; - } - - // If a "`set` + $key" method exists, it is also a setter. - if (method_exists($this, $method) && $method !== 'setAttributes') { - $this->{$method}($value); - - return; - } - - // Otherwise, just the value. This allows for creation of new - // class properties that are undefined, though they cannot be - // saved. Useful for grabbing values through joins, assigning - // relationships, etc. - $this->attributes[$dbColumn] = $value; - } - - /** - * Magic method to allow retrieval of protected and private class properties - * either by their name, or through a `getCamelCasedProperty()` method. - * - * Examples: - * $p = $this->my_property - * $p = $this->getMyProperty() - * - * @return array|bool|float|int|object|string|null - * - * @throws Exception - * - * @params string $key class property - */ - public function __get(string $key) - { - $dbColumn = $this->mapProperty($key); - - $result = null; - - // Convert to CamelCase for the method - $method = 'get' . str_replace(' ', '', ucwords(str_replace(['-', '_'], ' ', $dbColumn))); - - // if a getter method exists for this key, - // use that method to insert this value. - if (method_exists($this, '_' . $method)) { - // If a "`_get` + $key" method exists, it is a getter. - $result = $this->{'_' . $method}(); - } elseif (method_exists($this, $method)) { - // If a "`get` + $key" method exists, it is also a getter. - $result = $this->{$method}(); - } - - // Otherwise return the protected property - // if it exists. - elseif (array_key_exists($dbColumn, $this->attributes)) { - $result = $this->attributes[$dbColumn]; - } - - // Do we need to mutate this into a date? - if (in_array($dbColumn, $this->dates, true)) { - $result = $this->mutateDate($result); - } - // Or cast it as something? - elseif ($this->_cast) { - $result = $this->castAs($result, $dbColumn); - } - - return $result; - } - - /** - * Returns true if a property exists names $key, or a getter method - * exists named like for __get(). - */ - public function __isset(string $key): bool - { - if ($this->isMappedDbColumn($key)) { - return false; - } - - $dbColumn = $this->mapProperty($key); - - $method = 'get' . str_replace(' ', '', ucwords(str_replace(['-', '_'], ' ', $dbColumn))); - - if (method_exists($this, $method)) { - return true; - } - - return isset($this->attributes[$dbColumn]); - } - - /** - * Unsets an attribute property. - */ - public function __unset(string $key): void - { - if ($this->isMappedDbColumn($key)) { - return; - } - - $dbColumn = $this->mapProperty($key); - - unset($this->attributes[$dbColumn]); - } - - /** - * Whether this key is mapped db column name? - */ - protected function isMappedDbColumn(string $key): bool - { - $dbColumn = $this->mapProperty($key); - - // The $key is a property name which has mapped db column name - if ($key !== $dbColumn) { - return false; - } - - return $this->hasMappedProperty($key); - } - - /** - * Whether this key has mapped property? - */ - protected function hasMappedProperty(string $key): bool - { - $property = array_search($key, $this->datamap, true); - - return $property !== false; - } -} diff --git a/system4.4.6/Entity/Exceptions/CastException.php b/system4.4.6/Entity/Exceptions/CastException.php deleted file mode 100644 index e259447b..00000000 --- a/system4.4.6/Entity/Exceptions/CastException.php +++ /dev/null @@ -1,84 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Entity\Exceptions; - -use CodeIgniter\Exceptions\FrameworkException; -use CodeIgniter\Exceptions\HasExitCodeInterface; - -/** - * CastException is thrown for invalid cast initialization and management. - */ -class CastException extends FrameworkException implements HasExitCodeInterface -{ - public function getExitCode(): int - { - return EXIT_CONFIG; - } - - /** - * Thrown when the cast class does not extends BaseCast. - * - * @return static - */ - public static function forInvalidInterface(string $class) - { - return new static(lang('Cast.baseCastMissing', [$class])); - } - - /** - * Thrown when the Json format is invalid. - * - * @return static - */ - public static function forInvalidJsonFormat(int $error) - { - switch ($error) { - case JSON_ERROR_DEPTH: - return new static(lang('Cast.jsonErrorDepth')); - - case JSON_ERROR_STATE_MISMATCH: - return new static(lang('Cast.jsonErrorStateMismatch')); - - case JSON_ERROR_CTRL_CHAR: - return new static(lang('Cast.jsonErrorCtrlChar')); - - case JSON_ERROR_SYNTAX: - return new static(lang('Cast.jsonErrorSyntax')); - - case JSON_ERROR_UTF8: - return new static(lang('Cast.jsonErrorUtf8')); - - default: - return new static(lang('Cast.jsonErrorUnknown')); - } - } - - /** - * Thrown when the cast method is not `get` or `set`. - * - * @return static - */ - public static function forInvalidMethod(string $method) - { - return new static(lang('Cast.invalidCastMethod', [$method])); - } - - /** - * Thrown when the casting timestamp is not correct timestamp. - * - * @return static - */ - public static function forInvalidTimestamp() - { - return new static(lang('Cast.invalidTimestamp')); - } -} diff --git a/system4.4.6/Events/Events.php b/system4.4.6/Events/Events.php deleted file mode 100644 index b240dc29..00000000 --- a/system4.4.6/Events/Events.php +++ /dev/null @@ -1,284 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Events; - -use Config\Modules; -use Config\Services; - -/** - * Events - * - * @see \CodeIgniter\Events\EventsTest - */ -class Events -{ - public const PRIORITY_LOW = 200; - public const PRIORITY_NORMAL = 100; - public const PRIORITY_HIGH = 10; - - /** - * The list of listeners. - * - * @var array - */ - protected static $listeners = []; - - /** - * Flag to let us know if we've read from the Config file(s) - * and have all of the defined events. - * - * @var bool - */ - protected static $initialized = false; - - /** - * If true, events will not actually be fired. - * Useful during testing. - * - * @var bool - */ - protected static $simulate = false; - - /** - * Stores information about the events - * for display in the debug toolbar. - * - * @var array<array<string, float|string>> - */ - protected static $performanceLog = []; - - /** - * A list of found files. - * - * @var string[] - */ - protected static $files = []; - - /** - * Ensures that we have a events file ready. - * - * @return void - */ - public static function initialize() - { - // Don't overwrite anything.... - if (static::$initialized) { - return; - } - - $config = config(Modules::class); - $events = APPPATH . 'Config' . DIRECTORY_SEPARATOR . 'Events.php'; - $files = []; - - if ($config->shouldDiscover('events')) { - $files = Services::locator()->search('Config/Events.php'); - } - - $files = array_filter(array_map(static function (string $file) { - if (is_file($file)) { - return realpath($file) ?: $file; - } - - return false; // @codeCoverageIgnore - }, $files)); - - static::$files = array_unique(array_merge($files, [$events])); - - foreach (static::$files as $file) { - include $file; - } - - static::$initialized = true; - } - - /** - * Registers an action to happen on an event. The action can be any sort - * of callable: - * - * Events::on('create', 'myFunction'); // procedural function - * Events::on('create', ['myClass', 'myMethod']); // Class::method - * Events::on('create', [$myInstance, 'myMethod']); // Method on an existing instance - * Events::on('create', function() {}); // Closure - * - * @param string $eventName - * @param callable $callback - * @param int $priority - * - * @return void - */ - public static function on($eventName, $callback, $priority = self::PRIORITY_NORMAL) - { - if (! isset(static::$listeners[$eventName])) { - static::$listeners[$eventName] = [ - true, // If there's only 1 item, it's sorted. - [$priority], - [$callback], - ]; - } else { - static::$listeners[$eventName][0] = false; // Not sorted - static::$listeners[$eventName][1][] = $priority; - static::$listeners[$eventName][2][] = $callback; - } - } - - /** - * Runs through all subscribed methods running them one at a time, - * until either: - * a) All subscribers have finished or - * b) a method returns false, at which point execution of subscribers stops. - * - * @param string $eventName - * @param mixed $arguments - */ - public static function trigger($eventName, ...$arguments): bool - { - // Read in our Config/Events file so that we have them all! - if (! static::$initialized) { - static::initialize(); - } - - $listeners = static::listeners($eventName); - - foreach ($listeners as $listener) { - $start = microtime(true); - - $result = static::$simulate === false ? $listener(...$arguments) : true; - - if (CI_DEBUG) { - static::$performanceLog[] = [ - 'start' => $start, - 'end' => microtime(true), - 'event' => strtolower($eventName), - ]; - } - - if ($result === false) { - return false; - } - } - - return true; - } - - /** - * Returns an array of listeners for a single event. They are - * sorted by priority. - * - * @param string $eventName - */ - public static function listeners($eventName): array - { - if (! isset(static::$listeners[$eventName])) { - return []; - } - - // The list is not sorted - if (! static::$listeners[$eventName][0]) { - // Sort it! - array_multisort(static::$listeners[$eventName][1], SORT_NUMERIC, static::$listeners[$eventName][2]); - - // Mark it as sorted already! - static::$listeners[$eventName][0] = true; - } - - return static::$listeners[$eventName][2]; - } - - /** - * Removes a single listener from an event. - * - * If the listener couldn't be found, returns FALSE, else TRUE if - * it was removed. - * - * @param string $eventName - */ - public static function removeListener($eventName, callable $listener): bool - { - if (! isset(static::$listeners[$eventName])) { - return false; - } - - foreach (static::$listeners[$eventName][2] as $index => $check) { - if ($check === $listener) { - unset( - static::$listeners[$eventName][1][$index], - static::$listeners[$eventName][2][$index] - ); - - return true; - } - } - - return false; - } - - /** - * Removes all listeners. - * - * If the event_name is specified, only listeners for that event will be - * removed, otherwise all listeners for all events are removed. - * - * @param string|null $eventName - * - * @return void - */ - public static function removeAllListeners($eventName = null) - { - if ($eventName !== null) { - unset(static::$listeners[$eventName]); - } else { - static::$listeners = []; - } - } - - /** - * Sets the path to the file that routes are read from. - * - * @return void - */ - public static function setFiles(array $files) - { - static::$files = $files; - } - - /** - * Returns the files that were found/loaded during this request. - * - * @return string[] - */ - public static function getFiles() - { - return static::$files; - } - - /** - * Turns simulation on or off. When on, events will not be triggered, - * simply logged. Useful during testing when you don't actually want - * the tests to run. - * - * @return void - */ - public static function simulate(bool $choice = true) - { - static::$simulate = $choice; - } - - /** - * Getter for the performance log records. - * - * @return array<array<string, float|string>> - */ - public static function getPerformanceLogs() - { - return static::$performanceLog; - } -} diff --git a/system4.4.6/Exceptions/AlertError.php b/system4.4.6/Exceptions/AlertError.php deleted file mode 100644 index 274bb73c..00000000 --- a/system4.4.6/Exceptions/AlertError.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Exceptions; - -use Error; - -/** - * Error: Action must be taken immediately (system/db down, etc) - */ -class AlertError extends Error -{ -} diff --git a/system4.4.6/Exceptions/CastException.php b/system4.4.6/Exceptions/CastException.php deleted file mode 100644 index 8dfb2954..00000000 --- a/system4.4.6/Exceptions/CastException.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Exceptions; - -/** - * Cast Exceptions. - * - * @deprecated use CodeIgniter\Entity\Exceptions\CastException instead. - * - * @codeCoverageIgnore - */ -class CastException extends CriticalError implements HasExitCodeInterface -{ - use DebugTraceableTrait; - - public function getExitCode(): int - { - return EXIT_CONFIG; - } - - /** - * @return static - */ - public static function forInvalidJsonFormatException(int $error) - { - switch ($error) { - case JSON_ERROR_DEPTH: - return new static(lang('Cast.jsonErrorDepth')); - - case JSON_ERROR_STATE_MISMATCH: - return new static(lang('Cast.jsonErrorStateMismatch')); - - case JSON_ERROR_CTRL_CHAR: - return new static(lang('Cast.jsonErrorCtrlChar')); - - case JSON_ERROR_SYNTAX: - return new static(lang('Cast.jsonErrorSyntax')); - - case JSON_ERROR_UTF8: - return new static(lang('Cast.jsonErrorUtf8')); - - default: - return new static(lang('Cast.jsonErrorUnknown')); - } - } -} diff --git a/system4.4.6/Exceptions/ConfigException.php b/system4.4.6/Exceptions/ConfigException.php deleted file mode 100644 index 6eea2638..00000000 --- a/system4.4.6/Exceptions/ConfigException.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Exceptions; - -/** - * Exception for automatic logging. - */ -class ConfigException extends CriticalError implements HasExitCodeInterface -{ - use DebugTraceableTrait; - - public function getExitCode(): int - { - return EXIT_CONFIG; - } - - /** - * @return static - */ - public static function forDisabledMigrations() - { - return new static(lang('Migrations.disabled')); - } -} diff --git a/system4.4.6/Exceptions/CriticalError.php b/system4.4.6/Exceptions/CriticalError.php deleted file mode 100644 index b5129bde..00000000 --- a/system4.4.6/Exceptions/CriticalError.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Exceptions; - -use Error; - -/** - * Error: Critical conditions, like component unavailable, etc. - */ -class CriticalError extends Error -{ -} diff --git a/system4.4.6/Exceptions/DebugTraceableTrait.php b/system4.4.6/Exceptions/DebugTraceableTrait.php deleted file mode 100644 index b5fb691d..00000000 --- a/system4.4.6/Exceptions/DebugTraceableTrait.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Exceptions; - -use Throwable; - -/** - * This trait provides framework exceptions the ability to pinpoint - * accurately where the exception was raised rather than instantiated. - * - * This is used primarily for factory-instantiated exceptions. - */ -trait DebugTraceableTrait -{ - /** - * Tweaks the exception's constructor to assign the file/line to where - * it is actually raised rather than were it is instantiated. - */ - final public function __construct(string $message = '', int $code = 0, ?Throwable $previous = null) - { - parent::__construct($message, $code, $previous); - - $trace = $this->getTrace()[0]; - - if (isset($trace['class']) && $trace['class'] === static::class) { - [ - 'line' => $this->line, - 'file' => $this->file, - ] = $trace; - } - } -} diff --git a/system4.4.6/Exceptions/DownloadException.php b/system4.4.6/Exceptions/DownloadException.php deleted file mode 100644 index 5626cfef..00000000 --- a/system4.4.6/Exceptions/DownloadException.php +++ /dev/null @@ -1,62 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Exceptions; - -use RuntimeException; - -/** - * Class DownloadException - */ -class DownloadException extends RuntimeException implements ExceptionInterface -{ - use DebugTraceableTrait; - - /** - * @return static - */ - public static function forCannotSetFilePath(string $path) - { - return new static(lang('HTTP.cannotSetFilepath', [$path])); - } - - /** - * @return static - */ - public static function forCannotSetBinary() - { - return new static(lang('HTTP.cannotSetBinary')); - } - - /** - * @return static - */ - public static function forNotFoundDownloadSource() - { - return new static(lang('HTTP.notFoundDownloadSource')); - } - - /** - * @return static - */ - public static function forCannotSetCache() - { - return new static(lang('HTTP.cannotSetCache')); - } - - /** - * @return static - */ - public static function forCannotSetStatusCode(int $code, string $reason) - { - return new static(lang('HTTP.cannotSetStatusCode', [$code, $reason])); - } -} diff --git a/system4.4.6/Exceptions/EmergencyError.php b/system4.4.6/Exceptions/EmergencyError.php deleted file mode 100644 index db3e25e6..00000000 --- a/system4.4.6/Exceptions/EmergencyError.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Exceptions; - -use Error; - -/** - * Error: system is unusable - */ -class EmergencyError extends Error -{ -} diff --git a/system4.4.6/Exceptions/ExceptionInterface.php b/system4.4.6/Exceptions/ExceptionInterface.php deleted file mode 100644 index be8ac692..00000000 --- a/system4.4.6/Exceptions/ExceptionInterface.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Exceptions; - -/** - * Provides a domain-level interface for broad capture - * of all framework-related exceptions. - * - * catch (\CodeIgniter\Exceptions\ExceptionInterface) { ... } - */ -interface ExceptionInterface -{ -} diff --git a/system4.4.6/Exceptions/FrameworkException.php b/system4.4.6/Exceptions/FrameworkException.php deleted file mode 100644 index 4cafd711..00000000 --- a/system4.4.6/Exceptions/FrameworkException.php +++ /dev/null @@ -1,92 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Exceptions; - -use RuntimeException; - -/** - * Class FrameworkException - * - * A collection of exceptions thrown by the framework - * that can only be determined at run time. - */ -class FrameworkException extends RuntimeException implements ExceptionInterface -{ - use DebugTraceableTrait; - - /** - * @return static - */ - public static function forEnabledZlibOutputCompression() - { - return new static(lang('Core.enabledZlibOutputCompression')); - } - - /** - * @return static - */ - public static function forInvalidFile(string $path) - { - return new static(lang('Core.invalidFile', [$path])); - } - - /** - * @return static - */ - public static function forInvalidDirectory(string $path) - { - return new static(lang('Core.invalidDirectory', [$path])); - } - - /** - * @return static - */ - public static function forCopyError(string $path) - { - return new static(lang('Core.copyError', [$path])); - } - - /** - * @return static - */ - public static function forMissingExtension(string $extension) - { - if (strpos($extension, 'intl') !== false) { - // @codeCoverageIgnoreStart - $message = sprintf( - 'The framework needs the following extension(s) installed and loaded: %s.', - $extension - ); - // @codeCoverageIgnoreEnd - } else { - $message = lang('Core.missingExtension', [$extension]); - } - - return new static($message); - } - - /** - * @return static - */ - public static function forNoHandlers(string $class) - { - return new static(lang('Core.noHandlers', [$class])); - } - - /** - * @return static - */ - public static function forFabricatorCreateFailed(string $table, string $reason) - { - return new static(lang('Fabricator.createFailed', [$table, $reason])); - } -} diff --git a/system4.4.6/Exceptions/HTTPExceptionInterface.php b/system4.4.6/Exceptions/HTTPExceptionInterface.php deleted file mode 100644 index 901f0b6c..00000000 --- a/system4.4.6/Exceptions/HTTPExceptionInterface.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Exceptions; - -/** - * Interface for Exceptions that has exception code as HTTP status code. - */ -interface HTTPExceptionInterface -{ -} diff --git a/system4.4.6/Exceptions/HasExitCodeInterface.php b/system4.4.6/Exceptions/HasExitCodeInterface.php deleted file mode 100644 index 3380d00b..00000000 --- a/system4.4.6/Exceptions/HasExitCodeInterface.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Exceptions; - -/** - * Interface for Exceptions that has exception code as exit code. - */ -interface HasExitCodeInterface -{ - /** - * Returns exit status code. - */ - public function getExitCode(): int; -} diff --git a/system4.4.6/Exceptions/ModelException.php b/system4.4.6/Exceptions/ModelException.php deleted file mode 100644 index 39590a60..00000000 --- a/system4.4.6/Exceptions/ModelException.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Exceptions; - -/** - * Model Exceptions. - */ -class ModelException extends FrameworkException -{ - /** - * @return static - */ - public static function forNoPrimaryKey(string $modelName) - { - return new static(lang('Database.noPrimaryKey', [$modelName])); - } - - /** - * @return static - */ - public static function forNoDateFormat(string $modelName) - { - return new static(lang('Database.noDateFormat', [$modelName])); - } - - /** - * @return static - */ - public static function forMethodNotAvailable(string $modelName, string $methodName) - { - return new static(lang('Database.methodNotAvailable', [$modelName, $methodName])); - } -} diff --git a/system4.4.6/Exceptions/PageNotFoundException.php b/system4.4.6/Exceptions/PageNotFoundException.php deleted file mode 100644 index 69e93f9b..00000000 --- a/system4.4.6/Exceptions/PageNotFoundException.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Exceptions; - -use Config\Services; -use OutOfBoundsException; - -class PageNotFoundException extends OutOfBoundsException implements ExceptionInterface, HTTPExceptionInterface -{ - use DebugTraceableTrait; - - /** - * HTTP status code - * - * @var int - */ - protected $code = 404; - - /** - * @return static - */ - public static function forPageNotFound(?string $message = null) - { - return new static($message ?? self::lang('HTTP.pageNotFound')); - } - - /** - * @return static - */ - public static function forEmptyController() - { - return new static(self::lang('HTTP.emptyController')); - } - - /** - * @return static - */ - public static function forControllerNotFound(string $controller, string $method) - { - return new static(self::lang('HTTP.controllerNotFound', [$controller, $method])); - } - - /** - * @return static - */ - public static function forMethodNotFound(string $method) - { - return new static(self::lang('HTTP.methodNotFound', [$method])); - } - - /** - * @return static - */ - public static function forLocaleNotSupported(string $locale) - { - return new static(self::lang('HTTP.localeNotSupported', [$locale])); - } - - /** - * Get translated system message - * - * Use a non-shared Language instance in the Services. - * If a shared instance is created, the Language will - * have the current locale, so even if users call - * `$this->request->setLocale()` in the controller afterwards, - * the Language locale will not be changed. - */ - private static function lang(string $line, array $args = []): string - { - $lang = Services::language(null, false); - - return $lang->getLine($line, $args); - } -} diff --git a/system4.4.6/Exceptions/TestException.php b/system4.4.6/Exceptions/TestException.php deleted file mode 100644 index dadbbc00..00000000 --- a/system4.4.6/Exceptions/TestException.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Exceptions; - -/** - * Exception for automatic logging. - */ -class TestException extends CriticalError -{ - use DebugTraceableTrait; - - /** - * @return static - */ - public static function forInvalidMockClass(string $name) - { - return new static(lang('Test.invalidMockClass', [$name])); - } -} diff --git a/system4.4.6/Files/Exceptions/FileException.php b/system4.4.6/Files/Exceptions/FileException.php deleted file mode 100644 index b877bad2..00000000 --- a/system4.4.6/Files/Exceptions/FileException.php +++ /dev/null @@ -1,53 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Files\Exceptions; - -use CodeIgniter\Exceptions\DebugTraceableTrait; -use CodeIgniter\Exceptions\ExceptionInterface; -use RuntimeException; - -class FileException extends RuntimeException implements ExceptionInterface -{ - use DebugTraceableTrait; - - /** - * @return static - */ - public static function forUnableToMove(?string $from = null, ?string $to = null, ?string $error = null) - { - return new static(lang('Files.cannotMove', [$from, $to, $error])); - } - - /** - * Throws when an item is expected to be a directory but is not or is missing. - * - * @param string $caller The method causing the exception - * - * @return static - */ - public static function forExpectedDirectory(string $caller) - { - return new static(lang('Files.expectedDirectory', [$caller])); - } - - /** - * Throws when an item is expected to be a file but is not or is missing. - * - * @param string $caller The method causing the exception - * - * @return static - */ - public static function forExpectedFile(string $caller) - { - return new static(lang('Files.expectedFile', [$caller])); - } -} diff --git a/system4.4.6/Files/Exceptions/FileNotFoundException.php b/system4.4.6/Files/Exceptions/FileNotFoundException.php deleted file mode 100644 index 1c0f4cfd..00000000 --- a/system4.4.6/Files/Exceptions/FileNotFoundException.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Files\Exceptions; - -use CodeIgniter\Exceptions\DebugTraceableTrait; -use CodeIgniter\Exceptions\ExceptionInterface; -use RuntimeException; - -class FileNotFoundException extends RuntimeException implements ExceptionInterface -{ - use DebugTraceableTrait; - - /** - * @return static - */ - public static function forFileNotFound(string $path) - { - return new static(lang('Files.fileNotFound', [$path])); - } -} diff --git a/system4.4.6/Files/File.php b/system4.4.6/Files/File.php deleted file mode 100644 index 01131129..00000000 --- a/system4.4.6/Files/File.php +++ /dev/null @@ -1,194 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Files; - -use CodeIgniter\Files\Exceptions\FileException; -use CodeIgniter\Files\Exceptions\FileNotFoundException; -use CodeIgniter\I18n\Time; -use Config\Mimes; -use ReturnTypeWillChange; -use SplFileInfo; - -/** - * Wrapper for PHP's built-in SplFileInfo, with goodies. - * - * @see \CodeIgniter\Files\FileTest - */ -class File extends SplFileInfo -{ - /** - * The files size in bytes - * - * @var int - */ - protected $size; - - /** - * @var string|null - */ - protected $originalMimeType; - - /** - * Run our SplFileInfo constructor with an optional verification - * that the path is really a file. - * - * @throws FileNotFoundException - */ - public function __construct(string $path, bool $checkFile = false) - { - if ($checkFile && ! is_file($path)) { - throw FileNotFoundException::forFileNotFound($path); - } - - parent::__construct($path); - } - - /** - * Retrieve the file size. - * - * Implementations SHOULD return the value stored in the "size" key of - * the file in the $_FILES array if available, as PHP calculates this based - * on the actual size transmitted. - * - * @return false|int The file size in bytes, or false on failure - */ - #[ReturnTypeWillChange] - public function getSize() - { - return $this->size ?? ($this->size = parent::getSize()); - } - - /** - * Retrieve the file size by unit. - * - * @return false|int|string - */ - public function getSizeByUnit(string $unit = 'b') - { - switch (strtolower($unit)) { - case 'kb': - return number_format($this->getSize() / 1024, 3); - - case 'mb': - return number_format(($this->getSize() / 1024) / 1024, 3); - - default: - return $this->getSize(); - } - } - - /** - * Attempts to determine the file extension based on the trusted - * getType() method. If the mime type is unknown, will return null. - */ - public function guessExtension(): ?string - { - // naively get the path extension using pathinfo - $pathinfo = pathinfo($this->getRealPath() ?: $this->__toString()) + ['extension' => '']; - - $proposedExtension = $pathinfo['extension']; - - return Mimes::guessExtensionFromType($this->getMimeType(), $proposedExtension); - } - - /** - * Retrieve the media type of the file. SHOULD not use information from - * the $_FILES array, but should use other methods to more accurately - * determine the type of file, like finfo, or mime_content_type(). - * - * @return string The media type we determined it to be. - */ - public function getMimeType(): string - { - if (! function_exists('finfo_open')) { - return $this->originalMimeType ?? 'application/octet-stream'; // @codeCoverageIgnore - } - - $finfo = finfo_open(FILEINFO_MIME_TYPE); - $mimeType = finfo_file($finfo, $this->getRealPath() ?: $this->__toString()); - finfo_close($finfo); - - return $mimeType; - } - - /** - * Generates a random names based on a simple hash and the time, with - * the correct file extension attached. - */ - public function getRandomName(): string - { - $extension = $this->getExtension(); - $extension = empty($extension) ? '' : '.' . $extension; - - return Time::now()->getTimestamp() . '_' . bin2hex(random_bytes(10)) . $extension; - } - - /** - * Moves a file to a new location. - * - * @return File - */ - public function move(string $targetPath, ?string $name = null, bool $overwrite = false) - { - $targetPath = rtrim($targetPath, '/') . '/'; - $name ??= $this->getBasename(); - $destination = $overwrite ? $targetPath . $name : $this->getDestination($targetPath . $name); - - $oldName = $this->getRealPath() ?: $this->__toString(); - - if (! @rename($oldName, $destination)) { - $error = error_get_last(); - - throw FileException::forUnableToMove($this->getBasename(), $targetPath, strip_tags($error['message'])); - } - - @chmod($destination, 0777 & ~umask()); - - return new self($destination); - } - - /** - * Returns the destination path for the move operation where overwriting is not expected. - * - * First, it checks whether the delimiter is present in the filename, if it is, then it checks whether the - * last element is an integer as there may be cases that the delimiter may be present in the filename. - * For the all other cases, it appends an integer starting from zero before the file's extension. - */ - public function getDestination(string $destination, string $delimiter = '_', int $i = 0): string - { - if ($delimiter === '') { - $delimiter = '_'; - } - - while (is_file($destination)) { - $info = pathinfo($destination); - $extension = isset($info['extension']) ? '.' . $info['extension'] : ''; - - if (strpos($info['filename'], $delimiter) !== false) { - $parts = explode($delimiter, $info['filename']); - - if (is_numeric(end($parts))) { - $i = end($parts); - array_pop($parts); - $parts[] = ++$i; - $destination = $info['dirname'] . DIRECTORY_SEPARATOR . implode($delimiter, $parts) . $extension; - } else { - $destination = $info['dirname'] . DIRECTORY_SEPARATOR . $info['filename'] . $delimiter . ++$i . $extension; - } - } else { - $destination = $info['dirname'] . DIRECTORY_SEPARATOR . $info['filename'] . $delimiter . ++$i . $extension; - } - } - - return $destination; - } -} diff --git a/system4.4.6/Files/FileCollection.php b/system4.4.6/Files/FileCollection.php deleted file mode 100644 index 87f987eb..00000000 --- a/system4.4.6/Files/FileCollection.php +++ /dev/null @@ -1,368 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Files; - -use CodeIgniter\Files\Exceptions\FileException; -use CodeIgniter\Files\Exceptions\FileNotFoundException; -use Countable; -use Generator; -use InvalidArgumentException; -use IteratorAggregate; - -/** - * File Collection Class - * - * Representation for a group of files, with utilities for locating, - * filtering, and ordering them. - * - * @template-implements IteratorAggregate<int, File> - * @see \CodeIgniter\Files\FileCollectionTest - */ -class FileCollection implements Countable, IteratorAggregate -{ - /** - * The current list of file paths. - * - * @var string[] - */ - protected $files = []; - - // -------------------------------------------------------------------- - // Support Methods - // -------------------------------------------------------------------- - - /** - * Resolves a full path and verifies it is an actual directory. - * - * @throws FileException - */ - final protected static function resolveDirectory(string $directory): string - { - if (! is_dir($directory = set_realpath($directory))) { - $caller = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2)[1]; - - throw FileException::forExpectedDirectory($caller['function']); - } - - return $directory; - } - - /** - * Resolves a full path and verifies it is an actual file. - * - * @throws FileException - */ - final protected static function resolveFile(string $file): string - { - if (! is_file($file = set_realpath($file))) { - $caller = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2)[1]; - - throw FileException::forExpectedFile($caller['function']); - } - - return $file; - } - - /** - * Removes files that are not part of the given directory (recursive). - * - * @param string[] $files - * - * @return string[] - */ - final protected static function filterFiles(array $files, string $directory): array - { - $directory = self::resolveDirectory($directory); - - return array_filter($files, static fn (string $value): bool => strpos($value, $directory) === 0); - } - - /** - * Returns any files whose `basename` matches the given pattern. - * - * @param string[] $files - * @param string $pattern Regex or pseudo-regex string - * - * @return string[] - */ - final protected static function matchFiles(array $files, string $pattern): array - { - // Convert pseudo-regex into their true form - if (@preg_match($pattern, '') === false) { - $pattern = str_replace( - ['#', '.', '*', '?'], - ['\#', '\.', '.*', '.'], - $pattern - ); - $pattern = "#{$pattern}#"; - } - - return array_filter($files, static fn ($value) => (bool) preg_match($pattern, basename($value))); - } - - // -------------------------------------------------------------------- - // Class Core - // -------------------------------------------------------------------- - - /** - * Loads the Filesystem helper and adds any initial files. - * - * @param string[] $files - */ - public function __construct(array $files = []) - { - helper(['filesystem']); - - $this->add($files)->define(); - } - - /** - * Applies any initial inputs after the constructor. - * This method is a stub to be implemented by child classes. - */ - protected function define(): void - { - } - - /** - * Optimizes and returns the current file list. - * - * @return string[] - */ - public function get(): array - { - $this->files = array_unique($this->files); - sort($this->files, SORT_STRING); - - return $this->files; - } - - /** - * Sets the file list directly, files are still subject to verification. - * This works as a "reset" method with []. - * - * @param string[] $files The new file list to use - * - * @return $this - */ - public function set(array $files) - { - $this->files = []; - - return $this->addFiles($files); - } - - /** - * Adds an array/single file or directory to the list. - * - * @param string|string[] $paths - * - * @return $this - */ - public function add($paths, bool $recursive = true) - { - $paths = (array) $paths; - - foreach ($paths as $path) { - if (! is_string($path)) { - throw new InvalidArgumentException('FileCollection paths must be strings.'); - } - - try { - // Test for a directory - self::resolveDirectory($path); - } catch (FileException $e) { - $this->addFile($path); - - continue; - } - - $this->addDirectory($path, $recursive); - } - - return $this; - } - - // -------------------------------------------------------------------- - // File Handling - // -------------------------------------------------------------------- - - /** - * Verifies and adds files to the list. - * - * @param string[] $files - * - * @return $this - */ - public function addFiles(array $files) - { - foreach ($files as $file) { - $this->addFile($file); - } - - return $this; - } - - /** - * Verifies and adds a single file to the file list. - * - * @return $this - */ - public function addFile(string $file) - { - $this->files[] = self::resolveFile($file); - - return $this; - } - - /** - * Removes files from the list. - * - * @param string[] $files - * - * @return $this - */ - public function removeFiles(array $files) - { - $this->files = array_diff($this->files, $files); - - return $this; - } - - /** - * Removes a single file from the list. - * - * @return $this - */ - public function removeFile(string $file) - { - return $this->removeFiles([$file]); - } - - // -------------------------------------------------------------------- - // Directory Handling - // -------------------------------------------------------------------- - - /** - * Verifies and adds files from each - * directory to the list. - * - * @param string[] $directories - * - * @return $this - */ - public function addDirectories(array $directories, bool $recursive = false) - { - foreach ($directories as $directory) { - $this->addDirectory($directory, $recursive); - } - - return $this; - } - - /** - * Verifies and adds all files from a directory. - * - * @return $this - */ - public function addDirectory(string $directory, bool $recursive = false) - { - $directory = self::resolveDirectory($directory); - - // Map the directory to depth 2 to so directories become arrays - foreach (directory_map($directory, 2, true) as $key => $path) { - if (is_string($path)) { - $this->addFile($directory . $path); - } elseif ($recursive && is_array($path)) { - $this->addDirectory($directory . $key, true); - } - } - - return $this; - } - - // -------------------------------------------------------------------- - // Filtering - // -------------------------------------------------------------------- - - /** - * Removes any files from the list that match the supplied pattern - * (within the optional scope). - * - * @param string $pattern Regex or pseudo-regex string - * @param string|null $scope The directory to limit the scope - * - * @return $this - */ - public function removePattern(string $pattern, ?string $scope = null) - { - if ($pattern === '') { - return $this; - } - - // Start with all files or those in scope - $files = $scope === null ? $this->files : self::filterFiles($this->files, $scope); - - // Remove any files that match the pattern - return $this->removeFiles(self::matchFiles($files, $pattern)); - } - - /** - * Keeps only the files from the list that match - * (within the optional scope). - * - * @param string $pattern Regex or pseudo-regex string - * @param string|null $scope A directory to limit the scope - * - * @return $this - */ - public function retainPattern(string $pattern, ?string $scope = null) - { - if ($pattern === '') { - return $this; - } - - // Start with all files or those in scope - $files = $scope === null ? $this->files : self::filterFiles($this->files, $scope); - - // Matches the pattern within the scoped files and remove their inverse. - return $this->removeFiles(array_diff($files, self::matchFiles($files, $pattern))); - } - - // -------------------------------------------------------------------- - // Interface Methods - // -------------------------------------------------------------------- - - /** - * Returns the current number of files in the collection. - * Fulfills Countable. - */ - public function count(): int - { - return count($this->files); - } - - /** - * Yields as an Iterator for the current files. - * Fulfills IteratorAggregate. - * - * @return Generator<File> - * - * @throws FileNotFoundException - */ - public function getIterator(): Generator - { - foreach ($this->get() as $file) { - yield new File($file, true); - } - } -} diff --git a/system4.4.6/Filters/CSRF.php b/system4.4.6/Filters/CSRF.php deleted file mode 100644 index 23e6e254..00000000 --- a/system4.4.6/Filters/CSRF.php +++ /dev/null @@ -1,76 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Filters; - -use CodeIgniter\HTTP\IncomingRequest; -use CodeIgniter\HTTP\RedirectResponse; -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\ResponseInterface; -use CodeIgniter\Security\Exceptions\SecurityException; -use Config\Services; - -/** - * CSRF filter. - * - * This filter is not intended to be used from the command line. - * - * @codeCoverageIgnore - * @see \CodeIgniter\Filters\CSRFTest - */ -class CSRF implements FilterInterface -{ - /** - * Do whatever processing this filter needs to do. - * By default it should not return anything during - * normal execution. However, when an abnormal state - * is found, it should return an instance of - * CodeIgniter\HTTP\Response. If it does, script - * execution will end and that Response will be - * sent back to the client, allowing for error pages, - * redirects, etc. - * - * @param array|null $arguments - * - * @return RedirectResponse|void - * - * @throws SecurityException - */ - public function before(RequestInterface $request, $arguments = null) - { - if (! $request instanceof IncomingRequest) { - return; - } - - $security = Services::security(); - - try { - $security->verify($request); - } catch (SecurityException $e) { - if ($security->shouldRedirect() && ! $request->isAJAX()) { - return redirect()->back()->with('error', $e->getMessage()); - } - - throw $e; - } - } - - /** - * We don't have anything to do here. - * - * @param array|null $arguments - * - * @return void - */ - public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) - { - } -} diff --git a/system4.4.6/Filters/DebugToolbar.php b/system4.4.6/Filters/DebugToolbar.php deleted file mode 100644 index 75662d84..00000000 --- a/system4.4.6/Filters/DebugToolbar.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Filters; - -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\ResponseInterface; -use Config\Services; - -/** - * Debug toolbar filter - * - * @see \CodeIgniter\Filters\DebugToolbarTest - */ -class DebugToolbar implements FilterInterface -{ - /** - * We don't need to do anything here. - * - * @param array|null $arguments - */ - public function before(RequestInterface $request, $arguments = null) - { - } - - /** - * If the debug flag is set (CI_DEBUG) then collect performance - * and debug information and display it in a toolbar. - * - * @param array|null $arguments - */ - public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) - { - Services::toolbar()->prepare($request, $response); - } -} diff --git a/system4.4.6/Filters/Exceptions/FilterException.php b/system4.4.6/Filters/Exceptions/FilterException.php deleted file mode 100644 index 04bb36bd..00000000 --- a/system4.4.6/Filters/Exceptions/FilterException.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Filters\Exceptions; - -use CodeIgniter\Exceptions\ConfigException; -use CodeIgniter\Exceptions\ExceptionInterface; - -/** - * FilterException - */ -class FilterException extends ConfigException implements ExceptionInterface -{ - /** - * Thrown when the provided alias is not within - * the list of configured filter aliases. - * - * @return static - */ - public static function forNoAlias(string $alias) - { - return new static(lang('Filters.noFilter', [$alias])); - } - - /** - * Thrown when the filter class does not implement FilterInterface. - * - * @return static - */ - public static function forIncorrectInterface(string $class) - { - return new static(lang('Filters.incorrectInterface', [$class])); - } -} diff --git a/system4.4.6/Filters/FilterInterface.php b/system4.4.6/Filters/FilterInterface.php deleted file mode 100644 index 1a3363c9..00000000 --- a/system4.4.6/Filters/FilterInterface.php +++ /dev/null @@ -1,49 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Filters; - -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\ResponseInterface; - -/** - * Filter interface - */ -interface FilterInterface -{ - /** - * Do whatever processing this filter needs to do. - * By default it should not return anything during - * normal execution. However, when an abnormal state - * is found, it should return an instance of - * CodeIgniter\HTTP\Response. If it does, script - * execution will end and that Response will be - * sent back to the client, allowing for error pages, - * redirects, etc. - * - * @param array|null $arguments - * - * @return RequestInterface|ResponseInterface|string|void - */ - public function before(RequestInterface $request, $arguments = null); - - /** - * Allows After filters to inspect and modify the response - * object as needed. This method does not allow any way - * to stop execution of other after filters, short of - * throwing an Exception or Error. - * - * @param array|null $arguments - * - * @return ResponseInterface|void - */ - public function after(RequestInterface $request, ResponseInterface $response, $arguments = null); -} diff --git a/system4.4.6/Filters/Filters.php b/system4.4.6/Filters/Filters.php deleted file mode 100644 index 18001b10..00000000 --- a/system4.4.6/Filters/Filters.php +++ /dev/null @@ -1,662 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Filters; - -use CodeIgniter\Exceptions\ConfigException; -use CodeIgniter\Filters\Exceptions\FilterException; -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\ResponseInterface; -use Config\Filters as FiltersConfig; -use Config\Modules; -use Config\Services; - -/** - * Filters - * - * @see \CodeIgniter\Filters\FiltersTest - */ -class Filters -{ - /** - * The original config file - * - * @var FiltersConfig - */ - protected $config; - - /** - * The active IncomingRequest or CLIRequest - * - * @var RequestInterface - */ - protected $request; - - /** - * The active Response instance - * - * @var ResponseInterface - */ - protected $response; - - /** - * Handle to the modules config. - * - * @var Modules - */ - protected $modules; - - /** - * Whether we've done initial processing - * on the filter lists. - * - * @var bool - */ - protected $initialized = false; - - /** - * The processed filters that will - * be used to check against. - * - * @var array<string, array> - */ - protected $filters = [ - 'before' => [], - 'after' => [], - ]; - - /** - * The collection of filters' class names that will - * be used to execute in each position. - * - * @var array<string, array> - */ - protected $filtersClass = [ - 'before' => [], - 'after' => [], - ]; - - /** - * Any arguments to be passed to filters. - * - * @var array<string, list<string>|null> [name => params] - */ - protected $arguments = []; - - /** - * Any arguments to be passed to filtersClass. - * - * @var array<class-string, array<string, list<string>>|null> [classname => arguments] - */ - protected $argumentsClass = []; - - /** - * Constructor. - * - * @param FiltersConfig $config - */ - public function __construct($config, RequestInterface $request, ResponseInterface $response, ?Modules $modules = null) - { - $this->config = $config; - $this->request = &$request; - $this->setResponse($response); - - $this->modules = $modules ?? config(Modules::class); - - if ($this->modules->shouldDiscover('filters')) { - $this->discoverFilters(); - } - } - - /** - * If discoverFilters is enabled in Config then system will try to - * auto-discover custom filters files in Namespaces and allow access to - * the config object via the variable $filters as with the routes file - * - * Sample : - * $filters->aliases['custom-auth'] = \Acme\Blob\Filters\BlobAuth::class; - * - * @deprecated 4.4.2 Use Registrar instead. - */ - private function discoverFilters(): void - { - $locator = Services::locator(); - - // for access by custom filters - $filters = $this->config; - - $files = $locator->search('Config/Filters.php'); - - foreach ($files as $file) { - $className = $locator->getClassname($file); - - // Don't include our main Filter config again... - if ($className === FiltersConfig::class) { - continue; - } - - include $file; - } - } - - /** - * Set the response explicitly. - * - * @return void - */ - public function setResponse(ResponseInterface $response) - { - $this->response = $response; - } - - /** - * Runs through all of the filters for the specified - * uri and position. - * - * @param string $uri URI path relative to baseURL - * - * @return RequestInterface|ResponseInterface|string|null - * - * @throws FilterException - */ - public function run(string $uri, string $position = 'before') - { - $this->initialize(strtolower($uri)); - - foreach ($this->filtersClass[$position] as $className) { - $class = new $className(); - - if (! $class instanceof FilterInterface) { - throw FilterException::forIncorrectInterface(get_class($class)); - } - - if ($position === 'before') { - $result = $class->before( - $this->request, - $this->argumentsClass[$className] ?? null - ); - - if ($result instanceof RequestInterface) { - $this->request = $result; - - continue; - } - - // If the response object was sent back, - // then send it and quit. - if ($result instanceof ResponseInterface) { - // short circuit - bypass any other filters - return $result; - } - // Ignore an empty result - if (empty($result)) { - continue; - } - - return $result; - } - - if ($position === 'after') { - $result = $class->after( - $this->request, - $this->response, - $this->argumentsClass[$className] ?? null - ); - - if ($result instanceof ResponseInterface) { - $this->response = $result; - - continue; - } - } - } - - return $position === 'before' ? $this->request : $this->response; - } - - /** - * Runs through our list of filters provided by the configuration - * object to get them ready for use, including getting uri masks - * to proper regex, removing those we can from the possibilities - * based on HTTP method, etc. - * - * The resulting $this->filters is an array of only filters - * that should be applied to this request. - * - * We go ahead and process the entire tree because we'll need to - * run through both a before and after and don't want to double - * process the rows. - * - * @param string|null $uri URI path relative to baseURL (all lowercase) - * - * @return Filters - */ - public function initialize(?string $uri = null) - { - if ($this->initialized === true) { - return $this; - } - - $this->processGlobals($uri); - $this->processMethods(); - $this->processFilters($uri); - - // Set the toolbar filter to the last position to be executed - if (in_array('toolbar', $this->filters['after'], true) - && ($count = count($this->filters['after'])) > 1 - && $this->filters['after'][$count - 1] !== 'toolbar' - ) { - array_splice($this->filters['after'], array_search('toolbar', $this->filters['after'], true), 1); - $this->filters['after'][] = 'toolbar'; - } - - $this->processAliasesToClass('before'); - $this->processAliasesToClass('after'); - - $this->initialized = true; - - return $this; - } - - /** - * Restores instance to its pre-initialized state. - * Most useful for testing so the service can be - * re-initialized to a different path. - */ - public function reset(): self - { - $this->initialized = false; - - $this->arguments = $this->argumentsClass = []; - - $this->filters = $this->filtersClass = [ - 'before' => [], - 'after' => [], - ]; - - return $this; - } - - /** - * Returns the processed filters array. - */ - public function getFilters(): array - { - return $this->filters; - } - - /** - * Returns the filtersClass array. - */ - public function getFiltersClass(): array - { - return $this->filtersClass; - } - - /** - * Adds a new alias to the config file. - * MUST be called prior to initialize(); - * Intended for use within routes files. - * - * @return $this - */ - public function addFilter(string $class, ?string $alias = null, string $when = 'before', string $section = 'globals') - { - $alias ??= md5($class); - - if (! isset($this->config->{$section})) { - $this->config->{$section} = []; - } - - if (! isset($this->config->{$section}[$when])) { - $this->config->{$section}[$when] = []; - } - - $this->config->aliases[$alias] = $class; - - $this->config->{$section}[$when][] = $alias; - - return $this; - } - - /** - * Ensures that a specific filter is on and enabled for the current request. - * - * Filters can have "arguments". This is done by placing a colon immediately - * after the filter name, followed by a comma-separated list of arguments that - * are passed to the filter when executed. - * - * @param string $name filter_name or filter_name:arguments like 'role:admin,manager' - * - * @return $this - * - * @deprecated Use enableFilters(). This method will be private. - */ - public function enableFilter(string $name, string $when = 'before') - { - // Get arguments and clean name - [$name, $arguments] = $this->getCleanName($name); - $this->arguments[$name] = ($arguments !== []) ? $arguments : null; - - if (class_exists($name)) { - $this->config->aliases[$name] = $name; - } elseif (! array_key_exists($name, $this->config->aliases)) { - throw FilterException::forNoAlias($name); - } - - $classNames = (array) $this->config->aliases[$name]; - - foreach ($classNames as $className) { - $this->argumentsClass[$className] = $this->arguments[$name] ?? null; - } - - if (! isset($this->filters[$when][$name])) { - $this->filters[$when][] = $name; - $this->filtersClass[$when] = array_merge($this->filtersClass[$when], $classNames); - } - - return $this; - } - - /** - * Get clean name and arguments - * - * @param string $name filter_name or filter_name:arguments like 'role:admin,manager' - * - * @return array{0: string, 1: list<string>} [name, arguments] - */ - private function getCleanName(string $name): array - { - $arguments = []; - - if (strpos($name, ':') !== false) { - [$name, $arguments] = explode(':', $name); - - $arguments = explode(',', $arguments); - array_walk($arguments, static function (&$item) { - $item = trim($item); - }); - } - - return [$name, $arguments]; - } - - /** - * Ensures that specific filters are on and enabled for the current request. - * - * Filters can have "arguments". This is done by placing a colon immediately - * after the filter name, followed by a comma-separated list of arguments that - * are passed to the filter when executed. - * - * @params array<string> $names filter_name or filter_name:arguments like 'role:admin,manager' - * - * @return Filters - */ - public function enableFilters(array $names, string $when = 'before') - { - foreach ($names as $filter) { - $this->enableFilter($filter, $when); - } - - return $this; - } - - /** - * Returns the arguments for a specified key, or all. - * - * @return array<string, string>|string - */ - public function getArguments(?string $key = null) - { - return $key === null ? $this->arguments : $this->arguments[$key]; - } - - // -------------------------------------------------------------------- - // Processors - // -------------------------------------------------------------------- - - /** - * Add any applicable (not excluded) global filter settings to the mix. - * - * @param string|null $uri URI path relative to baseURL (all lowercase) - * - * @return void - */ - protected function processGlobals(?string $uri = null) - { - if (! isset($this->config->globals) || ! is_array($this->config->globals)) { - return; - } - - $uri = strtolower(trim($uri ?? '', '/ ')); - - // Add any global filters, unless they are excluded for this URI - $sets = ['before', 'after']; - - foreach ($sets as $set) { - if (isset($this->config->globals[$set])) { - // look at each alias in the group - foreach ($this->config->globals[$set] as $alias => $rules) { - $keep = true; - if (is_array($rules)) { - // see if it should be excluded - if (isset($rules['except'])) { - // grab the exclusion rules - $check = $rules['except']; - if ($this->checkExcept($uri, $check)) { - $keep = false; - } - } - } else { - $alias = $rules; // simple name of filter to apply - } - - if ($keep) { - $this->filters[$set][] = $alias; - } - } - } - } - } - - /** - * Add any method-specific filters to the mix. - * - * @return void - */ - protected function processMethods() - { - if (! isset($this->config->methods) || ! is_array($this->config->methods)) { - return; - } - - // Request method won't be set for CLI-based requests - $method = strtolower($this->request->getMethod()) ?? 'cli'; - - if (array_key_exists($method, $this->config->methods)) { - $this->filters['before'] = array_merge($this->filters['before'], $this->config->methods[$method]); - } - } - - /** - * Add any applicable configured filters to the mix. - * - * @param string|null $uri URI path relative to baseURL (all lowercase) - * - * @return void - */ - protected function processFilters(?string $uri = null) - { - if (! isset($this->config->filters) || ! $this->config->filters) { - return; - } - - $uri = strtolower(trim($uri, '/ ')); - - // Add any filters that apply to this URI - foreach ($this->config->filters as $alias => $settings) { - // Look for inclusion rules - if (isset($settings['before'])) { - $path = $settings['before']; - - if ($this->pathApplies($uri, $path)) { - // Get arguments and clean name - [$name, $arguments] = $this->getCleanName($alias); - - $this->filters['before'][] = $name; - - $this->registerArguments($name, $arguments); - } - } - - if (isset($settings['after'])) { - $path = $settings['after']; - - if ($this->pathApplies($uri, $path)) { - // Get arguments and clean name - [$name, $arguments] = $this->getCleanName($alias); - - $this->filters['after'][] = $name; - - // The arguments may have already been registered in the before filter. - // So disable check. - $this->registerArguments($name, $arguments, false); - } - } - } - } - - /** - * @param string $name filter alias - * @param array $arguments filter arguments - * @param bool $check if true, check if already defined - */ - private function registerArguments(string $name, array $arguments, bool $check = true): void - { - if ($arguments !== []) { - if ($check && array_key_exists($name, $this->arguments)) { - throw new ConfigException( - '"' . $name . '" already has arguments: ' - . (($this->arguments[$name] === null) ? 'null' : implode(',', $this->arguments[$name])) - ); - } - - $this->arguments[$name] = $arguments; - } - - $classNames = (array) $this->config->aliases[$name]; - - foreach ($classNames as $className) { - $this->argumentsClass[$className] = $this->arguments[$name] ?? null; - } - } - - /** - * Maps filter aliases to the equivalent filter classes - * - * @return void - * - * @throws FilterException - */ - protected function processAliasesToClass(string $position) - { - foreach ($this->filters[$position] as $alias => $rules) { - if (is_numeric($alias) && is_string($rules)) { - $alias = $rules; - } - - if (! array_key_exists($alias, $this->config->aliases)) { - throw FilterException::forNoAlias($alias); - } - - if (is_array($this->config->aliases[$alias])) { - $this->filtersClass[$position] = array_merge($this->filtersClass[$position], $this->config->aliases[$alias]); - } else { - $this->filtersClass[$position][] = $this->config->aliases[$alias]; - } - } - - // when using enableFilter() we already write the class name in $filtersClass as well as the - // alias in $filters. This leads to duplicates when using route filters. - // Since some filters like rate limiters rely on being executed once a request we filter em here. - $this->filtersClass[$position] = array_values(array_unique($this->filtersClass[$position])); - } - - /** - * Check paths for match for URI - * - * @param string $uri URI to test against - * @param array|string $paths The path patterns to test - * - * @return bool True if any of the paths apply to the URI - */ - private function pathApplies(string $uri, $paths) - { - // empty path matches all - if (empty($paths)) { - return true; - } - - // make sure the paths are iterable - if (is_string($paths)) { - $paths = [$paths]; - } - - return $this->checkPseudoRegex($uri, $paths); - } - - /** - * Check except paths - * - * @param string $uri URI path relative to baseURL (all lowercase) - * @param array|string $paths The except path patterns - * - * @return bool True if the URI matches except paths. - */ - private function checkExcept(string $uri, $paths): bool - { - // empty array does not match anything - if ($paths === []) { - return false; - } - - // make sure the paths are iterable - if (is_string($paths)) { - $paths = [$paths]; - } - - return $this->checkPseudoRegex($uri, $paths); - } - - /** - * Check the URI path as pseudo-regex - * - * @param string $uri URI path relative to baseURL (all lowercase) - * @param array $paths The except path patterns - */ - private function checkPseudoRegex(string $uri, array $paths): bool - { - // treat each path as pseudo-regex - foreach ($paths as $path) { - // need to escape path separators - $path = str_replace('/', '\/', trim($path, '/ ')); - // need to make pseudo wildcard real - $path = strtolower(str_replace('*', '.*', $path)); - - // Does this rule apply here? - if (preg_match('#^' . $path . '$#', $uri, $match) === 1) { - return true; - } - } - - return false; - } -} diff --git a/system4.4.6/Filters/Honeypot.php b/system4.4.6/Filters/Honeypot.php deleted file mode 100644 index e30e90f8..00000000 --- a/system4.4.6/Filters/Honeypot.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Filters; - -use CodeIgniter\Honeypot\Exceptions\HoneypotException; -use CodeIgniter\HTTP\IncomingRequest; -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\ResponseInterface; -use Config\Services; - -/** - * Honeypot filter - * - * @see \CodeIgniter\Filters\HoneypotTest - */ -class Honeypot implements FilterInterface -{ - /** - * Checks if Honeypot field is empty, if not then the - * requester is a bot - * - * @param array|null $arguments - * - * @throws HoneypotException - */ - public function before(RequestInterface $request, $arguments = null) - { - if (! $request instanceof IncomingRequest) { - return; - } - - if (Services::honeypot()->hasContent($request)) { - throw HoneypotException::isBot(); - } - } - - /** - * Attach a honeypot to the current response. - * - * @param array|null $arguments - */ - public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) - { - Services::honeypot()->attachHoneypot($response); - } -} diff --git a/system4.4.6/Filters/InvalidChars.php b/system4.4.6/Filters/InvalidChars.php deleted file mode 100644 index 93124fdb..00000000 --- a/system4.4.6/Filters/InvalidChars.php +++ /dev/null @@ -1,126 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Filters; - -use CodeIgniter\HTTP\IncomingRequest; -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\ResponseInterface; -use CodeIgniter\Security\Exceptions\SecurityException; - -/** - * InvalidChars filter. - * - * Check if user input data ($_GET, $_POST, $_COOKIE, php://input) do not contain - * invalid characters: - * - invalid UTF-8 characters - * - control characters except line break and tab code - * - * @see \CodeIgniter\Filters\InvalidCharsTest - */ -class InvalidChars implements FilterInterface -{ - /** - * Data source - * - * @var string - */ - protected $source; - - /** - * Regular expressions for valid control codes - * - * @var string - */ - protected $controlCodeRegex = '/\A[\r\n\t[:^cntrl:]]*\z/u'; - - /** - * Check invalid characters. - * - * @param array|null $arguments - * - * @return void - */ - public function before(RequestInterface $request, $arguments = null) - { - if (! $request instanceof IncomingRequest) { - return; - } - - $data = [ - 'get' => $request->getGet(), - 'post' => $request->getPost(), - 'cookie' => $request->getCookie(), - 'rawInput' => $request->getRawInput(), - ]; - - foreach ($data as $source => $values) { - $this->source = $source; - $this->checkEncoding($values); - $this->checkControl($values); - } - } - - /** - * We don't have anything to do here. - * - * @param array|null $arguments - * - * @return void - */ - public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) - { - } - - /** - * Check the character encoding is valid UTF-8. - * - * @param array|string $value - * - * @return array|string - */ - protected function checkEncoding($value) - { - if (is_array($value)) { - array_map([$this, 'checkEncoding'], $value); - - return $value; - } - - if (mb_check_encoding($value, 'UTF-8')) { - return $value; - } - - throw SecurityException::forInvalidUTF8Chars($this->source, $value); - } - - /** - * Check for the presence of control characters except line breaks and tabs. - * - * @param array|string $value - * - * @return array|string - */ - protected function checkControl($value) - { - if (is_array($value)) { - array_map([$this, 'checkControl'], $value); - - return $value; - } - - if (preg_match($this->controlCodeRegex, $value) === 1) { - return $value; - } - - throw SecurityException::forInvalidControlChars($this->source, $value); - } -} diff --git a/system4.4.6/Filters/SecureHeaders.php b/system4.4.6/Filters/SecureHeaders.php deleted file mode 100644 index 952926b9..00000000 --- a/system4.4.6/Filters/SecureHeaders.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Filters; - -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\ResponseInterface; - -/** - * Add Common Security Headers - * - * @see \CodeIgniter\Filters\SecureHeadersTest - */ -class SecureHeaders implements FilterInterface -{ - /** - * @var array<string, string> - */ - protected $headers = [ - // https://owasp.org/www-project-secure-headers/#x-frame-options - 'X-Frame-Options' => 'SAMEORIGIN', - - // https://owasp.org/www-project-secure-headers/#x-content-type-options - 'X-Content-Type-Options' => 'nosniff', - - // https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/compatibility/jj542450(v=vs.85)#the-noopen-directive - 'X-Download-Options' => 'noopen', - - // https://owasp.org/www-project-secure-headers/#x-permitted-cross-domain-policies - 'X-Permitted-Cross-Domain-Policies' => 'none', - - // https://owasp.org/www-project-secure-headers/#referrer-policy - 'Referrer-Policy' => 'same-origin', - - // https://owasp.org/www-project-secure-headers/#x-xss-protection - // If you do not need to support legacy browsers, it is recommended that you use - // Content-Security-Policy without allowing unsafe-inline scripts instead. - // 'X-XSS-Protection' => '1; mode=block', - ]; - - /** - * We don't have anything to do here. - * - * @param array|null $arguments - * - * @return void - */ - public function before(RequestInterface $request, $arguments = null) - { - } - - /** - * Add security headers. - * - * @param array|null $arguments - * - * @return void - */ - public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) - { - foreach ($this->headers as $header => $value) { - $response->setHeader($header, $value); - } - } -} diff --git a/system4.4.6/Format/Exceptions/FormatException.php b/system4.4.6/Format/Exceptions/FormatException.php deleted file mode 100644 index 55c36d3d..00000000 --- a/system4.4.6/Format/Exceptions/FormatException.php +++ /dev/null @@ -1,71 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Format\Exceptions; - -use CodeIgniter\Exceptions\DebugTraceableTrait; -use CodeIgniter\Exceptions\ExceptionInterface; -use RuntimeException; - -/** - * FormatException - */ -class FormatException extends RuntimeException implements ExceptionInterface -{ - use DebugTraceableTrait; - - /** - * Thrown when the instantiated class does not exist. - * - * @return static - */ - public static function forInvalidFormatter(string $class) - { - return new static(lang('Format.invalidFormatter', [$class])); - } - - /** - * Thrown in JSONFormatter when the json_encode produces - * an error code other than JSON_ERROR_NONE and JSON_ERROR_RECURSION. - * - * @param string $error The error message - * - * @return static - */ - public static function forInvalidJSON(?string $error = null) - { - return new static(lang('Format.invalidJSON', [$error])); - } - - /** - * Thrown when the supplied MIME type has no - * defined Formatter class. - * - * @return static - */ - public static function forInvalidMime(string $mime) - { - return new static(lang('Format.invalidMime', [$mime])); - } - - /** - * Thrown on XMLFormatter when the `simplexml` extension - * is not installed. - * - * @return static - * - * @codeCoverageIgnore - */ - public static function forMissingExtension() - { - return new static(lang('Format.missingExtension')); - } -} diff --git a/system4.4.6/Format/Format.php b/system4.4.6/Format/Format.php deleted file mode 100644 index 6b4eb73f..00000000 --- a/system4.4.6/Format/Format.php +++ /dev/null @@ -1,74 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Format; - -use CodeIgniter\Format\Exceptions\FormatException; -use Config\Format as FormatConfig; - -/** - * The Format class is a convenient place to create Formatters. - * - * @see \CodeIgniter\Format\FormatTest - */ -class Format -{ - /** - * Configuration instance - * - * @var FormatConfig - */ - protected $config; - - /** - * Constructor. - */ - public function __construct(FormatConfig $config) - { - $this->config = $config; - } - - /** - * Returns the current configuration instance. - * - * @return FormatConfig - */ - public function getConfig() - { - return $this->config; - } - - /** - * A Factory method to return the appropriate formatter for the given mime type. - * - * @throws FormatException - */ - public function getFormatter(string $mime): FormatterInterface - { - if (! array_key_exists($mime, $this->config->formatters)) { - throw FormatException::forInvalidMime($mime); - } - - $className = $this->config->formatters[$mime]; - - if (! class_exists($className)) { - throw FormatException::forInvalidFormatter($className); - } - - $class = new $className(); - - if (! $class instanceof FormatterInterface) { - throw FormatException::forInvalidFormatter($className); - } - - return $class; - } -} diff --git a/system4.4.6/Format/FormatterInterface.php b/system4.4.6/Format/FormatterInterface.php deleted file mode 100644 index 6e8e9bd5..00000000 --- a/system4.4.6/Format/FormatterInterface.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Format; - -/** - * Formatter interface - */ -interface FormatterInterface -{ - /** - * Takes the given data and formats it. - * - * @param array|object|string $data - * - * @return false|string - */ - public function format($data); -} diff --git a/system4.4.6/Format/JSONFormatter.php b/system4.4.6/Format/JSONFormatter.php deleted file mode 100644 index 3e708e9f..00000000 --- a/system4.4.6/Format/JSONFormatter.php +++ /dev/null @@ -1,48 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Format; - -use CodeIgniter\Format\Exceptions\FormatException; -use Config\Format; - -/** - * JSON data formatter - * - * @see \CodeIgniter\Format\JSONFormatterTest - */ -class JSONFormatter implements FormatterInterface -{ - /** - * Takes the given data and formats it. - * - * @param array|bool|float|int|object|string|null $data - * - * @return false|string (JSON string | false) - */ - public function format($data) - { - $config = new Format(); - - $options = $config->formatterOptions['application/json'] ?? JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES; - $options |= JSON_PARTIAL_OUTPUT_ON_ERROR; - - $options = ENVIRONMENT === 'production' ? $options : $options | JSON_PRETTY_PRINT; - - $result = json_encode($data, $options, 512); - - if (! in_array(json_last_error(), [JSON_ERROR_NONE, JSON_ERROR_RECURSION], true)) { - throw FormatException::forInvalidJSON(json_last_error_msg()); - } - - return $result; - } -} diff --git a/system4.4.6/Format/XMLFormatter.php b/system4.4.6/Format/XMLFormatter.php deleted file mode 100644 index 51b3003e..00000000 --- a/system4.4.6/Format/XMLFormatter.php +++ /dev/null @@ -1,100 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Format; - -use CodeIgniter\Format\Exceptions\FormatException; -use Config\Format; -use SimpleXMLElement; - -/** - * XML data formatter - * - * @see \CodeIgniter\Format\XMLFormatterTest - */ -class XMLFormatter implements FormatterInterface -{ - /** - * Takes the given data and formats it. - * - * @param array|bool|float|int|object|string|null $data - * - * @return false|string (XML string | false) - */ - public function format($data) - { - $config = new Format(); - - // SimpleXML is installed but default - // but best to check, and then provide a fallback. - if (! extension_loaded('simplexml')) { - throw FormatException::forMissingExtension(); // @codeCoverageIgnore - } - - $options = $config->formatterOptions['application/xml'] ?? 0; - $output = new SimpleXMLElement('<?xml version="1.0"?><response></response>', $options); - - $this->arrayToXML((array) $data, $output); - - return $output->asXML(); - } - - /** - * A recursive method to convert an array into a valid XML string. - * - * Written by CodexWorld. Received permission by email on Nov 24, 2016 to use this code. - * - * @see http://www.codexworld.com/convert-array-to-xml-in-php/ - * - * @param SimpleXMLElement $output - * - * @return void - */ - protected function arrayToXML(array $data, &$output) - { - foreach ($data as $key => $value) { - $key = $this->normalizeXMLTag($key); - - if (is_array($value)) { - $subnode = $output->addChild("{$key}"); - $this->arrayToXML($value, $subnode); - } else { - $output->addChild("{$key}", htmlspecialchars("{$value}")); - } - } - } - - /** - * Normalizes tags into the allowed by W3C. - * Regex adopted from this StackOverflow answer. - * - * @param int|string $key - * - * @return string - * - * @see https://stackoverflow.com/questions/60001029/invalid-characters-in-xml-tag-name - */ - protected function normalizeXMLTag($key) - { - $startChar = 'A-Z_a-z' . - '\\x{C0}-\\x{D6}\\x{D8}-\\x{F6}\\x{F8}-\\x{2FF}\\x{370}-\\x{37D}' . - '\\x{37F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{2070}-\\x{218F}' . - '\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}' . - '\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}'; - $validName = $startChar . '\\.\\d\\x{B7}\\x{300}-\\x{36F}\\x{203F}-\\x{2040}'; - - $key = trim($key); - $key = preg_replace("/[^{$validName}-]+/u", '', $key); - $key = preg_replace("/^[^{$startChar}]+/u", 'item$0', $key); - - return preg_replace('/^(xml).*/iu', 'item$0', $key); // XML is a reserved starting word - } -} diff --git a/system4.4.6/HTTP/CLIRequest.php b/system4.4.6/HTTP/CLIRequest.php deleted file mode 100644 index 684b1dbf..00000000 --- a/system4.4.6/HTTP/CLIRequest.php +++ /dev/null @@ -1,325 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP; - -use Config\App; -use Locale; -use RuntimeException; - -/** - * Represents a request from the command-line. Provides additional - * tools to interact with that request since CLI requests are not - * static like HTTP requests might be. - * - * Portions of this code were initially from the FuelPHP Framework, - * version 1.7.x, and used here under the MIT license they were - * originally made available under. - * - * http://fuelphp.com - * - * @see \CodeIgniter\HTTP\CLIRequestTest - */ -class CLIRequest extends Request -{ - /** - * Stores the segments of our cli "URI" command. - * - * @var array - */ - protected $segments = []; - - /** - * Command line options and their values. - * - * @var array - */ - protected $options = []; - - /** - * Command line arguments (segments and options). - * - * @var array - */ - protected $args = []; - - /** - * Set the expected HTTP verb - * - * @var string - */ - protected $method = 'cli'; - - /** - * Constructor - */ - public function __construct(App $config) - { - if (! is_cli()) { - throw new RuntimeException(static::class . ' needs to run from the command line.'); // @codeCoverageIgnore - } - - parent::__construct($config); - - // Don't terminate the script when the cli's tty goes away - ignore_user_abort(true); - - $this->parseCommand(); - - // Set SiteURI for this request - $this->uri = new SiteURI($config, $this->getPath()); - } - - /** - * Returns the "path" of the request script so that it can be used - * in routing to the appropriate controller/method. - * - * The path is determined by treating the command line arguments - * as if it were a URL - up until we hit our first option. - * - * Example: - * php index.php users 21 profile -foo bar - * - * // Routes to /users/21/profile (index is removed for routing sake) - * // with the option foo = bar. - */ - public function getPath(): string - { - $path = implode('/', $this->segments); - - return ($path === '') ? '' : $path; - } - - /** - * Returns an associative array of all CLI options found, with - * their values. - */ - public function getOptions(): array - { - return $this->options; - } - - /** - * Returns an array of all CLI arguments (segments and options). - */ - public function getArgs(): array - { - return $this->args; - } - - /** - * Returns the path segments. - */ - public function getSegments(): array - { - return $this->segments; - } - - /** - * Returns the value for a single CLI option that was passed in. - * - * @return string|null - */ - public function getOption(string $key) - { - return $this->options[$key] ?? null; - } - - /** - * Returns the options as a string, suitable for passing along on - * the CLI to other commands. - * - * Example: - * $options = [ - * 'foo' => 'bar', - * 'baz' => 'queue some stuff' - * ]; - * - * getOptionString() = '-foo bar -baz "queue some stuff"' - */ - public function getOptionString(bool $useLongOpts = false): string - { - if ($this->options === []) { - return ''; - } - - $out = ''; - - foreach ($this->options as $name => $value) { - if ($useLongOpts && mb_strlen($name) > 1) { - $out .= "--{$name} "; - } else { - $out .= "-{$name} "; - } - - if ($value === null) { - continue; - } - - if (mb_strpos($value, ' ') !== false) { - $out .= '"' . $value . '" '; - } else { - $out .= "{$value} "; - } - } - - return trim($out); - } - - /** - * Parses the command line it was called from and collects all options - * and valid segments. - * - * NOTE: I tried to use getopt but had it fail occasionally to find - * any options, where argv has always had our back. - * - * @return void - */ - protected function parseCommand() - { - $args = $this->getServer('argv'); - array_shift($args); // Scrap index.php - - $optionValue = false; - - foreach ($args as $i => $arg) { - if (mb_strpos($arg, '-') !== 0) { - if ($optionValue) { - $optionValue = false; - } else { - $this->segments[] = $arg; - $this->args[] = $arg; - } - - continue; - } - - $arg = ltrim($arg, '-'); - $value = null; - - if (isset($args[$i + 1]) && mb_strpos($args[$i + 1], '-') !== 0) { - $value = $args[$i + 1]; - $optionValue = true; - } - - $this->options[$arg] = $value; - $this->args[$arg] = $value; - } - } - - /** - * Determines if this request was made from the command line (CLI). - */ - public function isCLI(): bool - { - return true; - } - - /** - * Fetch an item from GET data. - * - * @param array|string|null $index Index for item to fetch from $_GET. - * @param int|null $filter A filter name to apply. - * @param array|int|null $flags - * - * @return array|null - */ - public function getGet($index = null, $filter = null, $flags = null) - { - return $this->returnNullOrEmptyArray($index); - } - - /** - * Fetch an item from POST. - * - * @param array|string|null $index Index for item to fetch from $_POST. - * @param int|null $filter A filter name to apply - * @param array|int|null $flags - * - * @return array|null - */ - public function getPost($index = null, $filter = null, $flags = null) - { - return $this->returnNullOrEmptyArray($index); - } - - /** - * Fetch an item from POST data with fallback to GET. - * - * @param array|string|null $index Index for item to fetch from $_POST or $_GET - * @param int|null $filter A filter name to apply - * @param array|int|null $flags - * - * @return array|null - */ - public function getPostGet($index = null, $filter = null, $flags = null) - { - return $this->returnNullOrEmptyArray($index); - } - - /** - * Fetch an item from GET data with fallback to POST. - * - * @param array|string|null $index Index for item to be fetched from $_GET or $_POST - * @param int|null $filter A filter name to apply - * @param array|int|null $flags - * - * @return array|null - */ - public function getGetPost($index = null, $filter = null, $flags = null) - { - return $this->returnNullOrEmptyArray($index); - } - - /** - * This is a place holder for calls from cookie_helper get_cookie(). - * - * @param array|string|null $index Index for item to be fetched from $_COOKIE - * @param int|null $filter A filter name to be applied - * @param mixed $flags - * - * @return array|null - */ - public function getCookie($index = null, $filter = null, $flags = null) - { - return $this->returnNullOrEmptyArray($index); - } - - /** - * @param array|string|null $index - * - * @return array|null - */ - private function returnNullOrEmptyArray($index) - { - return ($index === null || is_array($index)) ? [] : null; - } - - /** - * Gets the current locale, with a fallback to the default - * locale if none is set. - */ - public function getLocale(): string - { - return Locale::getDefault(); - } - - /** - * Checks this request type. - * - * @param string $type HTTP verb or 'json' or 'ajax' - * @phpstan-param string|'get'|'post'|'put'|'delete'|'head'|'patch'|'options'|'json'|'ajax' $type - */ - public function is(string $type): bool - { - return false; - } -} diff --git a/system4.4.6/HTTP/CURLRequest.php b/system4.4.6/HTTP/CURLRequest.php deleted file mode 100644 index dfc9ba97..00000000 --- a/system4.4.6/HTTP/CURLRequest.php +++ /dev/null @@ -1,702 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP; - -use CodeIgniter\HTTP\Exceptions\HTTPException; -use Config\App; -use Config\CURLRequest as ConfigCURLRequest; -use InvalidArgumentException; - -/** - * A lightweight HTTP client for sending synchronous HTTP requests via cURL. - * - * @see \CodeIgniter\HTTP\CURLRequestTest - */ -class CURLRequest extends OutgoingRequest -{ - /** - * The response object associated with this request - * - * @var ResponseInterface|null - */ - protected $response; - - /** - * The original response object associated with this request - * - * @var ResponseInterface|null - */ - protected $responseOrig; - - /** - * The URI associated with this request - * - * @var URI - */ - protected $baseURI; - - /** - * The setting values - * - * @var array - */ - protected $config; - - /** - * The default setting values - * - * @var array - */ - protected $defaultConfig = [ - 'timeout' => 0.0, - 'connect_timeout' => 150, - 'debug' => false, - 'verify' => true, - ]; - - /** - * Default values for when 'allow_redirects' - * option is true. - * - * @var array - */ - protected $redirectDefaults = [ - 'max' => 5, - 'strict' => true, - 'protocols' => [ - 'http', - 'https', - ], - ]; - - /** - * The number of milliseconds to delay before - * sending the request. - * - * @var float - */ - protected $delay = 0.0; - - /** - * The default options from the constructor. Applied to all requests. - */ - private array $defaultOptions; - - /** - * Whether share options between requests or not. - * - * If true, all the options won't be reset between requests. - * It may cause an error request with unnecessary headers. - */ - private bool $shareOptions; - - /** - * Takes an array of options to set the following possible class properties: - * - * - baseURI - * - timeout - * - any other request options to use as defaults. - */ - public function __construct(App $config, URI $uri, ?ResponseInterface $response = null, array $options = []) - { - if (! function_exists('curl_version')) { - throw HTTPException::forMissingCurl(); // @codeCoverageIgnore - } - - parent::__construct('GET', $uri); - - $this->responseOrig = $response ?? new Response(config(App::class)); - $this->baseURI = $uri->useRawQueryString(); - $this->defaultOptions = $options; - - /** @var ConfigCURLRequest|null $configCURLRequest */ - $configCURLRequest = config(ConfigCURLRequest::class); - $this->shareOptions = $configCURLRequest->shareOptions ?? true; - - $this->config = $this->defaultConfig; - $this->parseOptions($options); - } - - /** - * Sends an HTTP request to the specified $url. If this is a relative - * URL, it will be merged with $this->baseURI to form a complete URL. - * - * @param string $method - */ - public function request($method, string $url, array $options = []): ResponseInterface - { - $this->response = clone $this->responseOrig; - - $this->parseOptions($options); - - $url = $this->prepareURL($url); - - $method = esc(strip_tags($method)); - - $this->send($method, $url); - - if ($this->shareOptions === false) { - $this->resetOptions(); - } - - return $this->response; - } - - /** - * Reset all options to default. - * - * @return void - */ - protected function resetOptions() - { - // Reset headers - $this->headers = []; - $this->headerMap = []; - - // Reset body - $this->body = null; - - // Reset configs - $this->config = $this->defaultConfig; - - // Set the default options for next request - $this->parseOptions($this->defaultOptions); - } - - /** - * Convenience method for sending a GET request. - */ - public function get(string $url, array $options = []): ResponseInterface - { - return $this->request('get', $url, $options); - } - - /** - * Convenience method for sending a DELETE request. - */ - public function delete(string $url, array $options = []): ResponseInterface - { - return $this->request('delete', $url, $options); - } - - /** - * Convenience method for sending a HEAD request. - */ - public function head(string $url, array $options = []): ResponseInterface - { - return $this->request('head', $url, $options); - } - - /** - * Convenience method for sending an OPTIONS request. - */ - public function options(string $url, array $options = []): ResponseInterface - { - return $this->request('options', $url, $options); - } - - /** - * Convenience method for sending a PATCH request. - */ - public function patch(string $url, array $options = []): ResponseInterface - { - return $this->request('patch', $url, $options); - } - - /** - * Convenience method for sending a POST request. - */ - public function post(string $url, array $options = []): ResponseInterface - { - return $this->request('post', $url, $options); - } - - /** - * Convenience method for sending a PUT request. - */ - public function put(string $url, array $options = []): ResponseInterface - { - return $this->request('put', $url, $options); - } - - /** - * Set the HTTP Authentication. - * - * @param string $type basic or digest - * - * @return $this - */ - public function setAuth(string $username, string $password, string $type = 'basic') - { - $this->config['auth'] = [ - $username, - $password, - $type, - ]; - - return $this; - } - - /** - * Set form data to be sent. - * - * @param bool $multipart Set TRUE if you are sending CURLFiles - * - * @return $this - */ - public function setForm(array $params, bool $multipart = false) - { - if ($multipart) { - $this->config['multipart'] = $params; - } else { - $this->config['form_params'] = $params; - } - - return $this; - } - - /** - * Set JSON data to be sent. - * - * @param array|bool|float|int|object|string|null $data - * - * @return $this - */ - public function setJSON($data) - { - $this->config['json'] = $data; - - return $this; - } - - /** - * Sets the correct settings based on the options array - * passed in. - * - * @return void - */ - protected function parseOptions(array $options) - { - if (array_key_exists('baseURI', $options)) { - $this->baseURI = $this->baseURI->setURI($options['baseURI']); - unset($options['baseURI']); - } - - if (array_key_exists('headers', $options) && is_array($options['headers'])) { - foreach ($options['headers'] as $name => $value) { - $this->setHeader($name, $value); - } - - unset($options['headers']); - } - - if (array_key_exists('delay', $options)) { - // Convert from the milliseconds passed in - // to the seconds that sleep requires. - $this->delay = (float) $options['delay'] / 1000; - unset($options['delay']); - } - - if (array_key_exists('body', $options)) { - $this->setBody($options['body']); - unset($options['body']); - } - - foreach ($options as $key => $value) { - $this->config[$key] = $value; - } - } - - /** - * If the $url is a relative URL, will attempt to create - * a full URL by prepending $this->baseURI to it. - */ - protected function prepareURL(string $url): string - { - // If it's a full URI, then we have nothing to do here... - if (strpos($url, '://') !== false) { - return $url; - } - - $uri = $this->baseURI->resolveRelativeURI($url); - - // Create the string instead of casting to prevent baseURL muddling - return URI::createURIString( - $uri->getScheme(), - $uri->getAuthority(), - $uri->getPath(), - $uri->getQuery(), - $uri->getFragment() - ); - } - - /** - * Get the request method. Overrides the Request class' method - * since users expect a different answer here. - * - * @param bool|false $upper Whether to return in upper or lower case. - */ - public function getMethod(bool $upper = false): string - { - return ($upper) ? strtoupper($this->method) : strtolower($this->method); - } - - /** - * Fires the actual cURL request. - * - * @return ResponseInterface - */ - public function send(string $method, string $url) - { - // Reset our curl options so we're on a fresh slate. - $curlOptions = []; - - if (! empty($this->config['query']) && is_array($this->config['query'])) { - // This is likely too naive a solution. - // Should look into handling when $url already - // has query vars on it. - $url .= '?' . http_build_query($this->config['query']); - unset($this->config['query']); - } - - $curlOptions[CURLOPT_URL] = $url; - $curlOptions[CURLOPT_RETURNTRANSFER] = true; - $curlOptions[CURLOPT_HEADER] = true; - $curlOptions[CURLOPT_FRESH_CONNECT] = true; - // Disable @file uploads in post data. - $curlOptions[CURLOPT_SAFE_UPLOAD] = true; - - $curlOptions = $this->setCURLOptions($curlOptions, $this->config); - $curlOptions = $this->applyMethod($method, $curlOptions); - $curlOptions = $this->applyRequestHeaders($curlOptions); - - // Do we need to delay this request? - if ($this->delay > 0) { - usleep((int) $this->delay * 1_000_000); - } - - $output = $this->sendRequest($curlOptions); - - // Set the string we want to break our response from - $breakString = "\r\n\r\n"; - - while (strpos($output, 'HTTP/1.1 100 Continue') === 0) { - $output = substr($output, strpos($output, $breakString) + 4); - } - - if (strpos($output, 'HTTP/1.1 200 Connection established') === 0) { - $output = substr($output, strpos($output, $breakString) + 4); - } - - // If request and response have Digest - if (isset($this->config['auth'][2]) && $this->config['auth'][2] === 'digest' && strpos($output, 'WWW-Authenticate: Digest') !== false) { - $output = substr($output, strpos($output, $breakString) + 4); - } - - // Split out our headers and body - $break = strpos($output, $breakString); - - if ($break !== false) { - // Our headers - $headers = explode("\n", substr($output, 0, $break)); - - $this->setResponseHeaders($headers); - - // Our body - $body = substr($output, $break + 4); - $this->response->setBody($body); - } else { - $this->response->setBody($output); - } - - return $this->response; - } - - /** - * Adds $this->headers to the cURL request. - */ - protected function applyRequestHeaders(array $curlOptions = []): array - { - if (empty($this->headers)) { - return $curlOptions; - } - - $set = []; - - foreach (array_keys($this->headers) as $name) { - $set[] = $name . ': ' . $this->getHeaderLine($name); - } - - $curlOptions[CURLOPT_HTTPHEADER] = $set; - - return $curlOptions; - } - - /** - * Apply method - */ - protected function applyMethod(string $method, array $curlOptions): array - { - $method = strtoupper($method); - - $this->method = $method; - $curlOptions[CURLOPT_CUSTOMREQUEST] = $method; - - $size = strlen($this->body ?? ''); - - // Have content? - if ($size > 0) { - return $this->applyBody($curlOptions); - } - - if ($method === 'PUT' || $method === 'POST') { - // See http://tools.ietf.org/html/rfc7230#section-3.3.2 - if ($this->header('content-length') === null && ! isset($this->config['multipart'])) { - $this->setHeader('Content-Length', '0'); - } - } elseif ($method === 'HEAD') { - $curlOptions[CURLOPT_NOBODY] = 1; - } - - return $curlOptions; - } - - /** - * Apply body - */ - protected function applyBody(array $curlOptions = []): array - { - if (! empty($this->body)) { - $curlOptions[CURLOPT_POSTFIELDS] = (string) $this->getBody(); - } - - return $curlOptions; - } - - /** - * Parses the header retrieved from the cURL response into - * our Response object. - * - * @return void - */ - protected function setResponseHeaders(array $headers = []) - { - foreach ($headers as $header) { - if (($pos = strpos($header, ':')) !== false) { - $title = substr($header, 0, $pos); - $value = substr($header, $pos + 1); - - $this->response->setHeader($title, $value); - } elseif (strpos($header, 'HTTP') === 0) { - preg_match('#^HTTP\/([12](?:\.[01])?) (\d+) (.+)#', $header, $matches); - - if (isset($matches[1])) { - $this->response->setProtocolVersion($matches[1]); - } - - if (isset($matches[2])) { - $this->response->setStatusCode((int) $matches[2], $matches[3] ?? null); - } - } - } - } - - /** - * Set CURL options - * - * @return array - * - * @throws InvalidArgumentException - */ - protected function setCURLOptions(array $curlOptions = [], array $config = []) - { - // Auth Headers - if (! empty($config['auth'])) { - $curlOptions[CURLOPT_USERPWD] = $config['auth'][0] . ':' . $config['auth'][1]; - - if (! empty($config['auth'][2]) && strtolower($config['auth'][2]) === 'digest') { - $curlOptions[CURLOPT_HTTPAUTH] = CURLAUTH_DIGEST; - } else { - $curlOptions[CURLOPT_HTTPAUTH] = CURLAUTH_BASIC; - } - } - - // Certificate - if (! empty($config['cert'])) { - $cert = $config['cert']; - - if (is_array($cert)) { - $curlOptions[CURLOPT_SSLCERTPASSWD] = $cert[1]; - $cert = $cert[0]; - } - - if (! is_file($cert)) { - throw HTTPException::forSSLCertNotFound($cert); - } - - $curlOptions[CURLOPT_SSLCERT] = $cert; - } - - // SSL Verification - if (isset($config['verify'])) { - if (is_string($config['verify'])) { - $file = realpath($config['verify']) ?: $config['verify']; - - if (! is_file($file)) { - throw HTTPException::forInvalidSSLKey($config['verify']); - } - - $curlOptions[CURLOPT_CAINFO] = $file; - $curlOptions[CURLOPT_SSL_VERIFYPEER] = true; - $curlOptions[CURLOPT_SSL_VERIFYHOST] = 2; - } elseif (is_bool($config['verify'])) { - $curlOptions[CURLOPT_SSL_VERIFYPEER] = $config['verify']; - $curlOptions[CURLOPT_SSL_VERIFYHOST] = $config['verify'] ? 2 : 0; - } - } - - // Proxy - if (isset($config['proxy'])) { - $curlOptions[CURLOPT_HTTPPROXYTUNNEL] = true; - $curlOptions[CURLOPT_PROXY] = $config['proxy']; - } - - // Debug - if ($config['debug']) { - $curlOptions[CURLOPT_VERBOSE] = 1; - $curlOptions[CURLOPT_STDERR] = is_string($config['debug']) ? fopen($config['debug'], 'a+b') : fopen('php://stderr', 'wb'); - } - - // Decode Content - if (! empty($config['decode_content'])) { - $accept = $this->getHeaderLine('Accept-Encoding'); - - if ($accept !== '') { - $curlOptions[CURLOPT_ENCODING] = $accept; - } else { - $curlOptions[CURLOPT_ENCODING] = ''; - $curlOptions[CURLOPT_HTTPHEADER] = 'Accept-Encoding'; - } - } - - // Allow Redirects - if (array_key_exists('allow_redirects', $config)) { - $settings = $this->redirectDefaults; - - if (is_array($config['allow_redirects'])) { - $settings = array_merge($settings, $config['allow_redirects']); - } - - if ($config['allow_redirects'] === false) { - $curlOptions[CURLOPT_FOLLOWLOCATION] = 0; - } else { - $curlOptions[CURLOPT_FOLLOWLOCATION] = 1; - $curlOptions[CURLOPT_MAXREDIRS] = $settings['max']; - - if ($settings['strict'] === true) { - $curlOptions[CURLOPT_POSTREDIR] = 1 | 2 | 4; - } - - $protocols = 0; - - foreach ($settings['protocols'] as $proto) { - $protocols += constant('CURLPROTO_' . strtoupper($proto)); - } - - $curlOptions[CURLOPT_REDIR_PROTOCOLS] = $protocols; - } - } - - // Timeout - $curlOptions[CURLOPT_TIMEOUT_MS] = (float) $config['timeout'] * 1000; - - // Connection Timeout - $curlOptions[CURLOPT_CONNECTTIMEOUT_MS] = (float) $config['connect_timeout'] * 1000; - - // Post Data - application/x-www-form-urlencoded - if (! empty($config['form_params']) && is_array($config['form_params'])) { - $postFields = http_build_query($config['form_params']); - $curlOptions[CURLOPT_POSTFIELDS] = $postFields; - - // Ensure content-length is set, since CURL doesn't seem to - // calculate it when HTTPHEADER is set. - $this->setHeader('Content-Length', (string) strlen($postFields)); - $this->setHeader('Content-Type', 'application/x-www-form-urlencoded'); - } - - // Post Data - multipart/form-data - if (! empty($config['multipart']) && is_array($config['multipart'])) { - // setting the POSTFIELDS option automatically sets multipart - $curlOptions[CURLOPT_POSTFIELDS] = $config['multipart']; - } - - // HTTP Errors - $curlOptions[CURLOPT_FAILONERROR] = array_key_exists('http_errors', $config) ? (bool) $config['http_errors'] : true; - - // JSON - if (isset($config['json'])) { - // Will be set as the body in `applyBody()` - $json = json_encode($config['json']); - $this->setBody($json); - $this->setHeader('Content-Type', 'application/json'); - $this->setHeader('Content-Length', (string) strlen($json)); - } - - // version - if (! empty($config['version'])) { - if ($config['version'] === 1.0) { - $curlOptions[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_1_0; - } elseif ($config['version'] === 1.1) { - $curlOptions[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_1_1; - } elseif ($config['version'] === 2.0) { - $curlOptions[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_2_0; - } - } - - // Cookie - if (isset($config['cookie'])) { - $curlOptions[CURLOPT_COOKIEJAR] = $config['cookie']; - $curlOptions[CURLOPT_COOKIEFILE] = $config['cookie']; - } - - // User Agent - if (isset($config['user_agent'])) { - $curlOptions[CURLOPT_USERAGENT] = $config['user_agent']; - } - - return $curlOptions; - } - - /** - * Does the actual work of initializing cURL, setting the options, - * and grabbing the output. - * - * @codeCoverageIgnore - */ - protected function sendRequest(array $curlOptions = []): string - { - $ch = curl_init(); - - curl_setopt_array($ch, $curlOptions); - - // Send the request and wait for a response. - $output = curl_exec($ch); - - if ($output === false) { - throw HTTPException::forCurlError((string) curl_errno($ch), curl_error($ch)); - } - - curl_close($ch); - - return $output; - } -} diff --git a/system4.4.6/HTTP/ContentSecurityPolicy.php b/system4.4.6/HTTP/ContentSecurityPolicy.php deleted file mode 100644 index f4970bf7..00000000 --- a/system4.4.6/HTTP/ContentSecurityPolicy.php +++ /dev/null @@ -1,817 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP; - -use Config\App; -use Config\ContentSecurityPolicy as ContentSecurityPolicyConfig; - -/** - * Provides tools for working with the Content-Security-Policy header - * to help defeat XSS attacks. - * - * @see http://www.w3.org/TR/CSP/ - * @see http://www.html5rocks.com/en/tutorials/security/content-security-policy/ - * @see http://content-security-policy.com/ - * @see https://www.owasp.org/index.php/Content_Security_Policy - * @see \CodeIgniter\HTTP\ContentSecurityPolicyTest - */ -class ContentSecurityPolicy -{ - /** - * Used for security enforcement - * - * @var array|string - */ - protected $baseURI = []; - - /** - * Used for security enforcement - * - * @var array|string - */ - protected $childSrc = []; - - /** - * Used for security enforcement - * - * @var array - */ - protected $connectSrc = []; - - /** - * Used for security enforcement - * - * @var array|string - */ - protected $defaultSrc = []; - - /** - * Used for security enforcement - * - * @var array|string - */ - protected $fontSrc = []; - - /** - * Used for security enforcement - * - * @var array|string - */ - protected $formAction = []; - - /** - * Used for security enforcement - * - * @var array|string - */ - protected $frameAncestors = []; - - /** - * Used for security enforcement - * - * @var array|string - */ - protected $frameSrc = []; - - /** - * Used for security enforcement - * - * @var array|string - */ - protected $imageSrc = []; - - /** - * Used for security enforcement - * - * @var array|string - */ - protected $mediaSrc = []; - - /** - * Used for security enforcement - * - * @var array|string - */ - protected $objectSrc = []; - - /** - * Used for security enforcement - * - * @var array|string - */ - protected $pluginTypes = []; - - /** - * Used for security enforcement - * - * @var string - */ - protected $reportURI; - - /** - * Used for security enforcement - * - * @var array|string - */ - protected $sandbox = []; - - /** - * Used for security enforcement - * - * @var array|string - */ - protected $scriptSrc = []; - - /** - * Used for security enforcement - * - * @var array|string - */ - protected $styleSrc = []; - - /** - * Used for security enforcement - * - * @var array|string - */ - protected $manifestSrc = []; - - /** - * Used for security enforcement - * - * @var bool - */ - protected $upgradeInsecureRequests = false; - - /** - * Used for security enforcement - * - * @var bool - */ - protected $reportOnly = false; - - /** - * Used for security enforcement - * - * @var array - */ - protected $validSources = [ - 'self', - 'none', - 'unsafe-inline', - 'unsafe-eval', - ]; - - /** - * Used for security enforcement - * - * @var array - */ - protected $nonces = []; - - /** - * Nonce for style - * - * @var string - */ - protected $styleNonce; - - /** - * Nonce for script - * - * @var string - */ - protected $scriptNonce; - - /** - * Nonce tag for style - * - * @var string - */ - protected $styleNonceTag = '{csp-style-nonce}'; - - /** - * Nonce tag for script - * - * @var string - */ - protected $scriptNonceTag = '{csp-script-nonce}'; - - /** - * Replace nonce tag automatically - * - * @var bool - */ - protected $autoNonce = true; - - /** - * An array of header info since we have - * to build ourself before passing to Response. - * - * @var array - */ - protected $tempHeaders = []; - - /** - * An array of header info to build - * that should only be reported. - * - * @var array - */ - protected $reportOnlyHeaders = []; - - /** - * Whether Content Security Policy is being enforced. - * - * @var bool - */ - protected $CSPEnabled = false; - - /** - * Constructor. - * - * Stores our default values from the Config file. - */ - public function __construct(ContentSecurityPolicyConfig $config) - { - $appConfig = config(App::class); - $this->CSPEnabled = $appConfig->CSPEnabled; - - foreach (get_object_vars($config) as $setting => $value) { - if (property_exists($this, $setting)) { - $this->{$setting} = $value; - } - } - - if (! is_array($this->styleSrc)) { - $this->styleSrc = [$this->styleSrc]; - } - - if (! is_array($this->scriptSrc)) { - $this->scriptSrc = [$this->scriptSrc]; - } - } - - /** - * Whether Content Security Policy is being enforced. - */ - public function enabled(): bool - { - return $this->CSPEnabled; - } - - /** - * Get the nonce for the style tag. - */ - public function getStyleNonce(): string - { - if ($this->styleNonce === null) { - $this->styleNonce = bin2hex(random_bytes(12)); - $this->styleSrc[] = 'nonce-' . $this->styleNonce; - } - - return $this->styleNonce; - } - - /** - * Get the nonce for the script tag. - */ - public function getScriptNonce(): string - { - if ($this->scriptNonce === null) { - $this->scriptNonce = bin2hex(random_bytes(12)); - $this->scriptSrc[] = 'nonce-' . $this->scriptNonce; - } - - return $this->scriptNonce; - } - - /** - * Compiles and sets the appropriate headers in the request. - * - * Should be called just prior to sending the response to the user agent. - * - * @return void - */ - public function finalize(ResponseInterface $response) - { - if ($this->autoNonce) { - $this->generateNonces($response); - } - - $this->buildHeaders($response); - } - - /** - * If TRUE, nothing will be restricted. Instead all violations will - * be reported to the reportURI for monitoring. This is useful when - * you are just starting to implement the policy, and will help - * determine what errors need to be addressed before you turn on - * all filtering. - * - * @return $this - */ - public function reportOnly(bool $value = true) - { - $this->reportOnly = $value; - - return $this; - } - - /** - * Adds a new base_uri value. Can be either a URI class or a simple string. - * - * base_uri restricts the URLs that can appear in a page's <base> element. - * - * @see http://www.w3.org/TR/CSP/#directive-base-uri - * - * @param array|string $uri - * - * @return $this - */ - public function addBaseURI($uri, ?bool $explicitReporting = null) - { - $this->addOption($uri, 'baseURI', $explicitReporting ?? $this->reportOnly); - - return $this; - } - - /** - * Adds a new valid endpoint for a form's action. Can be either - * a URI class or a simple string. - * - * child-src lists the URLs for workers and embedded frame contents. - * For example: child-src https://youtube.com would enable embedding - * videos from YouTube but not from other origins. - * - * @see http://www.w3.org/TR/CSP/#directive-child-src - * - * @param array|string $uri - * - * @return $this - */ - public function addChildSrc($uri, ?bool $explicitReporting = null) - { - $this->addOption($uri, 'childSrc', $explicitReporting ?? $this->reportOnly); - - return $this; - } - - /** - * Adds a new valid endpoint for a form's action. Can be either - * a URI class or a simple string. - * - * connect-src limits the origins to which you can connect - * (via XHR, WebSockets, and EventSource). - * - * @see http://www.w3.org/TR/CSP/#directive-connect-src - * - * @param array|string $uri - * - * @return $this - */ - public function addConnectSrc($uri, ?bool $explicitReporting = null) - { - $this->addOption($uri, 'connectSrc', $explicitReporting ?? $this->reportOnly); - - return $this; - } - - /** - * Adds a new valid endpoint for a form's action. Can be either - * a URI class or a simple string. - * - * default_src is the URI that is used for many of the settings when - * no other source has been set. - * - * @see http://www.w3.org/TR/CSP/#directive-default-src - * - * @param array|string $uri - * - * @return $this - */ - public function setDefaultSrc($uri, ?bool $explicitReporting = null) - { - $this->defaultSrc = [(string) $uri => $explicitReporting ?? $this->reportOnly]; - - return $this; - } - - /** - * Adds a new valid endpoint for a form's action. Can be either - * a URI class or a simple string. - * - * font-src specifies the origins that can serve web fonts. - * - * @see http://www.w3.org/TR/CSP/#directive-font-src - * - * @param array|string $uri - * - * @return $this - */ - public function addFontSrc($uri, ?bool $explicitReporting = null) - { - $this->addOption($uri, 'fontSrc', $explicitReporting ?? $this->reportOnly); - - return $this; - } - - /** - * Adds a new valid endpoint for a form's action. Can be either - * a URI class or a simple string. - * - * @see http://www.w3.org/TR/CSP/#directive-form-action - * - * @param array|string $uri - * - * @return $this - */ - public function addFormAction($uri, ?bool $explicitReporting = null) - { - $this->addOption($uri, 'formAction', $explicitReporting ?? $this->reportOnly); - - return $this; - } - - /** - * Adds a new resource that should allow embedding the resource using - * <frame>, <iframe>, <object>, <embed>, or <applet> - * - * @see http://www.w3.org/TR/CSP/#directive-frame-ancestors - * - * @param array|string $uri - * - * @return $this - */ - public function addFrameAncestor($uri, ?bool $explicitReporting = null) - { - $this->addOption($uri, 'frameAncestors', $explicitReporting ?? $this->reportOnly); - - return $this; - } - - /** - * Adds a new valid endpoint for valid frame sources. Can be either - * a URI class or a simple string. - * - * @see http://www.w3.org/TR/CSP/#directive-frame-src - * - * @param array|string $uri - * - * @return $this - */ - public function addFrameSrc($uri, ?bool $explicitReporting = null) - { - $this->addOption($uri, 'frameSrc', $explicitReporting ?? $this->reportOnly); - - return $this; - } - - /** - * Adds a new valid endpoint for valid image sources. Can be either - * a URI class or a simple string. - * - * @see http://www.w3.org/TR/CSP/#directive-img-src - * - * @param array|string $uri - * - * @return $this - */ - public function addImageSrc($uri, ?bool $explicitReporting = null) - { - $this->addOption($uri, 'imageSrc', $explicitReporting ?? $this->reportOnly); - - return $this; - } - - /** - * Adds a new valid endpoint for valid video and audio. Can be either - * a URI class or a simple string. - * - * @see http://www.w3.org/TR/CSP/#directive-media-src - * - * @param array|string $uri - * - * @return $this - */ - public function addMediaSrc($uri, ?bool $explicitReporting = null) - { - $this->addOption($uri, 'mediaSrc', $explicitReporting ?? $this->reportOnly); - - return $this; - } - - /** - * Adds a new valid endpoint for manifest sources. Can be either - * a URI class or simple string. - * - * @see https://www.w3.org/TR/CSP/#directive-manifest-src - * - * @param array|string $uri - * - * @return $this - */ - public function addManifestSrc($uri, ?bool $explicitReporting = null) - { - $this->addOption($uri, 'manifestSrc', $explicitReporting ?? $this->reportOnly); - - return $this; - } - - /** - * Adds a new valid endpoint for Flash and other plugin sources. Can be either - * a URI class or a simple string. - * - * @see http://www.w3.org/TR/CSP/#directive-object-src - * - * @param array|string $uri - * - * @return $this - */ - public function addObjectSrc($uri, ?bool $explicitReporting = null) - { - $this->addOption($uri, 'objectSrc', $explicitReporting ?? $this->reportOnly); - - return $this; - } - - /** - * Limits the types of plugins that can be used. Can be either - * a URI class or a simple string. - * - * @see http://www.w3.org/TR/CSP/#directive-plugin-types - * - * @param array|string $mime One or more plugin mime types, separate by spaces - * - * @return $this - */ - public function addPluginType($mime, ?bool $explicitReporting = null) - { - $this->addOption($mime, 'pluginTypes', $explicitReporting ?? $this->reportOnly); - - return $this; - } - - /** - * Specifies a URL where a browser will send reports when a content - * security policy is violated. Can be either a URI class or a simple string. - * - * @see http://www.w3.org/TR/CSP/#directive-report-uri - * - * @return $this - */ - public function setReportURI(string $uri) - { - $this->reportURI = $uri; - - return $this; - } - - /** - * specifies an HTML sandbox policy that the user agent applies to - * the protected resource. - * - * @see http://www.w3.org/TR/CSP/#directive-sandbox - * - * @param array|string $flags An array of sandbox flags that can be added to the directive. - * - * @return $this - */ - public function addSandbox($flags, ?bool $explicitReporting = null) - { - $this->addOption($flags, 'sandbox', $explicitReporting ?? $this->reportOnly); - - return $this; - } - - /** - * Adds a new valid endpoint for javascript file sources. Can be either - * a URI class or a simple string. - * - * @see http://www.w3.org/TR/CSP/#directive-connect-src - * - * @param array|string $uri - * - * @return $this - */ - public function addScriptSrc($uri, ?bool $explicitReporting = null) - { - $this->addOption($uri, 'scriptSrc', $explicitReporting ?? $this->reportOnly); - - return $this; - } - - /** - * Adds a new valid endpoint for CSS file sources. Can be either - * a URI class or a simple string. - * - * @see http://www.w3.org/TR/CSP/#directive-connect-src - * - * @param array|string $uri - * - * @return $this - */ - public function addStyleSrc($uri, ?bool $explicitReporting = null) - { - $this->addOption($uri, 'styleSrc', $explicitReporting ?? $this->reportOnly); - - return $this; - } - - /** - * Sets whether the user agents should rewrite URL schemes, changing - * HTTP to HTTPS. - * - * @return $this - */ - public function upgradeInsecureRequests(bool $value = true) - { - $this->upgradeInsecureRequests = $value; - - return $this; - } - - /** - * DRY method to add an string or array to a class property. - * - * @param array|string $options - * - * @return void - */ - protected function addOption($options, string $target, ?bool $explicitReporting = null) - { - // Ensure we have an array to work with... - if (is_string($this->{$target})) { - $this->{$target} = [$this->{$target}]; - } - - if (is_array($options)) { - foreach ($options as $opt) { - $this->{$target}[$opt] = $explicitReporting ?? $this->reportOnly; - } - } else { - $this->{$target}[$options] = $explicitReporting ?? $this->reportOnly; - } - } - - /** - * Scans the body of the request message and replaces any nonce - * placeholders with actual nonces, that we'll then add to our - * headers. - * - * @return void - */ - protected function generateNonces(ResponseInterface $response) - { - $body = $response->getBody(); - - if (empty($body)) { - return; - } - - // Replace style and script placeholders with nonces - $pattern = '/(' . preg_quote($this->styleNonceTag, '/') - . '|' . preg_quote($this->scriptNonceTag, '/') . ')/'; - - $body = preg_replace_callback($pattern, function ($match) { - $nonce = $match[0] === $this->styleNonceTag ? $this->getStyleNonce() : $this->getScriptNonce(); - - return "nonce=\"{$nonce}\""; - }, $body); - - $response->setBody($body); - } - - /** - * Based on the current state of the elements, will add the appropriate - * Content-Security-Policy and Content-Security-Policy-Report-Only headers - * with their values to the response object. - * - * @return void - */ - protected function buildHeaders(ResponseInterface $response) - { - // Ensure both headers are available and arrays... - $response->setHeader('Content-Security-Policy', []); - $response->setHeader('Content-Security-Policy-Report-Only', []); - - $directives = [ - 'base-uri' => 'baseURI', - 'child-src' => 'childSrc', - 'connect-src' => 'connectSrc', - 'default-src' => 'defaultSrc', - 'font-src' => 'fontSrc', - 'form-action' => 'formAction', - 'frame-ancestors' => 'frameAncestors', - 'frame-src' => 'frameSrc', - 'img-src' => 'imageSrc', - 'media-src' => 'mediaSrc', - 'object-src' => 'objectSrc', - 'plugin-types' => 'pluginTypes', - 'script-src' => 'scriptSrc', - 'style-src' => 'styleSrc', - 'manifest-src' => 'manifestSrc', - 'sandbox' => 'sandbox', - 'report-uri' => 'reportURI', - ]; - - // inject default base & default URIs if needed - if (empty($this->baseURI)) { - $this->baseURI = 'self'; - } - - if (empty($this->defaultSrc)) { - $this->defaultSrc = 'self'; - } - - foreach ($directives as $name => $property) { - if (! empty($this->{$property})) { - $this->addToHeader($name, $this->{$property}); - } - } - - // Compile our own header strings here since if we just - // append it to the response, it will be joined with - // commas, not semi-colons as we need. - if (! empty($this->tempHeaders)) { - $header = ''; - - foreach ($this->tempHeaders as $name => $value) { - $header .= " {$name} {$value};"; - } - - // add token only if needed - if ($this->upgradeInsecureRequests) { - $header .= ' upgrade-insecure-requests;'; - } - - $response->appendHeader('Content-Security-Policy', $header); - } - - if (! empty($this->reportOnlyHeaders)) { - $header = ''; - - foreach ($this->reportOnlyHeaders as $name => $value) { - $header .= " {$name} {$value};"; - } - - $response->appendHeader('Content-Security-Policy-Report-Only', $header); - } - - $this->tempHeaders = []; - $this->reportOnlyHeaders = []; - } - - /** - * Adds a directive and it's options to the appropriate header. The $values - * array might have options that are geared toward either the regular or the - * reportOnly header, since it's viable to have both simultaneously. - * - * @param array|string|null $values - * - * @return void - */ - protected function addToHeader(string $name, $values = null) - { - if (is_string($values)) { - $values = [$values => $this->reportOnly]; - } - - $sources = []; - $reportSources = []; - - foreach ($values as $value => $reportOnly) { - if (is_numeric($value) && is_string($reportOnly) && ($reportOnly !== '')) { - $value = $reportOnly; - $reportOnly = $this->reportOnly; - } - - if (strpos($value, 'nonce-') === 0) { - $value = "'{$value}'"; - } - - if ($reportOnly === true) { - $reportSources[] = in_array($value, $this->validSources, true) ? "'{$value}'" : $value; - } else { - $sources[] = in_array($value, $this->validSources, true) ? "'{$value}'" : $value; - } - } - - if ($sources !== []) { - $this->tempHeaders[$name] = implode(' ', $sources); - } - - if ($reportSources !== []) { - $this->reportOnlyHeaders[$name] = implode(' ', $reportSources); - } - } -} diff --git a/system4.4.6/HTTP/DownloadResponse.php b/system4.4.6/HTTP/DownloadResponse.php deleted file mode 100644 index 14dc3fec..00000000 --- a/system4.4.6/HTTP/DownloadResponse.php +++ /dev/null @@ -1,358 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP; - -use CodeIgniter\Exceptions\DownloadException; -use CodeIgniter\Files\File; -use Config\App; -use Config\Mimes; - -/** - * HTTP response when a download is requested. - * - * @see \CodeIgniter\HTTP\DownloadResponseTest - */ -class DownloadResponse extends Response -{ - /** - * Download file name - */ - private string $filename; - - /** - * Download for file - */ - private ?File $file = null; - - /** - * mime set flag - */ - private bool $setMime; - - /** - * Download for binary - */ - private ?string $binary = null; - - /** - * Download charset - */ - private string $charset = 'UTF-8'; - - /** - * Download reason - * - * @var string - */ - protected $reason = 'OK'; - - /** - * The current status code for this response. - * - * @var int - */ - protected $statusCode = 200; - - /** - * Constructor. - */ - public function __construct(string $filename, bool $setMime) - { - parent::__construct(config(App::class)); - - $this->filename = $filename; - $this->setMime = $setMime; - - // Make sure the content type is either specified or detected - $this->removeHeader('Content-Type'); - } - - /** - * set download for binary string. - * - * @return void - */ - public function setBinary(string $binary) - { - if ($this->file !== null) { - throw DownloadException::forCannotSetBinary(); - } - - $this->binary = $binary; - } - - /** - * set download for file. - * - * @return void - */ - public function setFilePath(string $filepath) - { - if ($this->binary !== null) { - throw DownloadException::forCannotSetFilePath($filepath); - } - - $this->file = new File($filepath, true); - } - - /** - * set name for the download. - * - * @return $this - */ - public function setFileName(string $filename) - { - $this->filename = $filename; - - return $this; - } - - /** - * get content length. - */ - public function getContentLength(): int - { - if (is_string($this->binary)) { - return strlen($this->binary); - } - - if ($this->file instanceof File) { - return $this->file->getSize(); - } - - return 0; - } - - /** - * Set content type by guessing mime type from file extension - */ - private function setContentTypeByMimeType(): void - { - $mime = null; - $charset = ''; - - if ($this->setMime === true && ($lastDotPosition = strrpos($this->filename, '.')) !== false) { - $mime = Mimes::guessTypeFromExtension(substr($this->filename, $lastDotPosition + 1)); - $charset = $this->charset; - } - - if (! is_string($mime)) { - // Set the default MIME type to send - $mime = 'application/octet-stream'; - $charset = ''; - } - - $this->setContentType($mime, $charset); - } - - /** - * get download filename. - */ - private function getDownloadFileName(): string - { - $filename = $this->filename; - $x = explode('.', $this->filename); - $extension = end($x); - - /* It was reported that browsers on Android 2.1 (and possibly older as well) - * need to have the filename extension upper-cased in order to be able to - * download it. - * - * Reference: http://digiblog.de/2011/04/19/android-and-the-download-file-headers/ - */ - // @todo: depend super global - if (count($x) !== 1 && isset($_SERVER['HTTP_USER_AGENT']) - && preg_match('/Android\s(1|2\.[01])/', $_SERVER['HTTP_USER_AGENT'])) { - $x[count($x) - 1] = strtoupper($extension); - $filename = implode('.', $x); - } - - return $filename; - } - - /** - * get Content-Disposition Header string. - */ - private function getContentDisposition(): string - { - $downloadFilename = $this->getDownloadFileName(); - - $utf8Filename = $downloadFilename; - - if (strtoupper($this->charset) !== 'UTF-8') { - $utf8Filename = mb_convert_encoding($downloadFilename, 'UTF-8', $this->charset); - } - - $result = sprintf('attachment; filename="%s"', $downloadFilename); - - if ($utf8Filename) { - $result .= '; filename*=UTF-8\'\'' . rawurlencode($utf8Filename); - } - - return $result; - } - - /** - * Disallows status changing. - * - * @throws DownloadException - */ - public function setStatusCode(int $code, string $reason = '') - { - throw DownloadException::forCannotSetStatusCode($code, $reason); - } - - /** - * Sets the Content Type header for this response with the mime type - * and, optionally, the charset. - * - * @return ResponseInterface - */ - public function setContentType(string $mime, string $charset = 'UTF-8') - { - parent::setContentType($mime, $charset); - - if ($charset !== '') { - $this->charset = $charset; - } - - return $this; - } - - /** - * Sets the appropriate headers to ensure this response - * is not cached by the browsers. - */ - public function noCache(): self - { - $this->removeHeader('Cache-Control'); - $this->setHeader('Cache-Control', ['private', 'no-transform', 'no-store', 'must-revalidate']); - - return $this; - } - - /** - * Disables cache configuration. - * - * @throws DownloadException - */ - public function setCache(array $options = []) - { - throw DownloadException::forCannotSetCache(); - } - - /** - * {@inheritDoc} - * - * @return $this - * - * @todo Do downloads need CSP or Cookies? Compare with ResponseTrait::send() - */ - public function send() - { - // Turn off output buffering completely, even if php.ini output_buffering is not off - if (ENVIRONMENT !== 'testing') { - while (ob_get_level() > 0) { - ob_end_clean(); - } - } - - $this->buildHeaders(); - $this->sendHeaders(); - $this->sendBody(); - - return $this; - } - - /** - * set header for file download. - * - * @return void - */ - public function buildHeaders() - { - if (! $this->hasHeader('Content-Type')) { - $this->setContentTypeByMimeType(); - } - - if (! $this->hasHeader('Content-Disposition')) { - $this->setHeader('Content-Disposition', $this->getContentDisposition()); - } - - $this->setHeader('Expires-Disposition', '0'); - $this->setHeader('Content-Transfer-Encoding', 'binary'); - $this->setHeader('Content-Length', (string) $this->getContentLength()); - $this->noCache(); - } - - /** - * output download file text. - * - * @return DownloadResponse - * - * @throws DownloadException - */ - public function sendBody() - { - if ($this->binary !== null) { - return $this->sendBodyByBinary(); - } - - if ($this->file !== null) { - return $this->sendBodyByFilePath(); - } - - throw DownloadException::forNotFoundDownloadSource(); - } - - /** - * output download text by file. - * - * @return DownloadResponse - */ - private function sendBodyByFilePath() - { - $splFileObject = $this->file->openFile('rb'); - - // Flush 1MB chunks of data - while (! $splFileObject->eof() && ($data = $splFileObject->fread(1_048_576)) !== false) { - echo $data; - unset($data); - } - - return $this; - } - - /** - * output download text by binary - * - * @return DownloadResponse - */ - private function sendBodyByBinary() - { - echo $this->binary; - - return $this; - } - - /** - * Sets the response header to display the file in the browser. - * - * @return DownloadResponse - */ - public function inline() - { - $this->setHeader('Content-Disposition', 'inline'); - - return $this; - } -} diff --git a/system4.4.6/HTTP/Exceptions/HTTPException.php b/system4.4.6/HTTP/Exceptions/HTTPException.php deleted file mode 100644 index 3fcfe73f..00000000 --- a/system4.4.6/HTTP/Exceptions/HTTPException.php +++ /dev/null @@ -1,242 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP\Exceptions; - -use CodeIgniter\Exceptions\FrameworkException; - -/** - * Things that can go wrong with HTTP - */ -class HTTPException extends FrameworkException -{ - /** - * For CurlRequest - * - * @return HTTPException - * - * @codeCoverageIgnore - */ - public static function forMissingCurl() - { - return new static(lang('HTTP.missingCurl')); - } - - /** - * For CurlRequest - * - * @return HTTPException - */ - public static function forSSLCertNotFound(string $cert) - { - return new static(lang('HTTP.sslCertNotFound', [$cert])); - } - - /** - * For CurlRequest - * - * @return HTTPException - */ - public static function forInvalidSSLKey(string $key) - { - return new static(lang('HTTP.invalidSSLKey', [$key])); - } - - /** - * For CurlRequest - * - * @return HTTPException - * - * @codeCoverageIgnore - */ - public static function forCurlError(string $errorNum, string $error) - { - return new static(lang('HTTP.curlError', [$errorNum, $error])); - } - - /** - * For IncomingRequest - * - * @return HTTPException - */ - public static function forInvalidNegotiationType(string $type) - { - return new static(lang('HTTP.invalidNegotiationType', [$type])); - } - - /** - * Thrown in IncomingRequest when the json_decode() produces - * an error code other than JSON_ERROR_NONE. - * - * @param string $error The error message - * - * @return static - */ - public static function forInvalidJSON(?string $error = null) - { - return new static(lang('HTTP.invalidJSON', [$error])); - } - - /** - * For Message - * - * @return HTTPException - */ - public static function forInvalidHTTPProtocol(string $invalidVersion) - { - return new static(lang('HTTP.invalidHTTPProtocol', [$invalidVersion])); - } - - /** - * For Negotiate - * - * @return HTTPException - */ - public static function forEmptySupportedNegotiations() - { - return new static(lang('HTTP.emptySupportedNegotiations')); - } - - /** - * For RedirectResponse - * - * @return HTTPException - */ - public static function forInvalidRedirectRoute(string $route) - { - return new static(lang('HTTP.invalidRoute', [$route])); - } - - /** - * For Response - * - * @return HTTPException - */ - public static function forMissingResponseStatus() - { - return new static(lang('HTTP.missingResponseStatus')); - } - - /** - * For Response - * - * @return HTTPException - */ - public static function forInvalidStatusCode(int $code) - { - return new static(lang('HTTP.invalidStatusCode', [$code])); - } - - /** - * For Response - * - * @return HTTPException - */ - public static function forUnkownStatusCode(int $code) - { - return new static(lang('HTTP.unknownStatusCode', [$code])); - } - - /** - * For URI - * - * @return HTTPException - */ - public static function forUnableToParseURI(string $uri) - { - return new static(lang('HTTP.cannotParseURI', [$uri])); - } - - /** - * For URI - * - * @return HTTPException - */ - public static function forURISegmentOutOfRange(int $segment) - { - return new static(lang('HTTP.segmentOutOfRange', [$segment])); - } - - /** - * For URI - * - * @return HTTPException - */ - public static function forInvalidPort(int $port) - { - return new static(lang('HTTP.invalidPort', [$port])); - } - - /** - * For URI - * - * @return HTTPException - */ - public static function forMalformedQueryString() - { - return new static(lang('HTTP.malformedQueryString')); - } - - /** - * For Uploaded file move - * - * @return HTTPException - */ - public static function forAlreadyMoved() - { - return new static(lang('HTTP.alreadyMoved')); - } - - /** - * For Uploaded file move - * - * @return HTTPException - */ - public static function forInvalidFile(?string $path = null) - { - return new static(lang('HTTP.invalidFile')); - } - - /** - * For Uploaded file move - * - * @return HTTPException - */ - public static function forMoveFailed(string $source, string $target, string $error) - { - return new static(lang('HTTP.moveFailed', [$source, $target, $error])); - } - - /** - * For Invalid SameSite attribute setting - * - * @return HTTPException - * - * @deprecated Use `CookieException::forInvalidSameSite()` instead. - * - * @codeCoverageIgnore - */ - public static function forInvalidSameSiteSetting(string $samesite) - { - return new static(lang('Security.invalidSameSiteSetting', [$samesite])); - } - - /** - * Thrown when the JSON format is not supported. - * This is specifically for cases where data validation is expected to work with key-value structures. - * - * @return HTTPException - */ - public static function forUnsupportedJSONFormat() - { - return new static(lang('HTTP.unsupportedJSONFormat')); - } -} diff --git a/system4.4.6/HTTP/Exceptions/RedirectException.php b/system4.4.6/HTTP/Exceptions/RedirectException.php deleted file mode 100644 index 605f40ea..00000000 --- a/system4.4.6/HTTP/Exceptions/RedirectException.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP\Exceptions; - -use CodeIgniter\Exceptions\HTTPExceptionInterface; -use CodeIgniter\HTTP\ResponsableInterface; -use CodeIgniter\HTTP\ResponseInterface; -use Config\Services; -use Exception; -use InvalidArgumentException; -use LogicException; -use Throwable; - -/** - * RedirectException - */ -class RedirectException extends Exception implements ResponsableInterface, HTTPExceptionInterface -{ - /** - * HTTP status code for redirects - * - * @var int - */ - protected $code = 302; - - protected ?ResponseInterface $response = null; - - /** - * @param ResponseInterface|string $message Response object or a string containing a relative URI. - * @param int $code HTTP status code to redirect if $message is a string. - */ - public function __construct($message = '', int $code = 0, ?Throwable $previous = null) - { - if (! is_string($message) && ! $message instanceof ResponseInterface) { - throw new InvalidArgumentException( - 'RedirectException::__construct() first argument must be a string or ResponseInterface', - 0, - $this - ); - } - - if ($message instanceof ResponseInterface) { - $this->response = $message; - $message = ''; - - if ($this->response->getHeaderLine('Location') === '' && $this->response->getHeaderLine('Refresh') === '') { - throw new LogicException( - 'The Response object passed to RedirectException does not contain a redirect address.' - ); - } - - if ($this->response->getStatusCode() < 301 || $this->response->getStatusCode() > 308) { - $this->response->setStatusCode($this->code); - } - } - - parent::__construct($message, $code, $previous); - } - - public function getResponse(): ResponseInterface - { - if (null === $this->response) { - $this->response = Services::response() - ->redirect(base_url($this->getMessage()), 'auto', $this->getCode()); - } - - Services::logger()->info( - 'REDIRECTED ROUTE at ' - . ($this->response->getHeaderLine('Location') ?: substr($this->response->getHeaderLine('Refresh'), 6)) - ); - - return $this->response; - } -} diff --git a/system4.4.6/HTTP/Files/FileCollection.php b/system4.4.6/HTTP/Files/FileCollection.php deleted file mode 100644 index 124381ec..00000000 --- a/system4.4.6/HTTP/Files/FileCollection.php +++ /dev/null @@ -1,260 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP\Files; - -use RecursiveArrayIterator; -use RecursiveIteratorIterator; - -/** - * Class FileCollection - * - * Provides easy access to uploaded files for a request. - * - * @see \CodeIgniter\HTTP\Files\FileCollectionTest - */ -class FileCollection -{ - /** - * An array of UploadedFile instances for any files - * uploaded as part of this request. - * Populated the first time either files(), file(), or hasFile() - * is called. - * - * @var array|null - */ - protected $files; - - /** - * Returns an array of all uploaded files that were found. - * Each element in the array will be an instance of UploadedFile. - * The key of each element will be the client filename. - * - * @return array|null - */ - public function all() - { - $this->populateFiles(); - - return $this->files; - } - - /** - * Attempts to get a single file from the collection of uploaded files. - * - * @return UploadedFile|null - */ - public function getFile(string $name) - { - $this->populateFiles(); - - if ($this->hasFile($name)) { - if (strpos($name, '.') !== false) { - $name = explode('.', $name); - $uploadedFile = $this->getValueDotNotationSyntax($name, $this->files); - - return $uploadedFile instanceof UploadedFile ? $uploadedFile : null; - } - - if (array_key_exists($name, $this->files)) { - $uploadedFile = $this->files[$name]; - - return $uploadedFile instanceof UploadedFile ? $uploadedFile : null; - } - } - - return null; - } - - /** - * Verify if a file exist in the collection of uploaded files and is have been uploaded with multiple option. - * - * @return list<UploadedFile>|null - */ - public function getFileMultiple(string $name) - { - $this->populateFiles(); - - if ($this->hasFile($name)) { - if (strpos($name, '.') !== false) { - $name = explode('.', $name); - $uploadedFile = $this->getValueDotNotationSyntax($name, $this->files); - - return (is_array($uploadedFile) && ($uploadedFile[array_key_first($uploadedFile)] instanceof UploadedFile)) ? - $uploadedFile : null; - } - - if (array_key_exists($name, $this->files)) { - $uploadedFile = $this->files[$name]; - - return (is_array($uploadedFile) && ($uploadedFile[array_key_first($uploadedFile)] instanceof UploadedFile)) ? - $uploadedFile : null; - } - } - - return null; - } - - /** - * Checks whether an uploaded file with name $fileID exists in - * this request. - * - * @param string $fileID The name of the uploaded file (from the input) - */ - public function hasFile(string $fileID): bool - { - $this->populateFiles(); - - if (strpos($fileID, '.') !== false) { - $segments = explode('.', $fileID); - - $el = $this->files; - - foreach ($segments as $segment) { - if (! array_key_exists($segment, $el)) { - return false; - } - - $el = $el[$segment]; - } - - return true; - } - - return isset($this->files[$fileID]); - } - - /** - * Taking information from the $_FILES array, it creates an instance - * of UploadedFile for each one, saving the results to this->files. - * - * Called by files(), file(), and hasFile() - * - * @return void - */ - protected function populateFiles() - { - if (is_array($this->files)) { - return; - } - - $this->files = []; - - if ($_FILES === []) { - return; - } - - $files = $this->fixFilesArray($_FILES); - - foreach ($files as $name => $file) { - $this->files[$name] = $this->createFileObject($file); - } - } - - /** - * Given a file array, will create UploadedFile instances. Will - * loop over an array and create objects for each. - * - * @return UploadedFile|UploadedFile[] - */ - protected function createFileObject(array $array) - { - if (! isset($array['name'])) { - $output = []; - - foreach ($array as $key => $values) { - if (! is_array($values)) { - continue; - } - - $output[$key] = $this->createFileObject($values); - } - - return $output; - } - - return new UploadedFile( - $array['tmp_name'] ?? null, - $array['name'] ?? null, - $array['type'] ?? null, - $array['size'] ?? null, - $array['error'] ?? null, - $array['full_path'] ?? null - ); - } - - /** - * Reformats the odd $_FILES array into something much more like - * we would expect, with each object having its own array. - * - * Thanks to Jack Sleight on the PHP Manual page for the basis - * of this method. - * - * @see http://php.net/manual/en/reserved.variables.files.php#118294 - */ - protected function fixFilesArray(array $data): array - { - $output = []; - - foreach ($data as $name => $array) { - foreach ($array as $field => $value) { - $pointer = &$output[$name]; - - if (! is_array($value)) { - $pointer[$field] = $value; - - continue; - } - - $stack = [&$pointer]; - $iterator = new RecursiveIteratorIterator( - new RecursiveArrayIterator($value), - RecursiveIteratorIterator::SELF_FIRST - ); - - foreach ($iterator as $key => $val) { - array_splice($stack, $iterator->getDepth() + 1); - $pointer = &$stack[count($stack) - 1]; - $pointer = &$pointer[$key]; - $stack[] = &$pointer; - - // RecursiveIteratorIterator::hasChildren() can be used. RecursiveIteratorIterator - // forwards all unknown method calls to the underlying RecursiveIterator internally. - // See https://github.com/php/doc-en/issues/787#issuecomment-881446121 - if (! $iterator->hasChildren()) { - $pointer[$field] = $val; - } - } - } - } - - return $output; - } - - /** - * Navigate through an array looking for a particular index - * - * @param array $index The index sequence we are navigating down - * @param array $value The portion of the array to process - * - * @return list<UploadedFile>|UploadedFile|null - */ - protected function getValueDotNotationSyntax(array $index, array $value) - { - $currentIndex = array_shift($index); - - if (isset($currentIndex) && is_array($index) && $index && is_array($value[$currentIndex]) && $value[$currentIndex]) { - return $this->getValueDotNotationSyntax($index, $value[$currentIndex]); - } - - return $value[$currentIndex] ?? null; - } -} diff --git a/system4.4.6/HTTP/Files/UploadedFile.php b/system4.4.6/HTTP/Files/UploadedFile.php deleted file mode 100644 index 70ece748..00000000 --- a/system4.4.6/HTTP/Files/UploadedFile.php +++ /dev/null @@ -1,363 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP\Files; - -use CodeIgniter\Files\File; -use CodeIgniter\HTTP\Exceptions\HTTPException; -use Config\Mimes; -use Exception; -use InvalidArgumentException; -use RuntimeException; - -/** - * Value object representing a single file uploaded through an - * HTTP request. Used by the IncomingRequest class to - * provide files. - * - * Typically, implementors will extend the SplFileInfo class. - */ -class UploadedFile extends File implements UploadedFileInterface -{ - /** - * The path to the temporary file. - * - * @var string - */ - protected $path; - - /** - * The webkit relative path of the file. - * - * @var string - */ - protected $clientPath; - - /** - * The original filename as provided by the client. - * - * @var string - */ - protected $originalName; - - /** - * The filename given to a file during a move. - * - * @var string - */ - protected $name; - - /** - * The type of file as provided by PHP - * - * @var string - */ - protected $originalMimeType; - - /** - * The error constant of the upload - * (one of PHP's UPLOADERRXXX constants) - * - * @var int - */ - protected $error; - - /** - * Whether the file has been moved already or not. - * - * @var bool - */ - protected $hasMoved = false; - - /** - * Accepts the file information as would be filled in from the $_FILES array. - * - * @param string $path The temporary location of the uploaded file. - * @param string $originalName The client-provided filename. - * @param string $mimeType The type of file as provided by PHP - * @param int $size The size of the file, in bytes - * @param int $error The error constant of the upload (one of PHP's UPLOADERRXXX constants) - * @param string $clientPath The webkit relative path of the uploaded file. - */ - public function __construct(string $path, string $originalName, ?string $mimeType = null, ?int $size = null, ?int $error = null, ?string $clientPath = null) - { - $this->path = $path; - $this->name = $originalName; - $this->originalName = $originalName; - $this->originalMimeType = $mimeType; - $this->size = $size; - $this->error = $error; - $this->clientPath = $clientPath; - - parent::__construct($path, false); - } - - /** - * Move the uploaded file to a new location. - * - * $targetPath may be an absolute path, or a relative path. If it is a - * relative path, resolution should be the same as used by PHP's rename() - * function. - * - * The original file MUST be removed on completion. - * - * If this method is called more than once, any subsequent calls MUST raise - * an exception. - * - * When used in an SAPI environment where $_FILES is populated, when writing - * files via moveTo(), is_uploaded_file() and move_uploaded_file() SHOULD be - * used to ensure permissions and upload status are verified correctly. - * - * If you wish to move to a stream, use getStream(), as SAPI operations - * cannot guarantee writing to stream destinations. - * - * @see http://php.net/is_uploaded_file - * @see http://php.net/move_uploaded_file - * - * @param string $targetPath Path to which to move the uploaded file. - * @param string $name the name to rename the file to. - * @param bool $overwrite State for indicating whether to overwrite the previously generated file with the same - * name or not. - * - * @return bool - * - * @throws InvalidArgumentException if the $path specified is invalid. - * @throws RuntimeException on any error during the move operation. - * @throws RuntimeException on the second or subsequent call to the method. - */ - public function move(string $targetPath, ?string $name = null, bool $overwrite = false) - { - $targetPath = rtrim($targetPath, '/') . '/'; - $targetPath = $this->setPath($targetPath); // set the target path - - if ($this->hasMoved) { - throw HTTPException::forAlreadyMoved(); - } - - if (! $this->isValid()) { - throw HTTPException::forInvalidFile(); - } - - $name ??= $this->getName(); - $destination = $overwrite ? $targetPath . $name : $this->getDestination($targetPath . $name); - - try { - $this->hasMoved = move_uploaded_file($this->path, $destination); - } catch (Exception $e) { - $error = error_get_last(); - $message = strip_tags($error['message'] ?? ''); - - throw HTTPException::forMoveFailed(basename($this->path), $targetPath, $message); - } - - if ($this->hasMoved === false) { - $message = 'move_uploaded_file() returned false'; - - throw HTTPException::forMoveFailed(basename($this->path), $targetPath, $message); - } - - @chmod($targetPath, 0777 & ~umask()); - - // Success, so store our new information - $this->path = $targetPath; - $this->name = basename($destination); - - return true; - } - - /** - * create file target path if - * the set path does not exist - * - * @return string The path set or created. - */ - protected function setPath(string $path): string - { - if (! is_dir($path)) { - mkdir($path, 0777, true); - // create the index.html file - if (! is_file($path . 'index.html')) { - $file = fopen($path . 'index.html', 'x+b'); - fclose($file); - } - } - - return $path; - } - - /** - * Returns whether the file has been moved or not. If it has, - * the move() method will not work and certain properties, like - * the tempName, will no longer be available. - */ - public function hasMoved(): bool - { - return $this->hasMoved; - } - - /** - * Retrieve the error associated with the uploaded file. - * - * The return value MUST be one of PHP's UPLOAD_ERR_XXX constants. - * - * If the file was uploaded successfully, this method MUST return - * UPLOAD_ERR_OK. - * - * Implementations SHOULD return the value stored in the "error" key of - * the file in the $_FILES array. - * - * @see http://php.net/manual/en/features.file-upload.errors.php - * - * @return int One of PHP's UPLOAD_ERR_XXX constants. - */ - public function getError(): int - { - return $this->error ?? UPLOAD_ERR_OK; - } - - /** - * Get error string - */ - public function getErrorString(): string - { - $errors = [ - UPLOAD_ERR_OK => lang('HTTP.uploadErrOk'), - UPLOAD_ERR_INI_SIZE => lang('HTTP.uploadErrIniSize'), - UPLOAD_ERR_FORM_SIZE => lang('HTTP.uploadErrFormSize'), - UPLOAD_ERR_PARTIAL => lang('HTTP.uploadErrPartial'), - UPLOAD_ERR_NO_FILE => lang('HTTP.uploadErrNoFile'), - UPLOAD_ERR_CANT_WRITE => lang('HTTP.uploadErrCantWrite'), - UPLOAD_ERR_NO_TMP_DIR => lang('HTTP.uploadErrNoTmpDir'), - UPLOAD_ERR_EXTENSION => lang('HTTP.uploadErrExtension'), - ]; - - $error = $this->error ?? UPLOAD_ERR_OK; - - return sprintf($errors[$error] ?? lang('HTTP.uploadErrUnknown'), $this->getName()); - } - - /** - * Returns the mime type as provided by the client. - * This is NOT a trusted value. - * For a trusted version, use getMimeType() instead. - * - * @return string The media type sent by the client or null if none was provided. - */ - public function getClientMimeType(): string - { - return $this->originalMimeType; - } - - /** - * Retrieve the filename. This will typically be the filename sent - * by the client, and should not be trusted. If the file has been - * moved, this will return the final name of the moved file. - * - * @return string The filename sent by the client or null if none was provided. - */ - public function getName(): string - { - return $this->name; - } - - /** - * Returns the name of the file as provided by the client during upload. - */ - public function getClientName(): string - { - return $this->originalName; - } - - /** - * (PHP 8.1+) - * Returns the webkit relative path of the uploaded file on directory uploads. - */ - public function getClientPath(): ?string - { - return $this->clientPath; - } - - /** - * Gets the temporary filename where the file was uploaded to. - */ - public function getTempName(): string - { - return $this->path; - } - - /** - * Overrides SPLFileInfo's to work with uploaded files, since - * the temp file that's been uploaded doesn't have an extension. - * - * This method tries to guess the extension from the files mime - * type but will return the clientExtension if it fails to do so. - * - * This method will always return a more or less helpfull extension - * but might be insecure if the mime type is not matched. Consider - * using guessExtension for a more safe version. - */ - public function getExtension(): string - { - return $this->guessExtension() ?: $this->getClientExtension(); - } - - /** - * Attempts to determine the best file extension from the file's - * mime type. In contrast to getExtension, this method will return - * an empty string if it fails to determine an extension instead of - * falling back to the unsecure clientExtension. - */ - public function guessExtension(): string - { - return Mimes::guessExtensionFromType($this->getMimeType(), $this->getClientExtension()) ?? ''; - } - - /** - * Returns the original file extension, based on the file name that - * was uploaded. This is NOT a trusted source. - * For a trusted version, use guessExtension() instead. - */ - public function getClientExtension(): string - { - return pathinfo($this->originalName, PATHINFO_EXTENSION) ?? ''; - } - - /** - * Returns whether the file was uploaded successfully, based on whether - * it was uploaded via HTTP and has no errors. - */ - public function isValid(): bool - { - return is_uploaded_file($this->path) && $this->error === UPLOAD_ERR_OK; - } - - /** - * Save the uploaded file to a new location. - * - * By default, upload files are saved in writable/uploads directory. The YYYYMMDD folder - * and random file name will be created. - * - * @param string $folderName the folder name to writable/uploads directory. - * @param string $fileName the name to rename the file to. - * - * @return string file full path - */ - public function store(?string $folderName = null, ?string $fileName = null): string - { - $folderName = rtrim($folderName ?? date('Ymd'), '/') . '/'; - $fileName ??= $this->getRandomName(); - - // Move the uploaded file to a new location. - $this->move(WRITEPATH . 'uploads/' . $folderName, $fileName); - - return $folderName . $this->name; - } -} diff --git a/system4.4.6/HTTP/Files/UploadedFileInterface.php b/system4.4.6/HTTP/Files/UploadedFileInterface.php deleted file mode 100644 index 170f81c2..00000000 --- a/system4.4.6/HTTP/Files/UploadedFileInterface.php +++ /dev/null @@ -1,149 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP\Files; - -use InvalidArgumentException; -use RuntimeException; - -/** - * Value object representing a single file uploaded through an - * HTTP request. Used by the IncomingRequest class to - * provide files. - * - * Typically, implementors will extend the SplFileInfo class. - */ -interface UploadedFileInterface -{ - /** - * Accepts the file information as would be filled in from the $_FILES array. - * - * @param string $path The temporary location of the uploaded file. - * @param string $originalName The client-provided filename. - * @param string $mimeType The type of file as provided by PHP - * @param int $size The size of the file, in bytes - * @param int $error The error constant of the upload (one of PHP's UPLOADERRXXX constants) - * @param string $clientPath The webkit relative path of the uploaded file. - */ - public function __construct(string $path, string $originalName, ?string $mimeType = null, ?int $size = null, ?int $error = null, ?string $clientPath = null); - - /** - * Move the uploaded file to a new location. - * - * $targetPath may be an absolute path, or a relative path. If it is a - * relative path, resolution should be the same as used by PHP's rename() - * function. - * - * The original file MUST be removed on completion. - * - * If this method is called more than once, any subsequent calls MUST raise - * an exception. - * - * When used in an SAPI environment where $_FILES is populated, when writing - * files via moveTo(), is_uploaded_file() and move_uploaded_file() SHOULD be - * used to ensure permissions and upload status are verified correctly. - * - * If you wish to move to a stream, use getStream(), as SAPI operations - * cannot guarantee writing to stream destinations. - * - * @see http://php.net/is_uploaded_file - * @see http://php.net/move_uploaded_file - * - * @param string $targetPath Path to which to move the uploaded file. - * @param string $name the name to rename the file to. - * - * @return bool - * - * @throws InvalidArgumentException if the $path specified is invalid. - * @throws RuntimeException on any error during the move operation. - * @throws RuntimeException on the second or subsequent call to the method. - */ - public function move(string $targetPath, ?string $name = null); - - /** - * Returns whether the file has been moved or not. If it has, - * the move() method will not work and certain properties, like - * the tempName, will no longer be available. - */ - public function hasMoved(): bool; - - /** - * Retrieve the error associated with the uploaded file. - * - * The return value MUST be one of PHP's UPLOAD_ERR_XXX constants. - * - * If the file was uploaded successfully, this method MUST return - * UPLOAD_ERR_OK. - * - * Implementations SHOULD return the value stored in the "error" key of - * the file in the $_FILES array. - * - * @see http://php.net/manual/en/features.file-upload.errors.php - * - * @return int One of PHP's UPLOAD_ERR_XXX constants. - */ - public function getError(): int; - - /** - * Retrieve the filename sent by the client. - * - * Do not trust the value returned by this method. A client could send - * a malicious filename with the intention to corrupt or hack your - * application. - * - * Implementations SHOULD return the value stored in the "name" key of - * the file in the $_FILES array. - * - * @return string The filename sent by the client or null if none - * was provided. - */ - public function getName(): string; - - /** - * Gets the temporary filename where the file was uploaded to. - */ - public function getTempName(): string; - - /** - * (PHP 8.1+) - * Returns the webkit relative path of the uploaded file on directory uploads. - */ - public function getClientPath(): ?string; - - /** - * Returns the original file extension, based on the file name that - * was uploaded. This is NOT a trusted source. - * For a trusted version, use guessExtension() instead. - */ - public function getClientExtension(): string; - - /** - * Returns the mime type as provided by the client. - * This is NOT a trusted value. - * For a trusted version, use getMimeType() instead. - */ - public function getClientMimeType(): string; - - /** - * Returns whether the file was uploaded successfully, based on whether - * it was uploaded via HTTP and has no errors. - */ - public function isValid(): bool; - - /** - * Returns the destination path for the move operation where overwriting is not expected. - * - * First, it checks whether the delimiter is present in the filename, if it is, then it checks whether the - * last element is an integer as there may be cases that the delimiter may be present in the filename. - * For the all other cases, it appends an integer starting from zero before the file's extension. - */ - public function getDestination(string $destination, string $delimiter = '_', int $i = 0): string; -} diff --git a/system4.4.6/HTTP/Header.php b/system4.4.6/HTTP/Header.php deleted file mode 100644 index 67c6cb06..00000000 --- a/system4.4.6/HTTP/Header.php +++ /dev/null @@ -1,192 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP; - -/** - * Class Header - * - * Represents a single HTTP header. - * - * @see \CodeIgniter\HTTP\HeaderTest - */ -class Header -{ - /** - * The name of the header. - * - * @var string - */ - protected $name; - - /** - * The value of the header. May have more than one - * value. If so, will be an array of strings. - * E.g., - * [ - * 'foo', - * [ - * 'bar' => 'fizz', - * ], - * 'baz' => 'buzz', - * ] - * - * @var array<int|string, array<string, string>|string>|string - */ - protected $value; - - /** - * Header constructor. name is mandatory, if a value is provided, it will be set. - * - * @param array<int|string, array<string, string>|string>|string|null $value - */ - public function __construct(string $name, $value = null) - { - $this->name = $name; - $this->setValue($value); - } - - /** - * Returns the name of the header, in the same case it was set. - */ - public function getName(): string - { - return $this->name; - } - - /** - * Gets the raw value of the header. This may return either a string - * of an array, depending on whether the header has multiple values or not. - * - * @return array<int|string, array<string, string>|string>|string - */ - public function getValue() - { - return $this->value; - } - - /** - * Sets the name of the header, overwriting any previous value. - * - * @return $this - */ - public function setName(string $name) - { - $this->name = $name; - - return $this; - } - - /** - * Sets the value of the header, overwriting any previous value(s). - * - * @param array<int|string, array<string, string>|string>|string|null $value - * - * @return $this - */ - public function setValue($value = null) - { - $this->value = is_array($value) ? $value : (string) $value; - - return $this; - } - - /** - * Appends a value to the list of values for this header. If the - * header is a single value string, it will be converted to an array. - * - * @param array<string, string>|string|null $value - * - * @return $this - */ - public function appendValue($value = null) - { - if ($value === null) { - return $this; - } - - if (! is_array($this->value)) { - $this->value = [$this->value]; - } - - if (! in_array($value, $this->value, true)) { - $this->value[] = is_array($value) ? $value : (string) $value; - } - - return $this; - } - - /** - * Prepends a value to the list of values for this header. If the - * header is a single value string, it will be converted to an array. - * - * @param array<string, string>|string|null $value - * - * @return $this - */ - public function prependValue($value = null) - { - if ($value === null) { - return $this; - } - - if (! is_array($this->value)) { - $this->value = [$this->value]; - } - - array_unshift($this->value, $value); - - return $this; - } - - /** - * Retrieves a comma-separated string of the values for a single header. - * - * NOTE: Not all header values may be appropriately represented using - * comma concatenation. For such headers, use getHeader() instead - * and supply your own delimiter when concatenating. - * - * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2 - */ - public function getValueLine(): string - { - if (is_string($this->value)) { - return $this->value; - } - if (! is_array($this->value)) { - return ''; - } - - $options = []; - - foreach ($this->value as $key => $value) { - if (is_string($key) && ! is_array($value)) { - $options[] = $key . '=' . $value; - } elseif (is_array($value)) { - $key = key($value); - $options[] = $key . '=' . $value[$key]; - } elseif (is_numeric($key)) { - $options[] = $value; - } - } - - return implode(', ', $options); - } - - /** - * Returns a representation of the entire header string, including - * the header name and all values converted to the proper format. - */ - public function __toString(): string - { - return $this->name . ': ' . $this->getValueLine(); - } -} diff --git a/system4.4.6/HTTP/IncomingRequest.php b/system4.4.6/HTTP/IncomingRequest.php deleted file mode 100644 index 499fa0b1..00000000 --- a/system4.4.6/HTTP/IncomingRequest.php +++ /dev/null @@ -1,948 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP; - -use CodeIgniter\HTTP\Exceptions\HTTPException; -use CodeIgniter\HTTP\Files\FileCollection; -use CodeIgniter\HTTP\Files\UploadedFile; -use Config\App; -use Config\Services; -use InvalidArgumentException; -use Locale; -use stdClass; - -/** - * Class IncomingRequest - * - * Represents an incoming, server-side HTTP request. - * - * Per the HTTP specification, this interface includes properties for - * each of the following: - * - * - Protocol version - * - HTTP method - * - URI - * - Headers - * - Message body - * - * Additionally, it encapsulates all data as it has arrived to the - * application from the CGI and/or PHP environment, including: - * - * - The values represented in $_SERVER. - * - Any cookies provided (generally via $_COOKIE) - * - Query string arguments (generally via $_GET, or as parsed via parse_str()) - * - Upload files, if any (as represented by $_FILES) - * - Deserialized body binds (generally from $_POST) - * - * @see \CodeIgniter\HTTP\IncomingRequestTest - */ -class IncomingRequest extends Request -{ - /** - * Enable CSRF flag - * - * Enables a CSRF cookie token to be set. - * Set automatically based on Config setting. - * - * @var bool - * - * @deprecated Not used - */ - protected $enableCSRF = false; - - /** - * The URI for this request. - * - * Note: This WILL NOT match the actual URL in the browser since for - * everything this cares about (and the router, etc) is the portion - * AFTER the baseURL. So, if hosted in a sub-folder this will - * appear different than actual URI path. If you need that use getPath(). - * - * @deprecated Will be protected. Use getUri() instead. - * - * @var URI - */ - public $uri; - - /** - * The detected URI path (relative to the baseURL). - * - * Note: current_url() uses this to build its URI, - * so this becomes the source for the "current URL" - * when working with the share request instance. - * - * @var string|null - */ - protected $path; - - /** - * File collection - * - * @var FileCollection|null - */ - protected $files; - - /** - * Negotiator - * - * @var Negotiate|null - */ - protected $negotiator; - - /** - * The default Locale this request - * should operate under. - * - * @var string - */ - protected $defaultLocale; - - /** - * The current locale of the application. - * Default value is set in app/Config/App.php - * - * @var string - */ - protected $locale; - - /** - * Stores the valid locale codes. - * - * @var array - */ - protected $validLocales = []; - - /** - * Configuration settings. - * - * @var App - * - * @deprecated Will be protected. - */ - public $config; - - /** - * Holds the old data from a redirect. - * - * @var array - */ - protected $oldInput = []; - - /** - * The user agent this request is from. - * - * @var UserAgent - */ - protected $userAgent; - - /** - * Constructor - * - * @param App $config - * @param string|null $body - */ - public function __construct($config, ?URI $uri = null, $body = 'php://input', ?UserAgent $userAgent = null) - { - if (! $uri instanceof URI || ! $userAgent instanceof UserAgent) { - throw new InvalidArgumentException('You must supply the parameters: uri, userAgent.'); - } - - $this->populateHeaders(); - - if ( - $body === 'php://input' - // php://input is not available with enctype="multipart/form-data". - // See https://www.php.net/manual/en/wrappers.php.php#wrappers.php.input - && strpos($this->getHeaderLine('Content-Type'), 'multipart/form-data') === false - && (int) $this->getHeaderLine('Content-Length') <= $this->getPostMaxSize() - ) { - // Get our body from php://input - $body = file_get_contents('php://input'); - } - - // If file_get_contents() returns false or empty string, set null. - if ($body === false || $body === '') { - $body = null; - } - - $this->config = $config; - $this->uri = $uri; - $this->body = $body; - $this->userAgent = $userAgent; - $this->validLocales = $config->supportedLocales; - - parent::__construct($config); - - if ($uri instanceof SiteURI) { - $this->setPath($uri->getRoutePath()); - } else { - $this->setPath($uri->getPath()); - } - - $this->detectLocale($config); - } - - private function getPostMaxSize(): int - { - $postMaxSize = ini_get('post_max_size'); - - switch (strtoupper(substr($postMaxSize, -1))) { - case 'G': - $postMaxSize = (int) str_replace('G', '', $postMaxSize) * 1024 ** 3; - break; - - case 'M': - $postMaxSize = (int) str_replace('M', '', $postMaxSize) * 1024 ** 2; - break; - - case 'K': - $postMaxSize = (int) str_replace('K', '', $postMaxSize) * 1024; - break; - - default: - $postMaxSize = (int) $postMaxSize; - } - - return $postMaxSize; - } - - /** - * Handles setting up the locale, perhaps auto-detecting through - * content negotiation. - * - * @param App $config - * - * @return void - */ - public function detectLocale($config) - { - $this->locale = $this->defaultLocale = $config->defaultLocale; - - if (! $config->negotiateLocale) { - return; - } - - $this->setLocale($this->negotiate('language', $config->supportedLocales)); - } - - /** - * Sets up our URI object based on the information we have. This is - * either provided by the user in the baseURL Config setting, or - * determined from the environment as needed. - * - * @return void - * - * @deprecated 4.4.0 No longer used. - */ - protected function detectURI(string $protocol, string $baseURL) - { - $this->setPath($this->detectPath($this->config->uriProtocol), $this->config); - } - - /** - * Detects the relative path based on - * the URIProtocol Config setting. - * - * @deprecated 4.4.0 Moved to SiteURIFactory. - */ - public function detectPath(string $protocol = ''): string - { - if ($protocol === '') { - $protocol = 'REQUEST_URI'; - } - - switch ($protocol) { - case 'REQUEST_URI': - $this->path = $this->parseRequestURI(); - break; - - case 'QUERY_STRING': - $this->path = $this->parseQueryString(); - break; - - case 'PATH_INFO': - default: - $this->path = $this->fetchGlobal('server', $protocol) ?? $this->parseRequestURI(); - break; - } - - return $this->path; - } - - /** - * Will parse the REQUEST_URI and automatically detect the URI from it, - * fixing the query string if necessary. - * - * @return string The URI it found. - * - * @deprecated 4.4.0 Moved to SiteURIFactory. - */ - protected function parseRequestURI(): string - { - if (! isset($_SERVER['REQUEST_URI'], $_SERVER['SCRIPT_NAME'])) { - return ''; - } - - // parse_url() returns false if no host is present, but the path or query string - // contains a colon followed by a number. So we attach a dummy host since - // REQUEST_URI does not include the host. This allows us to parse out the query string and path. - $parts = parse_url('http://dummy' . $_SERVER['REQUEST_URI']); - $query = $parts['query'] ?? ''; - $uri = $parts['path'] ?? ''; - - // Strip the SCRIPT_NAME path from the URI - if ( - $uri !== '' && isset($_SERVER['SCRIPT_NAME'][0]) - && pathinfo($_SERVER['SCRIPT_NAME'], PATHINFO_EXTENSION) === 'php' - ) { - // Compare each segment, dropping them until there is no match - $segments = $keep = explode('/', $uri); - - foreach (explode('/', $_SERVER['SCRIPT_NAME']) as $i => $segment) { - // If these segments are not the same then we're done - if (! isset($segments[$i]) || $segment !== $segments[$i]) { - break; - } - - array_shift($keep); - } - - $uri = implode('/', $keep); - } - - // This section ensures that even on servers that require the URI to contain the query string (Nginx) a correct - // URI is found, and also fixes the QUERY_STRING Server var and $_GET array. - if (trim($uri, '/') === '' && strncmp($query, '/', 1) === 0) { - $query = explode('?', $query, 2); - $uri = $query[0]; - $_SERVER['QUERY_STRING'] = $query[1] ?? ''; - } else { - $_SERVER['QUERY_STRING'] = $query; - } - - // Update our globals for values likely to been have changed - parse_str($_SERVER['QUERY_STRING'], $_GET); - $this->populateGlobals('server'); - $this->populateGlobals('get'); - - $uri = URI::removeDotSegments($uri); - - return ($uri === '/' || $uri === '') ? '/' : ltrim($uri, '/'); - } - - /** - * Parse QUERY_STRING - * - * Will parse QUERY_STRING and automatically detect the URI from it. - * - * @deprecated 4.4.0 Moved to SiteURIFactory. - */ - protected function parseQueryString(): string - { - $uri = $_SERVER['QUERY_STRING'] ?? @getenv('QUERY_STRING'); - - if (trim($uri, '/') === '') { - return '/'; - } - - if (strncmp($uri, '/', 1) === 0) { - $uri = explode('?', $uri, 2); - $_SERVER['QUERY_STRING'] = $uri[1] ?? ''; - $uri = $uri[0]; - } - - // Update our globals for values likely to been have changed - parse_str($_SERVER['QUERY_STRING'], $_GET); - $this->populateGlobals('server'); - $this->populateGlobals('get'); - - $uri = URI::removeDotSegments($uri); - - return ($uri === '/' || $uri === '') ? '/' : ltrim($uri, '/'); - } - - /** - * Provides a convenient way to work with the Negotiate class - * for content negotiation. - */ - public function negotiate(string $type, array $supported, bool $strictMatch = false): string - { - if ($this->negotiator === null) { - $this->negotiator = Services::negotiator($this, true); - } - - switch (strtolower($type)) { - case 'media': - return $this->negotiator->media($supported, $strictMatch); - - case 'charset': - return $this->negotiator->charset($supported); - - case 'encoding': - return $this->negotiator->encoding($supported); - - case 'language': - return $this->negotiator->language($supported); - } - - throw HTTPException::forInvalidNegotiationType($type); - } - - /** - * Checks this request type. - * - * @param string $type HTTP verb or 'json' or 'ajax' - * @phpstan-param string|'get'|'post'|'put'|'delete'|'head'|'patch'|'options'|'json'|'ajax' $type - */ - public function is(string $type): bool - { - $valueUpper = strtoupper($type); - - $httpMethods = ['GET', 'POST', 'PUT', 'DELETE', 'HEAD', 'PATCH', 'OPTIONS']; - - if (in_array($valueUpper, $httpMethods, true)) { - return strtoupper($this->getMethod()) === $valueUpper; - } - - if ($valueUpper === 'JSON') { - return strpos($this->getHeaderLine('Content-Type'), 'application/json') !== false; - } - - if ($valueUpper === 'AJAX') { - return $this->isAJAX(); - } - - throw new InvalidArgumentException('Unknown type: ' . $type); - } - - /** - * Determines if this request was made from the command line (CLI). - */ - public function isCLI(): bool - { - return false; - } - - /** - * Test to see if a request contains the HTTP_X_REQUESTED_WITH header. - */ - public function isAJAX(): bool - { - return $this->hasHeader('X-Requested-With') - && strtolower($this->header('X-Requested-With')->getValue()) === 'xmlhttprequest'; - } - - /** - * Attempts to detect if the current connection is secure through - * a few different methods. - */ - public function isSecure(): bool - { - if (! empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off') { - return true; - } - - if ($this->hasHeader('X-Forwarded-Proto') && $this->header('X-Forwarded-Proto')->getValue() === 'https') { - return true; - } - - return $this->hasHeader('Front-End-Https') && ! empty($this->header('Front-End-Https')->getValue()) && strtolower($this->header('Front-End-Https')->getValue()) !== 'off'; - } - - /** - * Sets the URI path relative to baseURL. - * - * Note: Since current_url() accesses the shared request - * instance, this can be used to change the "current URL" - * for testing. - * - * @param string $path URI path relative to baseURL - * @param App|null $config Optional alternate config to use - * - * @return $this - * - * @deprecated 4.4.0 This method will be private. The parameter $config is deprecated. No longer used. - */ - public function setPath(string $path, ?App $config = null) - { - $this->path = $path; - - return $this; - } - - /** - * Returns the URI path relative to baseURL, - * running detection as necessary. - */ - public function getPath(): string - { - return $this->path; - } - - /** - * Sets the locale string for this request. - * - * @return IncomingRequest - */ - public function setLocale(string $locale) - { - // If it's not a valid locale, set it - // to the default locale for the site. - if (! in_array($locale, $this->validLocales, true)) { - $locale = $this->defaultLocale; - } - - $this->locale = $locale; - Locale::setDefault($locale); - - return $this; - } - - /** - * Set the valid locales. - * - * @return $this - */ - public function setValidLocales(array $locales) - { - $this->validLocales = $locales; - - return $this; - } - - /** - * Gets the current locale, with a fallback to the default - * locale if none is set. - */ - public function getLocale(): string - { - return $this->locale; - } - - /** - * Returns the default locale as set in app/Config/App.php - */ - public function getDefaultLocale(): string - { - return $this->defaultLocale; - } - - /** - * Fetch an item from JSON input stream with fallback to $_REQUEST object. This is the simplest way - * to grab data from the request object and can be used in lieu of the - * other get* methods in most cases. - * - * @param array|string|null $index - * @param int|null $filter Filter constant - * @param array|int|null $flags - * - * @return array|bool|float|int|stdClass|string|null - */ - public function getVar($index = null, $filter = null, $flags = null) - { - if ( - strpos($this->getHeaderLine('Content-Type'), 'application/json') !== false - && $this->body !== null - ) { - return $this->getJsonVar($index, false, $filter, $flags); - } - - return $this->fetchGlobal('request', $index, $filter, $flags); - } - - /** - * A convenience method that grabs the raw input stream and decodes - * the JSON into an array. - * - * If $assoc == true, then all objects in the response will be converted - * to associative arrays. - * - * @param bool $assoc Whether to return objects as associative arrays - * @param int $depth How many levels deep to decode - * @param int $options Bitmask of options - * - * @see http://php.net/manual/en/function.json-decode.php - * - * @return array|bool|float|int|stdClass|null - * - * @throws HTTPException When the body is invalid as JSON. - */ - public function getJSON(bool $assoc = false, int $depth = 512, int $options = 0) - { - if ($this->body === null) { - return null; - } - - $result = json_decode($this->body, $assoc, $depth, $options); - - if (json_last_error() !== JSON_ERROR_NONE) { - throw HTTPException::forInvalidJSON(json_last_error_msg()); - } - - return $result; - } - - /** - * Get a specific variable from a JSON input stream - * - * @param array|string|null $index The variable that you want which can use dot syntax for getting specific values. - * @param bool $assoc If true, return the result as an associative array. - * @param int|null $filter Filter Constant - * @param array|int|null $flags Option - * - * @return array|bool|float|int|stdClass|string|null - */ - public function getJsonVar($index = null, bool $assoc = false, ?int $filter = null, $flags = null) - { - helper('array'); - - $data = $this->getJSON(true); - if (! is_array($data)) { - return null; - } - - if (is_string($index)) { - $data = dot_array_search($index, $data); - } elseif (is_array($index)) { - $result = []; - - foreach ($index as $key) { - $result[$key] = dot_array_search($key, $data); - } - - [$data, $result] = [$result, null]; - } - - if ($data === null) { - return null; - } - - $filter ??= FILTER_DEFAULT; - $flags = is_array($flags) ? $flags : (is_numeric($flags) ? (int) $flags : 0); - - if ($filter !== FILTER_DEFAULT - || ( - (is_numeric($flags) && $flags !== 0) - || is_array($flags) && $flags !== [] - ) - ) { - if (is_array($data)) { - // Iterate over array and append filter and flags - array_walk_recursive($data, static function (&$val) use ($filter, $flags) { - $valType = gettype($val); - $val = filter_var($val, $filter, $flags); - - if (in_array($valType, ['int', 'integer', 'float', 'double', 'bool', 'boolean'], true) && $val !== false) { - settype($val, $valType); - } - }); - } else { - $dataType = gettype($data); - $data = filter_var($data, $filter, $flags); - - if (in_array($dataType, ['int', 'integer', 'float', 'double', 'bool', 'boolean'], true) && $data !== false) { - settype($data, $dataType); - } - } - } - - if (! $assoc) { - if (is_array($index)) { - foreach ($data as &$val) { - $val = is_array($val) ? json_decode(json_encode($val)) : $val; - } - - return $data; - } - - return json_decode(json_encode($data)); - } - - return $data; - } - - /** - * A convenience method that grabs the raw input stream(send method in PUT, PATCH, DELETE) and decodes - * the String into an array. - * - * @return array - */ - public function getRawInput() - { - parse_str($this->body ?? '', $output); - - return $output; - } - - /** - * Gets a specific variable from raw input stream (send method in PUT, PATCH, DELETE). - * - * @param array|string|null $index The variable that you want which can use dot syntax for getting specific values. - * @param int|null $filter Filter Constant - * @param array|int|null $flags Option - * - * @return array|bool|float|int|object|string|null - */ - public function getRawInputVar($index = null, ?int $filter = null, $flags = null) - { - helper('array'); - - parse_str($this->body ?? '', $output); - - if (is_string($index)) { - $output = dot_array_search($index, $output); - } elseif (is_array($index)) { - $data = []; - - foreach ($index as $key) { - $data[$key] = dot_array_search($key, $output); - } - - [$output, $data] = [$data, null]; - } - - $filter ??= FILTER_DEFAULT; - $flags = is_array($flags) ? $flags : (is_numeric($flags) ? (int) $flags : 0); - - if (is_array($output) - && ( - $filter !== FILTER_DEFAULT - || ( - (is_numeric($flags) && $flags !== 0) - || is_array($flags) && $flags !== [] - ) - ) - ) { - // Iterate over array and append filter and flags - array_walk_recursive($output, static function (&$val) use ($filter, $flags) { - $val = filter_var($val, $filter, $flags); - }); - - return $output; - } - - if (is_string($output)) { - return filter_var($output, $filter, $flags); - } - - return $output; - } - - /** - * Fetch an item from GET data. - * - * @param array|string|null $index Index for item to fetch from $_GET. - * @param int|null $filter A filter name to apply. - * @param array|int|null $flags - * - * @return array|bool|float|int|object|string|null - */ - public function getGet($index = null, $filter = null, $flags = null) - { - return $this->fetchGlobal('get', $index, $filter, $flags); - } - - /** - * Fetch an item from POST. - * - * @param array|string|null $index Index for item to fetch from $_POST. - * @param int|null $filter A filter name to apply - * @param array|int|null $flags - * - * @return array|bool|float|int|object|string|null - */ - public function getPost($index = null, $filter = null, $flags = null) - { - return $this->fetchGlobal('post', $index, $filter, $flags); - } - - /** - * Fetch an item from POST data with fallback to GET. - * - * @param array|string|null $index Index for item to fetch from $_POST or $_GET - * @param int|null $filter A filter name to apply - * @param array|int|null $flags - * - * @return array|bool|float|int|object|string|null - */ - public function getPostGet($index = null, $filter = null, $flags = null) - { - if ($index === null) { - return array_merge($this->getGet($index, $filter, $flags), $this->getPost($index, $filter, $flags)); - } - - // Use $_POST directly here, since filter_has_var only - // checks the initial POST data, not anything that might - // have been added since. - return isset($_POST[$index]) - ? $this->getPost($index, $filter, $flags) - : (isset($_GET[$index]) ? $this->getGet($index, $filter, $flags) : $this->getPost($index, $filter, $flags)); - } - - /** - * Fetch an item from GET data with fallback to POST. - * - * @param array|string|null $index Index for item to be fetched from $_GET or $_POST - * @param int|null $filter A filter name to apply - * @param array|int|null $flags - * - * @return array|bool|float|int|object|string|null - */ - public function getGetPost($index = null, $filter = null, $flags = null) - { - if ($index === null) { - return array_merge($this->getPost($index, $filter, $flags), $this->getGet($index, $filter, $flags)); - } - - // Use $_GET directly here, since filter_has_var only - // checks the initial GET data, not anything that might - // have been added since. - return isset($_GET[$index]) - ? $this->getGet($index, $filter, $flags) - : (isset($_POST[$index]) ? $this->getPost($index, $filter, $flags) : $this->getGet($index, $filter, $flags)); - } - - /** - * Fetch an item from the COOKIE array. - * - * @param array|string|null $index Index for item to be fetched from $_COOKIE - * @param int|null $filter A filter name to be applied - * @param array|int|null $flags - * - * @return array|bool|float|int|object|string|null - */ - public function getCookie($index = null, $filter = null, $flags = null) - { - return $this->fetchGlobal('cookie', $index, $filter, $flags); - } - - /** - * Fetch the user agent string - * - * @return UserAgent - */ - public function getUserAgent() - { - return $this->userAgent; - } - - /** - * Attempts to get old Input data that has been flashed to the session - * with redirect_with_input(). It first checks for the data in the old - * POST data, then the old GET data and finally check for dot arrays - * - * @return array|string|null - */ - public function getOldInput(string $key) - { - // If the session hasn't been started, we're done. - if (! isset($_SESSION)) { - return null; - } - - // Get previously saved in session - $old = session('_ci_old_input'); - - // If no data was previously saved, we're done. - if ($old === null) { - return null; - } - - // Check for the value in the POST array first. - if (isset($old['post'][$key])) { - return $old['post'][$key]; - } - - // Next check in the GET array. - if (isset($old['get'][$key])) { - return $old['get'][$key]; - } - - helper('array'); - - // Check for an array value in POST. - if (isset($old['post'])) { - $value = dot_array_search($key, $old['post']); - if ($value !== null) { - return $value; - } - } - - // Check for an array value in GET. - if (isset($old['get'])) { - $value = dot_array_search($key, $old['get']); - if ($value !== null) { - return $value; - } - } - - // requested session key not found - return null; - } - - /** - * Returns an array of all files that have been uploaded with this - * request. Each file is represented by an UploadedFile instance. - */ - public function getFiles(): array - { - if ($this->files === null) { - $this->files = new FileCollection(); - } - - return $this->files->all(); // return all files - } - - /** - * Verify if a file exist, by the name of the input field used to upload it, in the collection - * of uploaded files and if is have been uploaded with multiple option. - * - * @return array|null - */ - public function getFileMultiple(string $fileID) - { - if ($this->files === null) { - $this->files = new FileCollection(); - } - - return $this->files->getFileMultiple($fileID); - } - - /** - * Retrieves a single file by the name of the input field used - * to upload it. - * - * @return UploadedFile|null - */ - public function getFile(string $fileID) - { - if ($this->files === null) { - $this->files = new FileCollection(); - } - - return $this->files->getFile($fileID); - } - - /** - * Remove relative directory (../) and multi slashes (///) - * - * Do some final cleaning of the URI and return it, currently only used in static::_parse_request_uri() - * - * @deprecated 4.1.2 Use URI::removeDotSegments() directly - */ - protected function removeRelativeDirectory(string $uri): string - { - $uri = URI::removeDotSegments($uri); - - return $uri === '/' ? $uri : ltrim($uri, '/'); - } -} diff --git a/system4.4.6/HTTP/Message.php b/system4.4.6/HTTP/Message.php deleted file mode 100644 index 9d0b5177..00000000 --- a/system4.4.6/HTTP/Message.php +++ /dev/null @@ -1,131 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP; - -/** - * An HTTP message - * - * @see \CodeIgniter\HTTP\MessageTest - */ -class Message implements MessageInterface -{ - use MessageTrait; - - /** - * Protocol version - * - * @var string - */ - protected $protocolVersion; - - /** - * List of valid protocol versions - * - * @var array - */ - protected $validProtocolVersions = [ - '1.0', - '1.1', - '2.0', - '3.0', - ]; - - /** - * Message body - * - * @var string|null - */ - protected $body; - - /** - * Returns the Message's body. - * - * @return string|null - */ - public function getBody() - { - return $this->body; - } - - /** - * Returns an array containing all headers. - * - * @return array<string, Header> An array of the request headers - * - * @deprecated Use Message::headers() to make room for PSR-7 - * - * @TODO Incompatible return value with PSR-7 - * - * @codeCoverageIgnore - */ - public function getHeaders(): array - { - return $this->headers(); - } - - /** - * Returns a single header object. If multiple headers with the same - * name exist, then will return an array of header objects. - * - * @return array|Header|null - * - * @deprecated Use Message::header() to make room for PSR-7 - * - * @TODO Incompatible return value with PSR-7 - * - * @codeCoverageIgnore - */ - public function getHeader(string $name) - { - return $this->header($name); - } - - /** - * Determines whether a header exists. - */ - public function hasHeader(string $name): bool - { - $origName = $this->getHeaderName($name); - - return isset($this->headers[$origName]); - } - - /** - * Retrieves a comma-separated string of the values for a single header. - * - * This method returns all of the header values of the given - * case-insensitive header name as a string concatenated together using - * a comma. - * - * NOTE: Not all header values may be appropriately represented using - * comma concatenation. For such headers, use getHeader() instead - * and supply your own delimiter when concatenating. - */ - public function getHeaderLine(string $name): string - { - $origName = $this->getHeaderName($name); - - if (! array_key_exists($origName, $this->headers)) { - return ''; - } - - return $this->headers[$origName]->getValueLine(); - } - - /** - * Returns the HTTP Protocol Version. - */ - public function getProtocolVersion(): string - { - return $this->protocolVersion ?? '1.1'; - } -} diff --git a/system4.4.6/HTTP/MessageInterface.php b/system4.4.6/HTTP/MessageInterface.php deleted file mode 100644 index 99867bde..00000000 --- a/system4.4.6/HTTP/MessageInterface.php +++ /dev/null @@ -1,143 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP; - -use CodeIgniter\HTTP\Exceptions\HTTPException; - -/** - * Expected behavior of an HTTP message - */ -interface MessageInterface -{ - /** - * Retrieves the HTTP protocol version as a string. - * - * The string MUST contain only the HTTP version number (e.g., "1.1", "1.0"). - * - * @return string HTTP protocol version. - */ - public function getProtocolVersion(): string; - - /** - * Sets the body of the current message. - * - * @param string $data - * - * @return $this - */ - public function setBody($data); - - /** - * Gets the body of the message. - * - * @return string|null - * - * @TODO Incompatible return type with PSR-7 - */ - public function getBody(); - - /** - * Appends data to the body of the current message. - * - * @param string $data - * - * @return $this - */ - public function appendBody($data); - - /** - * Populates the $headers array with any headers the server knows about. - */ - public function populateHeaders(): void; - - /** - * Returns an array containing all Headers. - * - * @return array<string, Header> An array of the Header objects - */ - public function headers(): array; - - /** - * Checks if a header exists by the given case-insensitive name. - * - * @param string $name Case-insensitive header field name. - * - * @return bool Returns true if any header names match the given header - * name using a case-insensitive string comparison. Returns false if - * no matching header name is found in the message. - */ - public function hasHeader(string $name): bool; - - /** - * Returns a single Header object. If multiple headers with the same - * name exist, then will return an array of header objects. - * - * @param string $name - * - * @return array|Header|null - */ - public function header($name); - - /** - * Retrieves a comma-separated string of the values for a single header. - * - * This method returns all of the header values of the given - * case-insensitive header name as a string concatenated together using - * a comma. - * - * NOTE: Not all header values may be appropriately represented using - * comma concatenation. For such headers, use getHeader() instead - * and supply your own delimiter when concatenating. - */ - public function getHeaderLine(string $name): string; - - /** - * Sets a header and it's value. - * - * @param array|string|null $value - * - * @return $this - */ - public function setHeader(string $name, $value); - - /** - * Removes a header from the list of headers we track. - * - * @return $this - */ - public function removeHeader(string $name); - - /** - * Adds an additional header value to any headers that accept - * multiple values (i.e. are an array or implement ArrayAccess) - * - * @return $this - */ - public function appendHeader(string $name, ?string $value); - - /** - * Adds an additional header value to any headers that accept - * multiple values (i.e. are an array or implement ArrayAccess) - * - * @return $this - */ - public function prependHeader(string $name, string $value); - - /** - * Sets the HTTP protocol version. - * - * @return $this - * - * @throws HTTPException For invalid protocols - */ - public function setProtocolVersion(string $version); -} diff --git a/system4.4.6/HTTP/MessageTrait.php b/system4.4.6/HTTP/MessageTrait.php deleted file mode 100644 index ac3e5b18..00000000 --- a/system4.4.6/HTTP/MessageTrait.php +++ /dev/null @@ -1,239 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP; - -use CodeIgniter\HTTP\Exceptions\HTTPException; - -/** - * Message Trait - * Additional methods to make a PSR-7 Message class - * compliant with the framework's own MessageInterface. - * - * @see https://github.com/php-fig/http-message/blob/master/src/MessageInterface.php - */ -trait MessageTrait -{ - /** - * List of all HTTP request headers. - * - * @var array<string, Header> - */ - protected $headers = []; - - /** - * Holds a map of lower-case header names - * and their normal-case key as it is in $headers. - * Used for case-insensitive header access. - * - * @var array - */ - protected $headerMap = []; - - // -------------------------------------------------------------------- - // Body - // -------------------------------------------------------------------- - - /** - * Sets the body of the current message. - * - * @param string $data - * - * @return $this - */ - public function setBody($data): self - { - $this->body = $data; - - return $this; - } - - /** - * Appends data to the body of the current message. - * - * @param string $data - * - * @return $this - */ - public function appendBody($data): self - { - $this->body .= (string) $data; - - return $this; - } - - // -------------------------------------------------------------------- - // Headers - // -------------------------------------------------------------------- - - /** - * Populates the $headers array with any headers the server knows about. - */ - public function populateHeaders(): void - { - $contentType = $_SERVER['CONTENT_TYPE'] ?? getenv('CONTENT_TYPE'); - if (! empty($contentType)) { - $this->setHeader('Content-Type', $contentType); - } - unset($contentType); - - foreach (array_keys($_SERVER) as $key) { - if (sscanf($key, 'HTTP_%s', $header) === 1) { - // take SOME_HEADER and turn it into Some-Header - $header = str_replace('_', ' ', strtolower($header)); - $header = str_replace(' ', '-', ucwords($header)); - - $this->setHeader($header, $_SERVER[$key]); - - // Add us to the header map so we can find them case-insensitively - $this->headerMap[strtolower($header)] = $header; - } - } - } - - /** - * Returns an array containing all Headers. - * - * @return array<string, Header> An array of the Header objects - */ - public function headers(): array - { - // If no headers are defined, but the user is - // requesting it, then it's likely they want - // it to be populated so do that... - if (empty($this->headers)) { - $this->populateHeaders(); - } - - return $this->headers; - } - - /** - * Returns a single Header object. If multiple headers with the same - * name exist, then will return an array of header objects. - * - * @param string $name - * - * @return array|Header|null - */ - public function header($name) - { - $origName = $this->getHeaderName($name); - - return $this->headers[$origName] ?? null; - } - - /** - * Sets a header and it's value. - * - * @param array|string|null $value - * - * @return $this - */ - public function setHeader(string $name, $value): self - { - $origName = $this->getHeaderName($name); - - if (isset($this->headers[$origName]) && is_array($this->headers[$origName]->getValue())) { - if (! is_array($value)) { - $value = [$value]; - } - - foreach ($value as $v) { - $this->appendHeader($origName, $v); - } - } else { - $this->headers[$origName] = new Header($origName, $value); - $this->headerMap[strtolower($origName)] = $origName; - } - - return $this; - } - - /** - * Removes a header from the list of headers we track. - * - * @return $this - */ - public function removeHeader(string $name): self - { - $origName = $this->getHeaderName($name); - unset($this->headers[$origName], $this->headerMap[strtolower($name)]); - - return $this; - } - - /** - * Adds an additional header value to any headers that accept - * multiple values (i.e. are an array or implement ArrayAccess) - * - * @return $this - */ - public function appendHeader(string $name, ?string $value): self - { - $origName = $this->getHeaderName($name); - - array_key_exists($origName, $this->headers) - ? $this->headers[$origName]->appendValue($value) - : $this->setHeader($name, $value); - - return $this; - } - - /** - * Adds an additional header value to any headers that accept - * multiple values (i.e. are an array or implement ArrayAccess) - * - * @return $this - */ - public function prependHeader(string $name, string $value): self - { - $origName = $this->getHeaderName($name); - - $this->headers[$origName]->prependValue($value); - - return $this; - } - - /** - * Takes a header name in any case, and returns the - * normal-case version of the header. - */ - protected function getHeaderName(string $name): string - { - return $this->headerMap[strtolower($name)] ?? $name; - } - - /** - * Sets the HTTP protocol version. - * - * @return $this - * - * @throws HTTPException For invalid protocols - */ - public function setProtocolVersion(string $version): self - { - if (! is_numeric($version)) { - $version = substr($version, strpos($version, '/') + 1); - } - - // Make sure that version is in the correct format - $version = number_format((float) $version, 1); - - if (! in_array($version, $this->validProtocolVersions, true)) { - throw HTTPException::forInvalidHTTPProtocol($version); - } - - $this->protocolVersion = $version; - - return $this; - } -} diff --git a/system4.4.6/HTTP/Negotiate.php b/system4.4.6/HTTP/Negotiate.php deleted file mode 100644 index 9c903908..00000000 --- a/system4.4.6/HTTP/Negotiate.php +++ /dev/null @@ -1,361 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP; - -use CodeIgniter\HTTP\Exceptions\HTTPException; - -/** - * Class Negotiate - * - * Provides methods to negotiate with the HTTP headers to determine the best - * type match between what the application supports and what the requesting - * server wants. - * - * @see http://tools.ietf.org/html/rfc7231#section-5.3 - * @see \CodeIgniter\HTTP\NegotiateTest - */ -class Negotiate -{ - /** - * Request - * - * @var IncomingRequest - */ - protected $request; - - /** - * Constructor - */ - public function __construct(?RequestInterface $request = null) - { - if ($request !== null) { - assert($request instanceof IncomingRequest); - - $this->request = $request; - } - } - - /** - * Stores the request instance to grab the headers from. - * - * @return $this - */ - public function setRequest(RequestInterface $request) - { - assert($request instanceof IncomingRequest); - - $this->request = $request; - - return $this; - } - - /** - * Determines the best content-type to use based on the $supported - * types the application says it supports, and the types requested - * by the client. - * - * If no match is found, the first, highest-ranking client requested - * type is returned. - * - * @param bool $strictMatch If TRUE, will return an empty string when no match found. - * If FALSE, will return the first supported element. - */ - public function media(array $supported, bool $strictMatch = false): string - { - return $this->getBestMatch($supported, $this->request->getHeaderLine('accept'), true, $strictMatch); - } - - /** - * Determines the best charset to use based on the $supported - * types the application says it supports, and the types requested - * by the client. - * - * If no match is found, the first, highest-ranking client requested - * type is returned. - */ - public function charset(array $supported): string - { - $match = $this->getBestMatch( - $supported, - $this->request->getHeaderLine('accept-charset'), - false, - true - ); - - // If no charset is shown as a match, ignore the directive - // as allowed by the RFC, and tell it a default value. - if ($match === '') { - return 'utf-8'; - } - - return $match; - } - - /** - * Determines the best encoding type to use based on the $supported - * types the application says it supports, and the types requested - * by the client. - * - * If no match is found, the first, highest-ranking client requested - * type is returned. - */ - public function encoding(array $supported = []): string - { - $supported[] = 'identity'; - - return $this->getBestMatch($supported, $this->request->getHeaderLine('accept-encoding')); - } - - /** - * Determines the best language to use based on the $supported - * types the application says it supports, and the types requested - * by the client. - * - * If no match is found, the first, highest-ranking client requested - * type is returned. - */ - public function language(array $supported): string - { - return $this->getBestMatch($supported, $this->request->getHeaderLine('accept-language'), false, false, true); - } - - // -------------------------------------------------------------------- - // Utility Methods - // -------------------------------------------------------------------- - - /** - * Does the grunt work of comparing any of the app-supported values - * against a given Accept* header string. - * - * Portions of this code base on Aura.Accept library. - * - * @param array $supported App-supported values - * @param string $header header string - * @param bool $enforceTypes If TRUE, will compare media types and sub-types. - * @param bool $strictMatch If TRUE, will return empty string on no match. - * If FALSE, will return the first supported element. - * @param bool $matchLocales If TRUE, will match locale sub-types to a broad type (fr-FR = fr) - * - * @return string Best match - */ - protected function getBestMatch( - array $supported, - ?string $header = null, - bool $enforceTypes = false, - bool $strictMatch = false, - bool $matchLocales = false - ): string { - if ($supported === []) { - throw HTTPException::forEmptySupportedNegotiations(); - } - - if ($header === null || $header === '') { - return $strictMatch ? '' : $supported[0]; - } - - $acceptable = $this->parseHeader($header); - - foreach ($acceptable as $accept) { - // if acceptable quality is zero, skip it. - if ($accept['q'] === 0.0) { - continue; - } - - // if acceptable value is "anything", return the first available - if ($accept['value'] === '*' || $accept['value'] === '*/*') { - return $supported[0]; - } - - // If an acceptable value is supported, return it - foreach ($supported as $available) { - if ($this->match($accept, $available, $enforceTypes, $matchLocales)) { - return $available; - } - } - } - - // No matches? Return the first supported element. - return $strictMatch ? '' : $supported[0]; - } - - /** - * Parses an Accept* header into it's multiple values. - * - * This is based on code from Aura.Accept library. - */ - public function parseHeader(string $header): array - { - $results = []; - $acceptable = explode(',', $header); - - foreach ($acceptable as $value) { - $pairs = explode(';', $value); - - $value = $pairs[0]; - - unset($pairs[0]); - - $parameters = []; - - foreach ($pairs as $pair) { - if (preg_match( - '/^(?P<name>.+?)=(?P<quoted>"|\')?(?P<value>.*?)(?:\k<quoted>)?$/', - $pair, - $param - )) { - $parameters[trim($param['name'])] = trim($param['value']); - } - } - - $quality = 1.0; - - if (array_key_exists('q', $parameters)) { - $quality = $parameters['q']; - unset($parameters['q']); - } - - $results[] = [ - 'value' => trim($value), - 'q' => (float) $quality, - 'params' => $parameters, - ]; - } - - // Sort to get the highest results first - usort($results, static function ($a, $b) { - if ($a['q'] === $b['q']) { - $aAst = substr_count($a['value'], '*'); - $bAst = substr_count($b['value'], '*'); - - // '*/*' has lower precedence than 'text/*', - // and 'text/*' has lower priority than 'text/plain' - // - // This seems backwards, but needs to be that way - // due to the way PHP7 handles ordering or array - // elements created by reference. - if ($aAst > $bAst) { - return 1; - } - - // If the counts are the same, but one element - // has more params than another, it has higher precedence. - // - // This seems backwards, but needs to be that way - // due to the way PHP7 handles ordering or array - // elements created by reference. - if ($aAst === $bAst) { - return count($b['params']) - count($a['params']); - } - - return 0; - } - - // Still here? Higher q values have precedence. - return ($a['q'] > $b['q']) ? -1 : 1; - }); - - return $results; - } - - /** - * Match-maker - * - * @param bool $matchLocales - */ - protected function match(array $acceptable, string $supported, bool $enforceTypes = false, $matchLocales = false): bool - { - $supported = $this->parseHeader($supported); - if (is_array($supported) && count($supported) === 1) { - $supported = $supported[0]; - } - - // Is it an exact match? - if ($acceptable['value'] === $supported['value']) { - return $this->matchParameters($acceptable, $supported); - } - - // Do we need to compare types/sub-types? Only used - // by negotiateMedia(). - if ($enforceTypes) { - return $this->matchTypes($acceptable, $supported); - } - - // Do we need to match locales against broader locales? - if ($matchLocales) { - return $this->matchLocales($acceptable, $supported); - } - - return false; - } - - /** - * Checks two Accept values with matching 'values' to see if their - * 'params' are the same. - */ - protected function matchParameters(array $acceptable, array $supported): bool - { - if (count($acceptable['params']) !== count($supported['params'])) { - return false; - } - - foreach ($supported['params'] as $label => $value) { - if (! isset($acceptable['params'][$label]) - || $acceptable['params'][$label] !== $value - ) { - return false; - } - } - - return true; - } - - /** - * Compares the types/subtypes of an acceptable Media type and - * the supported string. - */ - public function matchTypes(array $acceptable, array $supported): bool - { - // PHPDocumentor v2 cannot parse yet the shorter list syntax, - // causing no API generation for the file. - [$aType, $aSubType] = explode('/', $acceptable['value']); - [$sType, $sSubType] = explode('/', $supported['value']); - - // If the types don't match, we're done. - if ($aType !== $sType) { - return false; - } - - // If there's an asterisk, we're cool - if ($aSubType === '*') { - return true; - } - - // Otherwise, subtypes must match also. - return $aSubType === $sSubType; - } - - /** - * Will match locales against their broader pairs, so that fr-FR would - * match a supported localed of fr - */ - public function matchLocales(array $acceptable, array $supported): bool - { - $aBroad = mb_strpos($acceptable['value'], '-') > 0 - ? mb_substr($acceptable['value'], 0, mb_strpos($acceptable['value'], '-')) - : $acceptable['value']; - $sBroad = mb_strpos($supported['value'], '-') > 0 - ? mb_substr($supported['value'], 0, mb_strpos($supported['value'], '-')) - : $supported['value']; - - return strtolower($aBroad) === strtolower($sBroad); - } -} diff --git a/system4.4.6/HTTP/OutgoingRequest.php b/system4.4.6/HTTP/OutgoingRequest.php deleted file mode 100644 index 698cde26..00000000 --- a/system4.4.6/HTTP/OutgoingRequest.php +++ /dev/null @@ -1,163 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP; - -/** - * Representation of an outgoing, client-side request. - * - * @see \CodeIgniter\HTTP\OutgoingRequestTest - */ -class OutgoingRequest extends Message implements OutgoingRequestInterface -{ - /** - * Request method. - * - * @var string - */ - protected $method; - - /** - * A URI instance. - * - * @var URI|null - */ - protected $uri; - - /** - * @param string $method HTTP method - * @param string|null $body - */ - public function __construct( - string $method, - ?URI $uri = null, - array $headers = [], - $body = null, - string $version = '1.1' - ) { - $this->method = $method; - $this->uri = $uri; - - foreach ($headers as $header => $value) { - $this->setHeader($header, $value); - } - - $this->body = $body; - $this->protocolVersion = $version; - - if (! $this->hasHeader('Host') && $this->uri->getHost() !== '') { - $this->setHeader('Host', $this->getHostFromUri($this->uri)); - } - } - - private function getHostFromUri(URI $uri): string - { - $host = $uri->getHost(); - - return $host . ($uri->getPort() ? ':' . $uri->getPort() : ''); - } - - /** - * Get the request method. - * - * @param bool $upper Whether to return in upper or lower case. - * - * @deprecated The $upper functionality will be removed and this will revert to its PSR-7 equivalent - */ - public function getMethod(bool $upper = false): string - { - return ($upper) ? strtoupper($this->method) : strtolower($this->method); - } - - /** - * Sets the request method. Used when spoofing the request. - * - * @return $this - * - * @deprecated Use withMethod() instead for immutability - */ - public function setMethod(string $method) - { - $this->method = $method; - - return $this; - } - - /** - * Returns an instance with the specified method. - * - * @param string $method - * - * @return static - */ - public function withMethod($method) - { - $request = clone $this; - $request->method = $method; - - return $request; - } - - /** - * Retrieves the URI instance. - * - * @return URI|null - */ - public function getUri() - { - return $this->uri; - } - - /** - * Returns an instance with the provided URI. - * - * @param URI $uri New request URI to use. - * @param bool $preserveHost Preserve the original state of the Host header. - * - * @return static - */ - public function withUri(URI $uri, $preserveHost = false) - { - $request = clone $this; - $request->uri = $uri; - - if ($preserveHost) { - if ($this->isHostHeaderMissingOrEmpty() && $uri->getHost() !== '') { - $request->setHeader('Host', $this->getHostFromUri($uri)); - - return $request; - } - - if ($this->isHostHeaderMissingOrEmpty() && $uri->getHost() === '') { - return $request; - } - - if (! $this->isHostHeaderMissingOrEmpty()) { - return $request; - } - } - - if ($uri->getHost() !== '') { - $request->setHeader('Host', $this->getHostFromUri($uri)); - } - - return $request; - } - - private function isHostHeaderMissingOrEmpty(): bool - { - if (! $this->hasHeader('Host')) { - return true; - } - - return $this->header('Host')->getValue() === ''; - } -} diff --git a/system4.4.6/HTTP/OutgoingRequestInterface.php b/system4.4.6/HTTP/OutgoingRequestInterface.php deleted file mode 100644 index 3839b64f..00000000 --- a/system4.4.6/HTTP/OutgoingRequestInterface.php +++ /dev/null @@ -1,94 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP; - -use InvalidArgumentException; - -/** - * Representation of an outgoing, client-side request. - * - * Corresponds to Psr7\RequestInterface. - */ -interface OutgoingRequestInterface extends MessageInterface -{ - /** - * Get the request method. - * An extension of PSR-7's getMethod to allow casing. - * - * @param bool $upper Whether to return in upper or lower case. - * - * @deprecated The $upper functionality will be removed and this will revert to its PSR-7 equivalent - */ - public function getMethod(bool $upper = false): string; - - /** - * Return an instance with the provided HTTP method. - * - * While HTTP method names are typically all uppercase characters, HTTP - * method names are case-sensitive and thus implementations SHOULD NOT - * modify the given string. - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that has the - * changed request method. - * - * @param string $method Case-sensitive method. - * - * @return static - * - * @throws InvalidArgumentException for invalid HTTP methods. - */ - public function withMethod($method); - - /** - * Retrieves the URI instance. - * - * @see http://tools.ietf.org/html/rfc3986#section-4.3 - * - * @return URI - */ - public function getUri(); - - /** - * Returns an instance with the provided URI. - * - * This method MUST update the Host header of the returned request by - * default if the URI contains a host component. If the URI does not - * contain a host component, any pre-existing Host header MUST be carried - * over to the returned request. - * - * You can opt-in to preserving the original state of the Host header by - * setting `$preserveHost` to `true`. When `$preserveHost` is set to - * `true`, this method interacts with the Host header in the following ways: - * - * - If the Host header is missing or empty, and the new URI contains - * a host component, this method MUST update the Host header in the returned - * request. - * - If the Host header is missing or empty, and the new URI does not contain a - * host component, this method MUST NOT update the Host header in the returned - * request. - * - If a Host header is present and non-empty, this method MUST NOT update - * the Host header in the returned request. - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that has the - * new UriInterface instance. - * - * @see http://tools.ietf.org/html/rfc3986#section-4.3 - * - * @param URI $uri New request URI to use. - * @param bool $preserveHost Preserve the original state of the Host header. - * - * @return static - */ - public function withUri(URI $uri, $preserveHost = false); -} diff --git a/system4.4.6/HTTP/RedirectResponse.php b/system4.4.6/HTTP/RedirectResponse.php deleted file mode 100644 index d6f234ca..00000000 --- a/system4.4.6/HTTP/RedirectResponse.php +++ /dev/null @@ -1,170 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP; - -use CodeIgniter\Cookie\CookieStore; -use CodeIgniter\HTTP\Exceptions\HTTPException; -use Config\Services; - -/** - * Handle a redirect response - * - * @see \CodeIgniter\HTTP\RedirectResponseTest - */ -class RedirectResponse extends Response -{ - /** - * Sets the URI to redirect to and, optionally, the HTTP status code to use. - * If no code is provided it will be automatically determined. - * - * @param string $uri The URI path (relative to baseURL) to redirect to - * @param int|null $code HTTP status code - * - * @return $this - */ - public function to(string $uri, ?int $code = null, string $method = 'auto') - { - // If it appears to be a relative URL, then convert to full URL - // for better security. - if (strpos($uri, 'http') !== 0) { - $uri = site_url($uri); - } - - return $this->redirect($uri, $method, $code); - } - - /** - * Sets the URI to redirect to but as a reverse-routed or named route - * instead of a raw URI. - * - * @param string $route Route name or Controller::method - * - * @return $this - * - * @throws HTTPException - */ - public function route(string $route, array $params = [], ?int $code = null, string $method = 'auto') - { - $namedRoute = $route; - - $route = Services::routes()->reverseRoute($route, ...$params); - - if (! $route) { - throw HTTPException::forInvalidRedirectRoute($namedRoute); - } - - return $this->redirect(site_url($route), $method, $code); - } - - /** - * Helper function to return to previous page. - * - * Example: - * return redirect()->back(); - * - * @return $this - */ - public function back(?int $code = null, string $method = 'auto') - { - Services::session(); - - return $this->redirect(previous_url(), $method, $code); - } - - /** - * Sets the current $_GET and $_POST arrays in the session. - * This also saves the validation errors. - * - * It will then be available via the 'old()' helper function. - * - * @return $this - */ - public function withInput() - { - $session = Services::session(); - $session->setFlashdata('_ci_old_input', [ - 'get' => $_GET ?? [], - 'post' => $_POST ?? [], - ]); - - $this->withErrors(); - - return $this; - } - - /** - * Sets validation errors in the session. - * - * If the validation has any errors, transmit those back - * so they can be displayed when the validation is handled - * within a method different than displaying the form. - * - * @return $this - */ - private function withErrors(): self - { - $validation = Services::validation(); - - if ($validation->getErrors()) { - $session = Services::session(); - $session->setFlashdata('_ci_validation_errors', $validation->getErrors()); - } - - return $this; - } - - /** - * Adds a key and message to the session as Flashdata. - * - * @param array|string $message - * - * @return $this - */ - public function with(string $key, $message) - { - Services::session()->setFlashdata($key, $message); - - return $this; - } - - /** - * Copies any cookies from the global Response instance - * into this RedirectResponse. Useful when you've just - * set a cookie but need ensure that's actually sent - * with the response instead of lost. - * - * @return $this|RedirectResponse - */ - public function withCookies() - { - $this->cookieStore = new CookieStore(Services::response()->getCookies()); - - return $this; - } - - /** - * Copies any headers from the global Response instance - * into this RedirectResponse. Useful when you've just - * set a header be need to ensure its actually sent - * with the redirect response. - * - * @return $this|RedirectResponse - */ - public function withHeaders() - { - foreach (Services::response()->headers() as $name => $header) { - $this->setHeader($name, $header->getValue()); - } - - return $this; - } -} diff --git a/system4.4.6/HTTP/Request.php b/system4.4.6/HTTP/Request.php deleted file mode 100644 index afb0b22a..00000000 --- a/system4.4.6/HTTP/Request.php +++ /dev/null @@ -1,123 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP; - -use CodeIgniter\Validation\FormatRules; -use Config\App; - -/** - * Representation of an incoming, server-side HTTP request. - * - * @see \CodeIgniter\HTTP\RequestTest - */ -class Request extends OutgoingRequest implements RequestInterface -{ - use RequestTrait; - - /** - * Proxy IPs - * - * @var array<string, string> - * - * @deprecated 4.0.5 No longer used. Check the App config directly - */ - protected $proxyIPs; - - /** - * Constructor. - * - * @param App $config - * - * @deprecated 4.0.5 The $config is no longer needed and will be removed in a future version - */ - public function __construct($config = null) // @phpstan-ignore-line - { - if (empty($this->method)) { - $this->method = $this->getServer('REQUEST_METHOD') ?? 'GET'; - } - - if (empty($this->uri)) { - $this->uri = new URI(); - } - } - - /** - * Validate an IP address - * - * @param string $ip IP Address - * @param string $which IP protocol: 'ipv4' or 'ipv6' - * - * @deprecated 4.0.5 Use Validation instead - * - * @codeCoverageIgnore - */ - public function isValidIP(?string $ip = null, ?string $which = null): bool - { - return (new FormatRules())->valid_ip($ip, $which); - } - - /** - * Get the request method. - * - * @param bool $upper Whether to return in upper or lower case. - * - * @deprecated 4.0.5 The $upper functionality will be removed and this will revert to its PSR-7 equivalent - * - * @codeCoverageIgnore - */ - public function getMethod(bool $upper = false): string - { - return ($upper) ? strtoupper($this->method) : strtolower($this->method); - } - - /** - * Sets the request method. Used when spoofing the request. - * - * @return $this - * - * @deprecated 4.0.5 Use withMethod() instead for immutability - * - * @codeCoverageIgnore - */ - public function setMethod(string $method) - { - $this->method = $method; - - return $this; - } - - /** - * Returns an instance with the specified method. - * - * @param string $method - * - * @return static - */ - public function withMethod($method) - { - $request = clone $this; - - $request->method = $method; - - return $request; - } - - /** - * Retrieves the URI instance. - * - * @return URI - */ - public function getUri() - { - return $this->uri; - } -} diff --git a/system4.4.6/HTTP/RequestInterface.php b/system4.4.6/HTTP/RequestInterface.php deleted file mode 100644 index 367c4949..00000000 --- a/system4.4.6/HTTP/RequestInterface.php +++ /dev/null @@ -1,49 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP; - -/** - * Representation of an incoming, server-side HTTP request. - * - * Corresponds to Psr7\ServerRequestInterface. - */ -interface RequestInterface extends OutgoingRequestInterface -{ - /** - * Gets the user's IP address. - * Supplied by RequestTrait. - * - * @return string IP address - */ - public function getIPAddress(): string; - - /** - * Validate an IP address - * - * @param string $ip IP Address - * @param string $which IP protocol: 'ipv4' or 'ipv6' - * - * @deprecated Use Validation instead - */ - public function isValidIP(string $ip, ?string $which = null): bool; - - /** - * Fetch an item from the $_SERVER array. - * Supplied by RequestTrait. - * - * @param array|string|null $index Index for item to be fetched from $_SERVER - * @param int|null $filter A filter name to be applied - * - * @return mixed - */ - public function getServer($index = null, $filter = null); -} diff --git a/system4.4.6/HTTP/RequestTrait.php b/system4.4.6/HTTP/RequestTrait.php deleted file mode 100644 index 9c1f4c28..00000000 --- a/system4.4.6/HTTP/RequestTrait.php +++ /dev/null @@ -1,370 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP; - -use CodeIgniter\Exceptions\ConfigException; -use CodeIgniter\Validation\FormatRules; -use Config\App; - -/** - * Request Trait - * - * Additional methods to make a PSR-7 Request class - * compliant with the framework's own RequestInterface. - * - * @see https://github.com/php-fig/http-message/blob/master/src/RequestInterface.php - */ -trait RequestTrait -{ - /** - * IP address of the current user. - * - * @var string - * - * @deprecated Will become private in a future release - */ - protected $ipAddress = ''; - - /** - * Stores values we've retrieved from PHP globals. - * - * @var array{get?: array, post?: array, request?: array, cookie?: array, server?: array} - */ - protected $globals = []; - - /** - * Gets the user's IP address. - * - * @return string IP address if it can be detected. - * If the IP address is not a valid IP address, - * then will return '0.0.0.0'. - */ - public function getIPAddress(): string - { - if ($this->ipAddress) { - return $this->ipAddress; - } - - $ipValidator = [ - new FormatRules(), - 'valid_ip', - ]; - - $proxyIPs = config(App::class)->proxyIPs; - - if (! empty($proxyIPs) && (! is_array($proxyIPs) || is_int(array_key_first($proxyIPs)))) { - throw new ConfigException( - 'You must set an array with Proxy IP address key and HTTP header name value in Config\App::$proxyIPs.' - ); - } - - $this->ipAddress = $this->getServer('REMOTE_ADDR'); - - // If this is a CLI request, $this->ipAddress is null. - if ($this->ipAddress === null) { - return $this->ipAddress = '0.0.0.0'; - } - - // @TODO Extract all this IP address logic to another class. - foreach ($proxyIPs as $proxyIP => $header) { - // Check if we have an IP address or a subnet - if (strpos($proxyIP, '/') === false) { - // An IP address (and not a subnet) is specified. - // We can compare right away. - if ($proxyIP === $this->ipAddress) { - $spoof = $this->getClientIP($header); - - if ($spoof !== null) { - $this->ipAddress = $spoof; - break; - } - } - - continue; - } - - // We have a subnet ... now the heavy lifting begins - if (! isset($separator)) { - $separator = $ipValidator($this->ipAddress, 'ipv6') ? ':' : '.'; - } - - // If the proxy entry doesn't match the IP protocol - skip it - if (strpos($proxyIP, $separator) === false) { - continue; - } - - // Convert the REMOTE_ADDR IP address to binary, if needed - if (! isset($ip, $sprintf)) { - if ($separator === ':') { - // Make sure we're having the "full" IPv6 format - $ip = explode(':', str_replace('::', str_repeat(':', 9 - substr_count($this->ipAddress, ':')), $this->ipAddress)); - - for ($j = 0; $j < 8; $j++) { - $ip[$j] = intval($ip[$j], 16); - } - - $sprintf = '%016b%016b%016b%016b%016b%016b%016b%016b'; - } else { - $ip = explode('.', $this->ipAddress); - $sprintf = '%08b%08b%08b%08b'; - } - - $ip = vsprintf($sprintf, $ip); - } - - // Split the netmask length off the network address - sscanf($proxyIP, '%[^/]/%d', $netaddr, $masklen); - - // Again, an IPv6 address is most likely in a compressed form - if ($separator === ':') { - $netaddr = explode(':', str_replace('::', str_repeat(':', 9 - substr_count($netaddr, ':')), $netaddr)); - - for ($i = 0; $i < 8; $i++) { - $netaddr[$i] = intval($netaddr[$i], 16); - } - } else { - $netaddr = explode('.', $netaddr); - } - - // Convert to binary and finally compare - if (strncmp($ip, vsprintf($sprintf, $netaddr), $masklen) === 0) { - $spoof = $this->getClientIP($header); - - if ($spoof !== null) { - $this->ipAddress = $spoof; - break; - } - } - } - - if (! $ipValidator($this->ipAddress)) { - return $this->ipAddress = '0.0.0.0'; - } - - return $this->ipAddress; - } - - /** - * Gets the client IP address from the HTTP header. - */ - private function getClientIP(string $header): ?string - { - $ipValidator = [ - new FormatRules(), - 'valid_ip', - ]; - $spoof = null; - $headerObj = $this->header($header); - - if ($headerObj !== null) { - $spoof = $headerObj->getValue(); - - // Some proxies typically list the whole chain of IP - // addresses through which the client has reached us. - // e.g. client_ip, proxy_ip1, proxy_ip2, etc. - sscanf($spoof, '%[^,]', $spoof); - - if (! $ipValidator($spoof)) { - $spoof = null; - } - } - - return $spoof; - } - - /** - * Fetch an item from the $_SERVER array. - * - * @param array|string|null $index Index for item to be fetched from $_SERVER - * @param int|null $filter A filter name to be applied - * @param array|int|null $flags - * - * @return mixed - */ - public function getServer($index = null, $filter = null, $flags = null) - { - return $this->fetchGlobal('server', $index, $filter, $flags); - } - - /** - * Fetch an item from the $_ENV array. - * - * @param array|string|null $index Index for item to be fetched from $_ENV - * @param int|null $filter A filter name to be applied - * @param array|int|null $flags - * - * @return mixed - * - * @deprecated 4.4.4 This method does not work from the beginning. Use `env()`. - */ - public function getEnv($index = null, $filter = null, $flags = null) - { - // @phpstan-ignore-next-line - return $this->fetchGlobal('env', $index, $filter, $flags); - } - - /** - * Allows manually setting the value of PHP global, like $_GET, $_POST, etc. - * - * @param string $name Supergrlobal name (lowercase) - * @phpstan-param 'get'|'post'|'request'|'cookie'|'server' $name - * @param mixed $value - * - * @return $this - */ - public function setGlobal(string $name, $value) - { - $this->globals[$name] = $value; - - return $this; - } - - /** - * Fetches one or more items from a global, like cookies, get, post, etc. - * Can optionally filter the input when you retrieve it by passing in - * a filter. - * - * If $type is an array, it must conform to the input allowed by the - * filter_input_array method. - * - * http://php.net/manual/en/filter.filters.sanitize.php - * - * @param string $name Supergrlobal name (lowercase) - * @phpstan-param 'get'|'post'|'request'|'cookie'|'server' $name - * @param array|string|null $index - * @param int|null $filter Filter constant - * @param array|int|null $flags Options - * - * @return array|bool|float|int|object|string|null - */ - public function fetchGlobal(string $name, $index = null, ?int $filter = null, $flags = null) - { - if (! isset($this->globals[$name])) { - $this->populateGlobals($name); - } - - // Null filters cause null values to return. - $filter ??= FILTER_DEFAULT; - $flags = is_array($flags) ? $flags : (is_numeric($flags) ? (int) $flags : 0); - - // Return all values when $index is null - if ($index === null) { - $values = []; - - foreach ($this->globals[$name] as $key => $value) { - $values[$key] = is_array($value) - ? $this->fetchGlobal($name, $key, $filter, $flags) - : filter_var($value, $filter, $flags); - } - - return $values; - } - - // allow fetching multiple keys at once - if (is_array($index)) { - $output = []; - - foreach ($index as $key) { - $output[$key] = $this->fetchGlobal($name, $key, $filter, $flags); - } - - return $output; - } - - // Does the index contain array notation? - if (($count = preg_match_all('/(?:^[^\[]+)|\[[^]]*\]/', $index, $matches)) > 1) { - $value = $this->globals[$name]; - - for ($i = 0; $i < $count; $i++) { - $key = trim($matches[0][$i], '[]'); - - if ($key === '') { // Empty notation will return the value as array - break; - } - - if (isset($value[$key])) { - $value = $value[$key]; - } else { - return null; - } - } - } - - if (! isset($value)) { - $value = $this->globals[$name][$index] ?? null; - } - - if (is_array($value) - && ( - $filter !== FILTER_DEFAULT - || ( - (is_numeric($flags) && $flags !== 0) - || is_array($flags) && $flags !== [] - ) - ) - ) { - // Iterate over array and append filter and flags - array_walk_recursive($value, static function (&$val) use ($filter, $flags) { - $val = filter_var($val, $filter, $flags); - }); - - return $value; - } - - // Cannot filter these types of data automatically... - if (is_array($value) || is_object($value) || $value === null) { - return $value; - } - - return filter_var($value, $filter, $flags); - } - - /** - * Saves a copy of the current state of one of several PHP globals, - * so we can retrieve them later. - * - * @param string $name Superglobal name (lowercase) - * @phpstan-param 'get'|'post'|'request'|'cookie'|'server' $name - * - * @return void - */ - protected function populateGlobals(string $name) - { - if (! isset($this->globals[$name])) { - $this->globals[$name] = []; - } - - // Don't populate ENV as it might contain - // sensitive data that we don't want to get logged. - switch ($name) { - case 'get': - $this->globals['get'] = $_GET; - break; - - case 'post': - $this->globals['post'] = $_POST; - break; - - case 'request': - $this->globals['request'] = $_REQUEST; - break; - - case 'cookie': - $this->globals['cookie'] = $_COOKIE; - break; - - case 'server': - $this->globals['server'] = $_SERVER; - break; - } - } -} diff --git a/system4.4.6/HTTP/ResponsableInterface.php b/system4.4.6/HTTP/ResponsableInterface.php deleted file mode 100644 index 0cca5356..00000000 --- a/system4.4.6/HTTP/ResponsableInterface.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP; - -interface ResponsableInterface -{ - public function getResponse(): ResponseInterface; -} diff --git a/system4.4.6/HTTP/Response.php b/system4.4.6/HTTP/Response.php deleted file mode 100644 index bc37e741..00000000 --- a/system4.4.6/HTTP/Response.php +++ /dev/null @@ -1,242 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP; - -use CodeIgniter\Cookie\Cookie; -use CodeIgniter\Cookie\CookieStore; -use CodeIgniter\HTTP\Exceptions\HTTPException; -use Config\App; -use Config\Cookie as CookieConfig; -use Config\Services; - -/** - * Representation of an outgoing, server-side response. - * - * Per the HTTP specification, this interface includes properties for - * each of the following: - * - * - Protocol version - * - Status code and reason phrase - * - Headers - * - Message body - * - * @see \CodeIgniter\HTTP\ResponseTest - */ -class Response extends Message implements ResponseInterface -{ - use ResponseTrait; - - /** - * HTTP status codes - * - * @var array - */ - protected static $statusCodes = [ - // 1xx: Informational - 100 => 'Continue', - 101 => 'Switching Protocols', - 102 => 'Processing', // http://www.iana.org/go/rfc2518 - 103 => 'Early Hints', // http://www.ietf.org/rfc/rfc8297.txt - // 2xx: Success - 200 => 'OK', - 201 => 'Created', - 202 => 'Accepted', - 203 => 'Non-Authoritative Information', // 1.1 - 204 => 'No Content', - 205 => 'Reset Content', - 206 => 'Partial Content', - 207 => 'Multi-Status', // http://www.iana.org/go/rfc4918 - 208 => 'Already Reported', // http://www.iana.org/go/rfc5842 - 226 => 'IM Used', // 1.1; http://www.ietf.org/rfc/rfc3229.txt - // 3xx: Redirection - 300 => 'Multiple Choices', - 301 => 'Moved Permanently', - 302 => 'Found', // Formerly 'Moved Temporarily' - 303 => 'See Other', // 1.1 - 304 => 'Not Modified', - 305 => 'Use Proxy', // 1.1 - 306 => 'Switch Proxy', // No longer used - 307 => 'Temporary Redirect', // 1.1 - 308 => 'Permanent Redirect', // 1.1; Experimental; http://www.ietf.org/rfc/rfc7238.txt - // 4xx: Client error - 400 => 'Bad Request', - 401 => 'Unauthorized', - 402 => 'Payment Required', - 403 => 'Forbidden', - 404 => 'Not Found', - 405 => 'Method Not Allowed', - 406 => 'Not Acceptable', - 407 => 'Proxy Authentication Required', - 408 => 'Request Timeout', - 409 => 'Conflict', - 410 => 'Gone', - 411 => 'Length Required', - 412 => 'Precondition Failed', - 413 => 'Content Too Large', // https://www.iana.org/assignments/http-status-codes/http-status-codes.xml - 414 => 'URI Too Long', // https://www.iana.org/assignments/http-status-codes/http-status-codes.xml - 415 => 'Unsupported Media Type', - 416 => 'Requested Range Not Satisfiable', - 417 => 'Expectation Failed', - 418 => "I'm a teapot", // April's Fools joke; http://www.ietf.org/rfc/rfc2324.txt - // 419 (Authentication Timeout) is a non-standard status code with unknown origin - 421 => 'Misdirected Request', // http://www.iana.org/go/rfc7540 Section 9.1.2 - 422 => 'Unprocessable Content', // https://www.iana.org/assignments/http-status-codes/http-status-codes.xml - 423 => 'Locked', // http://www.iana.org/go/rfc4918 - 424 => 'Failed Dependency', // http://www.iana.org/go/rfc4918 - 425 => 'Too Early', // https://datatracker.ietf.org/doc/draft-ietf-httpbis-replay/ - 426 => 'Upgrade Required', - 428 => 'Precondition Required', // 1.1; http://www.ietf.org/rfc/rfc6585.txt - 429 => 'Too Many Requests', // 1.1; http://www.ietf.org/rfc/rfc6585.txt - 431 => 'Request Header Fields Too Large', // 1.1; http://www.ietf.org/rfc/rfc6585.txt - 451 => 'Unavailable For Legal Reasons', // http://tools.ietf.org/html/rfc7725 - 499 => 'Client Closed Request', // http://lxr.nginx.org/source/src/http/ngx_http_request.h#0133 - // 5xx: Server error - 500 => 'Internal Server Error', - 501 => 'Not Implemented', - 502 => 'Bad Gateway', - 503 => 'Service Unavailable', - 504 => 'Gateway Timeout', - 505 => 'HTTP Version Not Supported', - 506 => 'Variant Also Negotiates', // 1.1; http://www.ietf.org/rfc/rfc2295.txt - 507 => 'Insufficient Storage', // http://www.iana.org/go/rfc4918 - 508 => 'Loop Detected', // http://www.iana.org/go/rfc5842 - 510 => 'Not Extended', // http://www.ietf.org/rfc/rfc2774.txt - 511 => 'Network Authentication Required', // http://www.ietf.org/rfc/rfc6585.txt - 599 => 'Network Connect Timeout Error', // https://httpstatuses.com/599 - ]; - - /** - * The current reason phrase for this response. - * If empty string, will use the default provided for the status code. - * - * @var string - */ - protected $reason = ''; - - /** - * The current status code for this response. - * The status code is a 3-digit integer result code of the server's attempt - * to understand and satisfy the request. - * - * @var int - */ - protected $statusCode = 200; - - /** - * If true, will not write output. Useful during testing. - * - * @var bool - * - * @internal Used for framework testing, should not be relied on otherwise - */ - protected $pretend = false; - - /** - * Constructor - * - * @param App $config - * - * @todo Recommend removing reliance on config injection - */ - public function __construct($config) - { - // Default to a non-caching page. - // Also ensures that a Cache-control header exists. - $this->noCache(); - - // We need CSP object even if not enabled to avoid calls to non existing methods - $this->CSP = Services::csp(); - - $this->CSPEnabled = $config->CSPEnabled; - - $this->cookieStore = new CookieStore([]); - - $cookie = config(CookieConfig::class); - - Cookie::setDefaults($cookie); - - // Default to an HTML Content-Type. Devs can override if needed. - $this->setContentType('text/html'); - } - - /** - * Turns "pretend" mode on or off to aid in testing. - * - * Note that this is not a part of the interface so - * should not be relied on outside of internal testing. - * - * @return $this - * - * @testTag only available to test code - */ - public function pretend(bool $pretend = true) - { - $this->pretend = $pretend; - - return $this; - } - - /** - * Gets the response status code. - * - * The status code is a 3-digit integer result code of the server's attempt - * to understand and satisfy the request. - * - * @return int Status code. - */ - public function getStatusCode(): int - { - if (empty($this->statusCode)) { - throw HTTPException::forMissingResponseStatus(); - } - - return $this->statusCode; - } - - /** - * Gets the response response phrase associated with the status code. - * - * @see http://tools.ietf.org/html/rfc7231#section-6 - * @see http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml - * - * @deprecated Use getReasonPhrase() - * - * @codeCoverageIgnore - */ - public function getReason(): string - { - return $this->getReasonPhrase(); - } - - /** - * Gets the response reason phrase associated with the status code. - * - * Because a reason phrase is not a required element in a response - * status line, the reason phrase value MAY be null. Implementations MAY - * choose to return the default RFC 7231 recommended reason phrase (or those - * listed in the IANA HTTP Status Code Registry) for the response's - * status code. - * - * @see http://tools.ietf.org/html/rfc7231#section-6 - * @see http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml - * - * @return string Reason phrase; must return an empty string if none present. - */ - public function getReasonPhrase() - { - if ($this->reason === '') { - return ! empty($this->statusCode) ? static::$statusCodes[$this->statusCode] : ''; - } - - return $this->reason; - } -} diff --git a/system4.4.6/HTTP/ResponseInterface.php b/system4.4.6/HTTP/ResponseInterface.php deleted file mode 100644 index a6d41c77..00000000 --- a/system4.4.6/HTTP/ResponseInterface.php +++ /dev/null @@ -1,416 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP; - -use CodeIgniter\Cookie\Cookie; -use CodeIgniter\Cookie\CookieStore; -use CodeIgniter\HTTP\Exceptions\HTTPException; -use CodeIgniter\Pager\PagerInterface; -use DateTime; -use InvalidArgumentException; - -/** - * Representation of an outgoing, server-side response. - * Most of these methods are supplied by ResponseTrait. - * - * Per the HTTP specification, this interface includes properties for - * each of the following: - * - * - Protocol version - * - Status code and reason phrase - * - Headers - * - Message body - */ -interface ResponseInterface extends MessageInterface -{ - /** - * Constants for status codes. - * From https://en.wikipedia.org/wiki/List_of_HTTP_status_codes - */ - // Informational - public const HTTP_CONTINUE = 100; - public const HTTP_SWITCHING_PROTOCOLS = 101; - public const HTTP_PROCESSING = 102; - public const HTTP_EARLY_HINTS = 103; - public const HTTP_OK = 200; - public const HTTP_CREATED = 201; - public const HTTP_ACCEPTED = 202; - public const HTTP_NONAUTHORITATIVE_INFORMATION = 203; - public const HTTP_NO_CONTENT = 204; - public const HTTP_RESET_CONTENT = 205; - public const HTTP_PARTIAL_CONTENT = 206; - public const HTTP_MULTI_STATUS = 207; - public const HTTP_ALREADY_REPORTED = 208; - public const HTTP_IM_USED = 226; - public const HTTP_MULTIPLE_CHOICES = 300; - public const HTTP_MOVED_PERMANENTLY = 301; - public const HTTP_FOUND = 302; - public const HTTP_SEE_OTHER = 303; - public const HTTP_NOT_MODIFIED = 304; - public const HTTP_USE_PROXY = 305; - public const HTTP_SWITCH_PROXY = 306; - public const HTTP_TEMPORARY_REDIRECT = 307; - public const HTTP_PERMANENT_REDIRECT = 308; - public const HTTP_BAD_REQUEST = 400; - public const HTTP_UNAUTHORIZED = 401; - public const HTTP_PAYMENT_REQUIRED = 402; - public const HTTP_FORBIDDEN = 403; - public const HTTP_NOT_FOUND = 404; - public const HTTP_METHOD_NOT_ALLOWED = 405; - public const HTTP_NOT_ACCEPTABLE = 406; - public const HTTP_PROXY_AUTHENTICATION_REQUIRED = 407; - public const HTTP_REQUEST_TIMEOUT = 408; - public const HTTP_CONFLICT = 409; - public const HTTP_GONE = 410; - public const HTTP_LENGTH_REQUIRED = 411; - public const HTTP_PRECONDITION_FAILED = 412; - public const HTTP_PAYLOAD_TOO_LARGE = 413; - public const HTTP_URI_TOO_LONG = 414; - public const HTTP_UNSUPPORTED_MEDIA_TYPE = 415; - public const HTTP_RANGE_NOT_SATISFIABLE = 416; - public const HTTP_EXPECTATION_FAILED = 417; - public const HTTP_IM_A_TEAPOT = 418; - public const HTTP_MISDIRECTED_REQUEST = 421; - public const HTTP_UNPROCESSABLE_ENTITY = 422; - public const HTTP_LOCKED = 423; - public const HTTP_FAILED_DEPENDENCY = 424; - public const HTTP_TOO_EARLY = 425; - public const HTTP_UPGRADE_REQUIRED = 426; - public const HTTP_PRECONDITION_REQUIRED = 428; - public const HTTP_TOO_MANY_REQUESTS = 429; - public const HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE = 431; - public const HTTP_UNAVAILABLE_FOR_LEGAL_REASONS = 451; - public const HTTP_CLIENT_CLOSED_REQUEST = 499; - public const HTTP_INTERNAL_SERVER_ERROR = 500; - public const HTTP_NOT_IMPLEMENTED = 501; - public const HTTP_BAD_GATEWAY = 502; - public const HTTP_SERVICE_UNAVAILABLE = 503; - public const HTTP_GATEWAY_TIMEOUT = 504; - public const HTTP_HTTP_VERSION_NOT_SUPPORTED = 505; - public const HTTP_VARIANT_ALSO_NEGOTIATES = 506; - public const HTTP_INSUFFICIENT_STORAGE = 507; - public const HTTP_LOOP_DETECTED = 508; - public const HTTP_NOT_EXTENDED = 510; - public const HTTP_NETWORK_AUTHENTICATION_REQUIRED = 511; - public const HTTP_NETWORK_CONNECT_TIMEOUT_ERROR = 599; - - /** - * Gets the response status code. - * - * The status code is a 3-digit integer result code of the server's attempt - * to understand and satisfy the request. - * - * @return int Status code. - */ - public function getStatusCode(): int; - - /** - * Return an instance with the specified status code and, optionally, reason phrase. - * - * If no reason phrase is specified, will default recommended reason phrase for - * the response's status code. - * - * @see http://tools.ietf.org/html/rfc7231#section-6 - * @see http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml - * - * @param int $code The 3-digit integer result code to set. - * @param string $reason The reason phrase to use with the - * provided status code; if none is provided, will - * default to the IANA name. - * - * @return $this - * - * @throws HTTPException For invalid status code arguments. - */ - public function setStatusCode(int $code, string $reason = ''); - - /** - * Gets the response phrase associated with the status code. - * - * @see http://tools.ietf.org/html/rfc7231#section-6 - * @see http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml - * - * @deprecated Use getReasonPhrase() - */ - public function getReason(): string; - - /** - * Gets the response reason phrase associated with the status code. - * - * Because a reason phrase is not a required element in a response - * status line, the reason phrase value MAY be null. Implementations MAY - * choose to return the default RFC 7231 recommended reason phrase (or those - * listed in the IANA HTTP Status Code Registry) for the response's - * status code. - * - * @see http://tools.ietf.org/html/rfc7231#section-6 - * @see http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml - * - * @return string Reason phrase; must return an empty string if none present. - */ - public function getReasonPhrase(); - - // -------------------------------------------------------------------- - // Convenience Methods - // -------------------------------------------------------------------- - - /** - * Sets the date header - * - * @return $this - */ - public function setDate(DateTime $date); - - /** - * Sets the Last-Modified date header. - * - * $date can be either a string representation of the date or, - * preferably, an instance of DateTime. - * - * @param DateTime|string $date - * - * @return $this - */ - public function setLastModified($date); - - /** - * Set the Link Header - * - * @see http://tools.ietf.org/html/rfc5988 - * - * @return $this - * - * @todo Recommend moving to Pager - */ - public function setLink(PagerInterface $pager); - - /** - * Sets the Content Type header for this response with the mime type - * and, optionally, the charset. - * - * @return $this - */ - public function setContentType(string $mime, string $charset = 'UTF-8'); - - // -------------------------------------------------------------------- - // Formatter Methods - // -------------------------------------------------------------------- - - /** - * Converts the $body into JSON and sets the Content Type header. - * - * @param array|string $body - * - * @return $this - */ - public function setJSON($body, bool $unencoded = false); - - /** - * Returns the current body, converted to JSON is it isn't already. - * - * @return bool|string|null - * - * @throws InvalidArgumentException If the body property is not array. - */ - public function getJSON(); - - /** - * Converts $body into XML, and sets the correct Content-Type. - * - * @param array|string $body - * - * @return $this - */ - public function setXML($body); - - /** - * Retrieves the current body into XML and returns it. - * - * @return bool|string|null - * - * @throws InvalidArgumentException If the body property is not array. - */ - public function getXML(); - - // -------------------------------------------------------------------- - // Cache Control Methods - // - // http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9 - // -------------------------------------------------------------------- - - /** - * Sets the appropriate headers to ensure this response - * is not cached by the browsers. - * - * @return $this - */ - public function noCache(); - - /** - * A shortcut method that allows the developer to set all of the - * cache-control headers in one method call. - * - * The options array is used to provide the cache-control directives - * for the header. It might look something like: - * - * $options = [ - * 'max-age' => 300, - * 's-maxage' => 900 - * 'etag' => 'abcde', - * ]; - * - * Typical options are: - * - etag - * - last-modified - * - max-age - * - s-maxage - * - private - * - public - * - must-revalidate - * - proxy-revalidate - * - no-transform - * - * @return $this - */ - public function setCache(array $options = []); - - // -------------------------------------------------------------------- - // Output Methods - // -------------------------------------------------------------------- - - /** - * Sends the output to the browser. - * - * @return $this - */ - public function send(); - - /** - * Sends the headers of this HTTP request to the browser. - * - * @return $this - */ - public function sendHeaders(); - - /** - * Sends the Body of the message to the browser. - * - * @return $this - */ - public function sendBody(); - - // -------------------------------------------------------------------- - // Cookie Methods - // -------------------------------------------------------------------- - - /** - * Set a cookie - * - * Accepts an arbitrary number of binds (up to 7) or an associative - * array in the first parameter containing all the values. - * - * @param array|string $name Cookie name or array containing binds - * @param string $value Cookie value - * @param string $expire Cookie expiration time in seconds - * @param string $domain Cookie domain (e.g.: '.yourdomain.com') - * @param string $path Cookie path (default: '/') - * @param string $prefix Cookie name prefix - * @param bool $secure Whether to only transfer cookies via SSL - * @param bool $httponly Whether only make the cookie accessible via HTTP (no javascript) - * @param string|null $samesite - * - * @return $this - */ - public function setCookie( - $name, - $value = '', - $expire = '', - $domain = '', - $path = '/', - $prefix = '', - $secure = false, - $httponly = false, - $samesite = null - ); - - /** - * Checks to see if the Response has a specified cookie or not. - */ - public function hasCookie(string $name, ?string $value = null, string $prefix = ''): bool; - - /** - * Returns the cookie - * - * @return Cookie|Cookie[]|null - */ - public function getCookie(?string $name = null, string $prefix = ''); - - /** - * Sets a cookie to be deleted when the response is sent. - * - * @return $this - */ - public function deleteCookie(string $name = '', string $domain = '', string $path = '/', string $prefix = ''); - - /** - * Returns all cookies currently set. - * - * @return Cookie[] - */ - public function getCookies(); - - /** - * Returns the `CookieStore` instance. - * - * @return CookieStore - */ - public function getCookieStore(); - - // -------------------------------------------------------------------- - // Response Methods - // -------------------------------------------------------------------- - - /** - * Perform a redirect to a new URL, in two flavors: header or location. - * - * @param string $uri The URI to redirect to - * @param int $code The type of redirection, defaults to 302 - * - * @return $this - * - * @throws HTTPException For invalid status code. - */ - public function redirect(string $uri, string $method = 'auto', ?int $code = null); - - /** - * Force a download. - * - * Generates the headers that force a download to happen. And - * sends the file to the browser. - * - * @param string $filename The path to the file to send - * @param string|null $data The data to be downloaded - * @param bool $setMime Whether to try and send the actual MIME type - * - * @return DownloadResponse|null - */ - public function download(string $filename = '', $data = '', bool $setMime = false); - - // -------------------------------------------------------------------- - // CSP Methods - // -------------------------------------------------------------------- - - /** - * Get Content Security Policy handler. - */ - public function getCSP(): ContentSecurityPolicy; -} diff --git a/system4.4.6/HTTP/ResponseTrait.php b/system4.4.6/HTTP/ResponseTrait.php deleted file mode 100644 index b385bfea..00000000 --- a/system4.4.6/HTTP/ResponseTrait.php +++ /dev/null @@ -1,818 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP; - -use CodeIgniter\Cookie\Cookie; -use CodeIgniter\Cookie\CookieStore; -use CodeIgniter\Cookie\Exceptions\CookieException; -use CodeIgniter\HTTP\Exceptions\HTTPException; -use CodeIgniter\I18n\Time; -use CodeIgniter\Pager\PagerInterface; -use CodeIgniter\Security\Exceptions\SecurityException; -use Config\Cookie as CookieConfig; -use Config\Services; -use DateTime; -use DateTimeZone; -use InvalidArgumentException; - -/** - * Response Trait - * - * Additional methods to make a PSR-7 Response class - * compliant with the framework's own ResponseInterface. - * - * @see https://github.com/php-fig/http-message/blob/master/src/ResponseInterface.php - */ -trait ResponseTrait -{ - /** - * Whether Content Security Policy is being enforced. - * - * @var bool - * - * @deprecated Use $this->CSP->enabled() instead. - */ - protected $CSPEnabled = false; - - /** - * Content security policy handler - * - * @var ContentSecurityPolicy - * - * @deprecated Will be protected. Use `getCSP()` instead. - */ - public $CSP; - - /** - * CookieStore instance. - * - * @var CookieStore - */ - protected $cookieStore; - - /** - * Set a cookie name prefix if you need to avoid collisions - * - * @var string - * - * @deprecated Use the dedicated Cookie class instead. - */ - protected $cookiePrefix = ''; - - /** - * Set to .your-domain.com for site-wide cookies - * - * @var string - * - * @deprecated Use the dedicated Cookie class instead. - */ - protected $cookieDomain = ''; - - /** - * Typically will be a forward slash - * - * @var string - * - * @deprecated Use the dedicated Cookie class instead. - */ - protected $cookiePath = '/'; - - /** - * Cookie will only be set if a secure HTTPS connection exists. - * - * @var bool - * - * @deprecated Use the dedicated Cookie class instead. - */ - protected $cookieSecure = false; - - /** - * Cookie will only be accessible via HTTP(S) (no javascript) - * - * @var bool - * - * @deprecated Use the dedicated Cookie class instead. - */ - protected $cookieHTTPOnly = false; - - /** - * Cookie SameSite setting - * - * @var string - * - * @deprecated Use the dedicated Cookie class instead. - */ - protected $cookieSameSite = Cookie::SAMESITE_LAX; - - /** - * Stores all cookies that were set in the response. - * - * @var array - * - * @deprecated Use the dedicated Cookie class instead. - */ - protected $cookies = []; - - /** - * Type of format the body is in. - * Valid: html, json, xml - * - * @var string - */ - protected $bodyFormat = 'html'; - - /** - * Return an instance with the specified status code and, optionally, reason phrase. - * - * If no reason phrase is specified, will default recommended reason phrase for - * the response's status code. - * - * @see http://tools.ietf.org/html/rfc7231#section-6 - * @see http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml - * - * @param int $code The 3-digit integer result code to set. - * @param string $reason The reason phrase to use with the - * provided status code; if none is provided, will - * default to the IANA name. - * - * @return $this - * - * @throws HTTPException For invalid status code arguments. - */ - public function setStatusCode(int $code, string $reason = '') - { - // Valid range? - if ($code < 100 || $code > 599) { - throw HTTPException::forInvalidStatusCode($code); - } - - // Unknown and no message? - if (! array_key_exists($code, static::$statusCodes) && ($reason === '')) { - throw HTTPException::forUnkownStatusCode($code); - } - - $this->statusCode = $code; - - $this->reason = ($reason !== '') ? $reason : static::$statusCodes[$code]; - - return $this; - } - - // -------------------------------------------------------------------- - // Convenience Methods - // -------------------------------------------------------------------- - - /** - * Sets the date header - * - * @return $this - */ - public function setDate(DateTime $date) - { - $date->setTimezone(new DateTimeZone('UTC')); - - $this->setHeader('Date', $date->format('D, d M Y H:i:s') . ' GMT'); - - return $this; - } - - /** - * Set the Link Header - * - * @see http://tools.ietf.org/html/rfc5988 - * - * @return $this - * - * @todo Recommend moving to Pager - */ - public function setLink(PagerInterface $pager) - { - $links = ''; - - if ($previous = $pager->getPreviousPageURI()) { - $links .= '<' . $pager->getPageURI($pager->getFirstPage()) . '>; rel="first",'; - $links .= '<' . $previous . '>; rel="prev"'; - } - - if (($next = $pager->getNextPageURI()) && $previous) { - $links .= ','; - } - - if ($next) { - $links .= '<' . $next . '>; rel="next",'; - $links .= '<' . $pager->getPageURI($pager->getLastPage()) . '>; rel="last"'; - } - - $this->setHeader('Link', $links); - - return $this; - } - - /** - * Sets the Content Type header for this response with the mime type - * and, optionally, the charset. - * - * @return $this - */ - public function setContentType(string $mime, string $charset = 'UTF-8') - { - // add charset attribute if not already there and provided as parm - if ((strpos($mime, 'charset=') < 1) && ($charset !== '')) { - $mime .= '; charset=' . $charset; - } - - $this->removeHeader('Content-Type'); // replace existing content type - $this->setHeader('Content-Type', $mime); - - return $this; - } - - /** - * Converts the $body into JSON and sets the Content Type header. - * - * @param array|object|string $body - * - * @return $this - */ - public function setJSON($body, bool $unencoded = false) - { - $this->body = $this->formatBody($body, 'json' . ($unencoded ? '-unencoded' : '')); - - return $this; - } - - /** - * Returns the current body, converted to JSON is it isn't already. - * - * @return string|null - * - * @throws InvalidArgumentException If the body property is not array. - */ - public function getJSON() - { - $body = $this->body; - - if ($this->bodyFormat !== 'json') { - $body = Services::format()->getFormatter('application/json')->format($body); - } - - return $body ?: null; - } - - /** - * Converts $body into XML, and sets the correct Content-Type. - * - * @param array|string $body - * - * @return $this - */ - public function setXML($body) - { - $this->body = $this->formatBody($body, 'xml'); - - return $this; - } - - /** - * Retrieves the current body into XML and returns it. - * - * @return bool|string|null - * - * @throws InvalidArgumentException If the body property is not array. - */ - public function getXML() - { - $body = $this->body; - - if ($this->bodyFormat !== 'xml') { - $body = Services::format()->getFormatter('application/xml')->format($body); - } - - return $body; - } - - /** - * Handles conversion of the data into the appropriate format, - * and sets the correct Content-Type header for our response. - * - * @param array|object|string $body - * @param string $format Valid: json, xml - * - * @return false|string - * - * @throws InvalidArgumentException If the body property is not string or array. - */ - protected function formatBody($body, string $format) - { - $this->bodyFormat = ($format === 'json-unencoded' ? 'json' : $format); - $mime = "application/{$this->bodyFormat}"; - $this->setContentType($mime); - - // Nothing much to do for a string... - if (! is_string($body) || $format === 'json-unencoded') { - $body = Services::format()->getFormatter($mime)->format($body); - } - - return $body; - } - - // -------------------------------------------------------------------- - // Cache Control Methods - // - // http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9 - // -------------------------------------------------------------------- - - /** - * Sets the appropriate headers to ensure this response - * is not cached by the browsers. - * - * @return $this - * - * @todo Recommend researching these directives, might need: 'private', 'no-transform', 'no-store', 'must-revalidate' - * - * @see DownloadResponse::noCache() - */ - public function noCache() - { - $this->removeHeader('Cache-Control'); - $this->setHeader('Cache-Control', ['no-store', 'max-age=0', 'no-cache']); - - return $this; - } - - /** - * A shortcut method that allows the developer to set all of the - * cache-control headers in one method call. - * - * The options array is used to provide the cache-control directives - * for the header. It might look something like: - * - * $options = [ - * 'max-age' => 300, - * 's-maxage' => 900 - * 'etag' => 'abcde', - * ]; - * - * Typical options are: - * - etag - * - last-modified - * - max-age - * - s-maxage - * - private - * - public - * - must-revalidate - * - proxy-revalidate - * - no-transform - * - * @return $this - */ - public function setCache(array $options = []) - { - if ($options === []) { - return $this; - } - - $this->removeHeader('Cache-Control'); - $this->removeHeader('ETag'); - - // ETag - if (isset($options['etag'])) { - $this->setHeader('ETag', $options['etag']); - unset($options['etag']); - } - - // Last Modified - if (isset($options['last-modified'])) { - $this->setLastModified($options['last-modified']); - - unset($options['last-modified']); - } - - $this->setHeader('Cache-Control', $options); - - return $this; - } - - /** - * Sets the Last-Modified date header. - * - * $date can be either a string representation of the date or, - * preferably, an instance of DateTime. - * - * @param DateTime|string $date - * - * @return $this - */ - public function setLastModified($date) - { - if ($date instanceof DateTime) { - $date->setTimezone(new DateTimeZone('UTC')); - $this->setHeader('Last-Modified', $date->format('D, d M Y H:i:s') . ' GMT'); - } elseif (is_string($date)) { - $this->setHeader('Last-Modified', $date); - } - - return $this; - } - - // -------------------------------------------------------------------- - // Output Methods - // -------------------------------------------------------------------- - - /** - * Sends the output to the browser. - * - * @return $this - */ - public function send() - { - // If we're enforcing a Content Security Policy, - // we need to give it a chance to build out it's headers. - if ($this->CSP->enabled()) { - $this->CSP->finalize($this); - } else { - $this->body = str_replace(['{csp-style-nonce}', '{csp-script-nonce}'], '', $this->body ?? ''); - } - - $this->sendHeaders(); - $this->sendCookies(); - $this->sendBody(); - - return $this; - } - - /** - * Sends the headers of this HTTP response to the browser. - * - * @return $this - */ - public function sendHeaders() - { - // Have the headers already been sent? - if ($this->pretend || headers_sent()) { - return $this; - } - - // Per spec, MUST be sent with each request, if possible. - // http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html - if (! isset($this->headers['Date']) && PHP_SAPI !== 'cli-server') { - $this->setDate(DateTime::createFromFormat('U', (string) Time::now()->getTimestamp())); - } - - // HTTP Status - header(sprintf('HTTP/%s %s %s', $this->getProtocolVersion(), $this->getStatusCode(), $this->getReasonPhrase()), true, $this->getStatusCode()); - - // Send all of our headers - foreach (array_keys($this->headers()) as $name) { - header($name . ': ' . $this->getHeaderLine($name), false, $this->getStatusCode()); - } - - return $this; - } - - /** - * Sends the Body of the message to the browser. - * - * @return $this - */ - public function sendBody() - { - echo $this->body; - - return $this; - } - - /** - * Perform a redirect to a new URL, in two flavors: header or location. - * - * @param string $uri The URI to redirect to - * @param int|null $code The type of redirection, defaults to 302 - * - * @return $this - * - * @throws HTTPException For invalid status code. - */ - public function redirect(string $uri, string $method = 'auto', ?int $code = null) - { - // IIS environment likely? Use 'refresh' for better compatibility - if ( - $method === 'auto' - && isset($_SERVER['SERVER_SOFTWARE']) - && strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS') !== false - ) { - $method = 'refresh'; - } elseif ($method !== 'refresh' && $code === null) { - // override status code for HTTP/1.1 & higher - if ( - isset($_SERVER['SERVER_PROTOCOL'], $_SERVER['REQUEST_METHOD']) - && $this->getProtocolVersion() >= 1.1 - ) { - if ($_SERVER['REQUEST_METHOD'] === 'GET') { - $code = 302; - } elseif (in_array($_SERVER['REQUEST_METHOD'], ['POST', 'PUT', 'DELETE'], true)) { - // reference: https://en.wikipedia.org/wiki/Post/Redirect/Get - $code = 303; - } else { - $code = 307; - } - } - } - - if ($code === null) { - $code = 302; - } - - switch ($method) { - case 'refresh': - $this->setHeader('Refresh', '0;url=' . $uri); - break; - - default: - $this->setHeader('Location', $uri); - break; - } - - $this->setStatusCode($code); - - return $this; - } - - /** - * Set a cookie - * - * Accepts an arbitrary number of binds (up to 7) or an associative - * array in the first parameter containing all the values. - * - * @param array|Cookie|string $name Cookie name / array containing binds / Cookie object - * @param string $value Cookie value - * @param string $expire Cookie expiration time in seconds - * @param string $domain Cookie domain (e.g.: '.yourdomain.com') - * @param string $path Cookie path (default: '/') - * @param string $prefix Cookie name prefix ('': the default prefix) - * @param bool|null $secure Whether to only transfer cookies via SSL - * @param bool|null $httponly Whether only make the cookie accessible via HTTP (no javascript) - * @param string|null $samesite - * - * @return $this - */ - public function setCookie( - $name, - $value = '', - $expire = '', - $domain = '', - $path = '/', - $prefix = '', - $secure = null, - $httponly = null, - $samesite = null - ) { - if ($name instanceof Cookie) { - $this->cookieStore = $this->cookieStore->put($name); - - return $this; - } - - /** @var CookieConfig|null $cookieConfig */ - $cookieConfig = config(CookieConfig::class); - - if ($cookieConfig instanceof CookieConfig) { - $secure ??= $cookieConfig->secure; - $httponly ??= $cookieConfig->httponly; - $samesite ??= $cookieConfig->samesite; - } - - if (is_array($name)) { - // always leave 'name' in last place, as the loop will break otherwise, due to ${$item} - foreach (['samesite', 'value', 'expire', 'domain', 'path', 'prefix', 'secure', 'httponly', 'name'] as $item) { - if (isset($name[$item])) { - ${$item} = $name[$item]; - } - } - } - - if (is_numeric($expire)) { - $expire = $expire > 0 ? Time::now()->getTimestamp() + $expire : 0; - } - - $cookie = new Cookie($name, $value, [ - 'expires' => $expire ?: 0, - 'domain' => $domain, - 'path' => $path, - 'prefix' => $prefix, - 'secure' => $secure, - 'httponly' => $httponly, - 'samesite' => $samesite ?? '', - ]); - - $this->cookieStore = $this->cookieStore->put($cookie); - - return $this; - } - - /** - * Returns the `CookieStore` instance. - * - * @return CookieStore - */ - public function getCookieStore() - { - return $this->cookieStore; - } - - /** - * Checks to see if the Response has a specified cookie or not. - */ - public function hasCookie(string $name, ?string $value = null, string $prefix = ''): bool - { - $prefix = $prefix ?: Cookie::setDefaults()['prefix']; // to retain BC - - return $this->cookieStore->has($name, $prefix, $value); - } - - /** - * Returns the cookie - * - * @param string $prefix Cookie prefix. - * '': the default prefix - * - * @return Cookie|Cookie[]|null - */ - public function getCookie(?string $name = null, string $prefix = '') - { - if ((string) $name === '') { - return $this->cookieStore->display(); - } - - try { - $prefix = $prefix ?: Cookie::setDefaults()['prefix']; // to retain BC - - return $this->cookieStore->get($name, $prefix); - } catch (CookieException $e) { - log_message('error', (string) $e); - - return null; - } - } - - /** - * Sets a cookie to be deleted when the response is sent. - * - * @return $this - */ - public function deleteCookie(string $name = '', string $domain = '', string $path = '/', string $prefix = '') - { - if ($name === '') { - return $this; - } - - $prefix = $prefix ?: Cookie::setDefaults()['prefix']; // to retain BC - - $prefixed = $prefix . $name; - $store = $this->cookieStore; - $found = false; - - /** @var Cookie $cookie */ - foreach ($store as $cookie) { - if ($cookie->getPrefixedName() === $prefixed) { - if ($domain !== $cookie->getDomain()) { - continue; - } - - if ($path !== $cookie->getPath()) { - continue; - } - - $cookie = $cookie->withValue('')->withExpired(); - $found = true; - - $this->cookieStore = $store->put($cookie); - break; - } - } - - if (! $found) { - $this->setCookie($name, '', '', $domain, $path, $prefix); - } - - return $this; - } - - /** - * Returns all cookies currently set. - * - * @return Cookie[] - */ - public function getCookies() - { - return $this->cookieStore->display(); - } - - /** - * Actually sets the cookies. - * - * @return void - */ - protected function sendCookies() - { - if ($this->pretend) { - return; - } - - $this->dispatchCookies(); - } - - private function dispatchCookies(): void - { - /** @var IncomingRequest $request */ - $request = Services::request(); - - foreach ($this->cookieStore->display() as $cookie) { - if ($cookie->isSecure() && ! $request->isSecure()) { - throw SecurityException::forDisallowedAction(); - } - - $name = $cookie->getPrefixedName(); - $value = $cookie->getValue(); - $options = $cookie->getOptions(); - - if ($cookie->isRaw()) { - $this->doSetRawCookie($name, $value, $options); - } else { - $this->doSetCookie($name, $value, $options); - } - } - - $this->cookieStore->clear(); - } - - /** - * Extracted call to `setrawcookie()` in order to run unit tests on it. - * - * @codeCoverageIgnore - */ - private function doSetRawCookie(string $name, string $value, array $options): void - { - setrawcookie($name, $value, $options); - } - - /** - * Extracted call to `setcookie()` in order to run unit tests on it. - * - * @codeCoverageIgnore - */ - private function doSetCookie(string $name, string $value, array $options): void - { - setcookie($name, $value, $options); - } - - /** - * Force a download. - * - * Generates the headers that force a download to happen. And - * sends the file to the browser. - * - * @param string $filename The name you want the downloaded file to be named - * or the path to the file to send - * @param string|null $data The data to be downloaded. Set null if the $filename is the file path - * @param bool $setMime Whether to try and send the actual MIME type - * - * @return DownloadResponse|null - */ - public function download(string $filename = '', $data = '', bool $setMime = false) - { - if ($filename === '' || $data === '') { - return null; - } - - $filepath = ''; - if ($data === null) { - $filepath = $filename; - $filename = explode('/', str_replace(DIRECTORY_SEPARATOR, '/', $filename)); - $filename = end($filename); - } - - $response = new DownloadResponse($filename, $setMime); - - if ($filepath !== '') { - $response->setFilePath($filepath); - } elseif ($data !== null) { - $response->setBinary($data); - } - - return $response; - } - - public function getCSP(): ContentSecurityPolicy - { - return $this->CSP; - } -} diff --git a/system4.4.6/HTTP/SiteURI.php b/system4.4.6/HTTP/SiteURI.php deleted file mode 100644 index 8daa5ab2..00000000 --- a/system4.4.6/HTTP/SiteURI.php +++ /dev/null @@ -1,435 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP; - -use BadMethodCallException; -use CodeIgniter\Exceptions\ConfigException; -use CodeIgniter\HTTP\Exceptions\HTTPException; -use Config\App; - -/** - * URI for the application site - * - * @see \CodeIgniter\HTTP\SiteURITest - */ -class SiteURI extends URI -{ - /** - * The current baseURL. - */ - private URI $baseURL; - - /** - * The path part of baseURL. - * - * The baseURL "http://example.com/" → '/' - * The baseURL "http://localhost:8888/ci431/public/" → '/ci431/public/' - */ - private string $basePathWithoutIndexPage; - - /** - * The Index File. - */ - private string $indexPage; - - /** - * List of URI segments in baseURL and indexPage. - * - * If the URI is "http://localhost:8888/ci431/public/index.php/test?a=b", - * and the baseURL is "http://localhost:8888/ci431/public/", then: - * $baseSegments = [ - * 0 => 'ci431', - * 1 => 'public', - * 2 => 'index.php', - * ]; - */ - private array $baseSegments; - - /** - * List of URI segments after indexPage. - * - * The word "URI Segments" originally means only the URI path part relative - * to the baseURL. - * - * If the URI is "http://localhost:8888/ci431/public/index.php/test?a=b", - * and the baseURL is "http://localhost:8888/ci431/public/", then: - * $segments = [ - * 0 => 'test', - * ]; - * - * @var array - * - * @deprecated This property will be private. - */ - protected $segments; - - /** - * URI path relative to baseURL. - * - * If the baseURL contains sub folders, this value will be different from - * the current URI path. - * - * This value never starts with '/'. - */ - private string $routePath; - - /** - * @param string $relativePath URI path relative to baseURL. May include - * queries or fragments. - * @param string|null $host Optional current hostname. - * @param string|null $scheme Optional scheme. 'http' or 'https'. - * @phpstan-param 'http'|'https'|null $scheme - */ - public function __construct( - App $configApp, - string $relativePath = '', - ?string $host = null, - ?string $scheme = null - ) { - $this->indexPage = $configApp->indexPage; - - $this->baseURL = $this->determineBaseURL($configApp, $host, $scheme); - - $this->setBasePath(); - - // Fix routePath, query, fragment - [$routePath, $query, $fragment] = $this->parseRelativePath($relativePath); - - // Fix indexPage and routePath - $indexPageRoutePath = $this->getIndexPageRoutePath($routePath); - - // Fix the current URI - $uri = $this->baseURL . $indexPageRoutePath; - - // applyParts - $parts = parse_url($uri); - if ($parts === false) { - throw HTTPException::forUnableToParseURI($uri); - } - $parts['query'] = $query; - $parts['fragment'] = $fragment; - $this->applyParts($parts); - - $this->setRoutePath($routePath); - } - - private function parseRelativePath(string $relativePath): array - { - $parts = parse_url('http://dummy/' . $relativePath); - if ($parts === false) { - throw HTTPException::forUnableToParseURI($relativePath); - } - - $routePath = $relativePath === '/' ? '/' : ltrim($parts['path'], '/'); - - $query = $parts['query'] ?? ''; - $fragment = $parts['fragment'] ?? ''; - - return [$routePath, $query, $fragment]; - } - - private function determineBaseURL( - App $configApp, - ?string $host, - ?string $scheme - ): URI { - $baseURL = $this->normalizeBaseURL($configApp); - - $uri = new URI($baseURL); - - // Update scheme - if ($scheme !== null && $scheme !== '') { - $uri->setScheme($scheme); - } elseif ($configApp->forceGlobalSecureRequests) { - $uri->setScheme('https'); - } - - // Update host - if ($host !== null) { - $uri->setHost($host); - } - - return $uri; - } - - private function getIndexPageRoutePath(string $routePath): string - { - // Remove starting slash unless it is `/`. - if ($routePath !== '' && $routePath[0] === '/' && $routePath !== '/') { - $routePath = ltrim($routePath, '/'); - } - - // Check for an index page - $indexPage = ''; - if ($this->indexPage !== '') { - $indexPage = $this->indexPage; - - // Check if we need a separator - if ($routePath !== '' && $routePath[0] !== '/' && $routePath[0] !== '?') { - $indexPage .= '/'; - } - } - - $indexPageRoutePath = $indexPage . $routePath; - - if ($indexPageRoutePath === '/') { - $indexPageRoutePath = ''; - } - - return $indexPageRoutePath; - } - - private function normalizeBaseURL(App $configApp): string - { - // It's possible the user forgot a trailing slash on their - // baseURL, so let's help them out. - $baseURL = rtrim($configApp->baseURL, '/ ') . '/'; - - // Validate baseURL - if (filter_var($baseURL, FILTER_VALIDATE_URL) === false) { - throw new ConfigException( - 'Config\App::$baseURL "' . $baseURL . '" is not a valid URL.' - ); - } - - return $baseURL; - } - - /** - * Sets basePathWithoutIndexPage and baseSegments. - */ - private function setBasePath(): void - { - $this->basePathWithoutIndexPage = $this->baseURL->getPath(); - - $this->baseSegments = $this->convertToSegments($this->basePathWithoutIndexPage); - - if ($this->indexPage !== '') { - $this->baseSegments[] = $this->indexPage; - } - } - - /** - * @deprecated - */ - public function setBaseURL(string $baseURL): void - { - throw new BadMethodCallException('Cannot use this method.'); - } - - /** - * @deprecated - */ - public function setURI(?string $uri = null) - { - throw new BadMethodCallException('Cannot use this method.'); - } - - /** - * Returns the baseURL. - * - * @interal - */ - public function getBaseURL(): string - { - return (string) $this->baseURL; - } - - /** - * Returns the URI path relative to baseURL. - * - * @return string The Route path. - */ - public function getRoutePath(): string - { - return $this->routePath; - } - - /** - * Formats the URI as a string. - */ - public function __toString(): string - { - return static::createURIString( - $this->getScheme(), - $this->getAuthority(), - $this->getPath(), - $this->getQuery(), - $this->getFragment() - ); - } - - /** - * Sets the route path (and segments). - * - * @return $this - */ - public function setPath(string $path) - { - $this->setRoutePath($path); - - return $this; - } - - /** - * Sets the route path (and segments). - */ - private function setRoutePath(string $routePath): void - { - $routePath = $this->filterPath($routePath); - - $indexPageRoutePath = $this->getIndexPageRoutePath($routePath); - - $this->path = $this->basePathWithoutIndexPage . $indexPageRoutePath; - - $this->routePath = ltrim($routePath, '/'); - - $this->segments = $this->convertToSegments($this->routePath); - } - - /** - * Converts path to segments - */ - private function convertToSegments(string $path): array - { - $tempPath = trim($path, '/'); - - return ($tempPath === '') ? [] : explode('/', $tempPath); - } - - /** - * Sets the path portion of the URI based on segments. - * - * @return $this - * - * @deprecated This method will be private. - */ - public function refreshPath() - { - $allSegments = array_merge($this->baseSegments, $this->segments); - $this->path = '/' . $this->filterPath(implode('/', $allSegments)); - - if ($this->routePath === '/' && $this->path !== '/') { - $this->path .= '/'; - } - - $this->routePath = $this->filterPath(implode('/', $this->segments)); - - return $this; - } - - /** - * Saves our parts from a parse_url() call. - */ - protected function applyParts(array $parts): void - { - if (! empty($parts['host'])) { - $this->host = $parts['host']; - } - if (! empty($parts['user'])) { - $this->user = $parts['user']; - } - if (isset($parts['path']) && $parts['path'] !== '') { - $this->path = $this->filterPath($parts['path']); - } - if (! empty($parts['query'])) { - $this->setQuery($parts['query']); - } - if (! empty($parts['fragment'])) { - $this->fragment = $parts['fragment']; - } - - // Scheme - if (isset($parts['scheme'])) { - $this->setScheme(rtrim($parts['scheme'], ':/')); - } else { - $this->setScheme('http'); - } - - // Port - if (isset($parts['port']) && $parts['port'] !== null) { - // Valid port numbers are enforced by earlier parse_url() or setPort() - $this->port = $parts['port']; - } - - if (isset($parts['pass'])) { - $this->password = $parts['pass']; - } - } - - /** - * For base_url() helper. - * - * @param array|string $relativePath URI string or array of URI segments. - * @param string|null $scheme URI scheme. E.g., http, ftp. If empty - * string '' is set, a protocol-relative - * link is returned. - */ - public function baseUrl($relativePath = '', ?string $scheme = null): string - { - $relativePath = $this->stringifyRelativePath($relativePath); - - $config = clone config(App::class); - $config->indexPage = ''; - - $host = $this->getHost(); - - $uri = new self($config, $relativePath, $host, $scheme); - - // Support protocol-relative links - if ($scheme === '') { - return substr((string) $uri, strlen($uri->getScheme()) + 1); - } - - return (string) $uri; - } - - /** - * @param array|string $relativePath URI string or array of URI segments - */ - private function stringifyRelativePath($relativePath): string - { - if (is_array($relativePath)) { - $relativePath = implode('/', $relativePath); - } - - return $relativePath; - } - - /** - * For site_url() helper. - * - * @param array|string $relativePath URI string or array of URI segments. - * @param string|null $scheme URI scheme. E.g., http, ftp. If empty - * string '' is set, a protocol-relative - * link is returned. - * @param App|null $config Alternate configuration to use. - */ - public function siteUrl($relativePath = '', ?string $scheme = null, ?App $config = null): string - { - $relativePath = $this->stringifyRelativePath($relativePath); - - // Check current host. - $host = $config === null ? $this->getHost() : null; - - $config ??= config(App::class); - - $uri = new self($config, $relativePath, $host, $scheme); - - // Support protocol-relative links - if ($scheme === '') { - return substr((string) $uri, strlen($uri->getScheme()) + 1); - } - - return (string) $uri; - } -} diff --git a/system4.4.6/HTTP/SiteURIFactory.php b/system4.4.6/HTTP/SiteURIFactory.php deleted file mode 100644 index 36b9d705..00000000 --- a/system4.4.6/HTTP/SiteURIFactory.php +++ /dev/null @@ -1,254 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP; - -use CodeIgniter\HTTP\Exceptions\HTTPException; -use CodeIgniter\Superglobals; -use Config\App; - -/** - * Creates SiteURI using superglobals. - * - * This class also updates superglobal $_SERVER and $_GET. - * - * @see \CodeIgniter\HTTP\SiteURIFactoryTest - */ -final class SiteURIFactory -{ - private App $appConfig; - private Superglobals $superglobals; - - public function __construct(App $appConfig, Superglobals $superglobals) - { - $this->appConfig = $appConfig; - $this->superglobals = $superglobals; - } - - /** - * Create the current URI object from superglobals. - * - * This method updates superglobal $_SERVER and $_GET. - */ - public function createFromGlobals(): SiteURI - { - $routePath = $this->detectRoutePath(); - - return $this->createURIFromRoutePath($routePath); - } - - /** - * Create the SiteURI object from URI string. - * - * @internal Used for testing purposes only. - * @testTag - */ - public function createFromString(string $uri): SiteURI - { - // Validate URI - if (filter_var($uri, FILTER_VALIDATE_URL) === false) { - throw HTTPException::forUnableToParseURI($uri); - } - - $parts = parse_url($uri); - - if ($parts === false) { - throw HTTPException::forUnableToParseURI($uri); - } - - $query = $fragment = ''; - if (isset($parts['query'])) { - $query = '?' . $parts['query']; - } - if (isset($parts['fragment'])) { - $fragment = '#' . $parts['fragment']; - } - - $relativePath = ($parts['path'] ?? '') . $query . $fragment; - $host = $this->getValidHost($parts['host']); - - return new SiteURI($this->appConfig, $relativePath, $host, $parts['scheme']); - } - - /** - * Detects the current URI path relative to baseURL based on the URIProtocol - * Config setting. - * - * @param string $protocol URIProtocol - * - * @return string The route path - * - * @internal Used for testing purposes only. - * @testTag - */ - public function detectRoutePath(string $protocol = ''): string - { - if ($protocol === '') { - $protocol = $this->appConfig->uriProtocol; - } - - switch ($protocol) { - case 'REQUEST_URI': - $routePath = $this->parseRequestURI(); - break; - - case 'QUERY_STRING': - $routePath = $this->parseQueryString(); - break; - - case 'PATH_INFO': - default: - $routePath = $this->superglobals->server($protocol) ?? $this->parseRequestURI(); - break; - } - - return ($routePath === '/' || $routePath === '') ? '/' : ltrim($routePath, '/'); - } - - /** - * Will parse the REQUEST_URI and automatically detect the URI from it, - * fixing the query string if necessary. - * - * This method updates superglobal $_SERVER and $_GET. - * - * @return string The route path (before normalization). - */ - private function parseRequestURI(): string - { - if ( - $this->superglobals->server('REQUEST_URI') === null - || $this->superglobals->server('SCRIPT_NAME') === null - ) { - return ''; - } - - // parse_url() returns false if no host is present, but the path or query - // string contains a colon followed by a number. So we attach a dummy - // host since REQUEST_URI does not include the host. This allows us to - // parse out the query string and path. - $parts = parse_url('http://dummy' . $this->superglobals->server('REQUEST_URI')); - $query = $parts['query'] ?? ''; - $path = $parts['path'] ?? ''; - - // Strip the SCRIPT_NAME path from the URI - if ( - $path !== '' && $this->superglobals->server('SCRIPT_NAME') !== '' - && pathinfo($this->superglobals->server('SCRIPT_NAME'), PATHINFO_EXTENSION) === 'php' - ) { - // Compare each segment, dropping them until there is no match - $segments = $keep = explode('/', $path); - - foreach (explode('/', $this->superglobals->server('SCRIPT_NAME')) as $i => $segment) { - // If these segments are not the same then we're done - if (! isset($segments[$i]) || $segment !== $segments[$i]) { - break; - } - - array_shift($keep); - } - - $path = implode('/', $keep); - } - - // This section ensures that even on servers that require the URI to - // contain the query string (Nginx) a correct URI is found, and also - // fixes the QUERY_STRING Server var and $_GET array. - if (trim($path, '/') === '' && strncmp($query, '/', 1) === 0) { - $parts = explode('?', $query, 2); - $path = $parts[0]; - $newQuery = $query[1] ?? ''; - - $this->superglobals->setServer('QUERY_STRING', $newQuery); - } else { - $this->superglobals->setServer('QUERY_STRING', $query); - } - - // Update our global GET for values likely to have been changed - parse_str($this->superglobals->server('QUERY_STRING'), $get); - $this->superglobals->setGetArray($get); - - return URI::removeDotSegments($path); - } - - /** - * Will parse QUERY_STRING and automatically detect the URI from it. - * - * This method updates superglobal $_SERVER and $_GET. - * - * @return string The route path (before normalization). - */ - private function parseQueryString(): string - { - $query = $this->superglobals->server('QUERY_STRING') ?? (string) getenv('QUERY_STRING'); - - if (trim($query, '/') === '') { - return '/'; - } - - if (strncmp($query, '/', 1) === 0) { - $parts = explode('?', $query, 2); - $path = $parts[0]; - $newQuery = $parts[1] ?? ''; - - $this->superglobals->setServer('QUERY_STRING', $newQuery); - } else { - $path = $query; - } - - // Update our global GET for values likely to have been changed - parse_str($this->superglobals->server('QUERY_STRING'), $get); - $this->superglobals->setGetArray($get); - - return URI::removeDotSegments($path); - } - - /** - * Create current URI object. - * - * @param string $routePath URI path relative to baseURL - */ - private function createURIFromRoutePath(string $routePath): SiteURI - { - $query = $this->superglobals->server('QUERY_STRING') ?? ''; - - $relativePath = $query !== '' ? $routePath . '?' . $query : $routePath; - - return new SiteURI($this->appConfig, $relativePath, $this->getHost()); - } - - /** - * @return string|null The current hostname. Returns null if no valid host. - */ - private function getHost(): ?string - { - $httpHostPort = $this->superglobals->server('HTTP_HOST') ?? null; - - if ($httpHostPort !== null) { - [$httpHost] = explode(':', $httpHostPort, 2); - - return $this->getValidHost($httpHost); - } - - return null; - } - - /** - * @return string|null The valid hostname. Returns null if not valid. - */ - private function getValidHost(string $host): ?string - { - if (in_array($host, $this->appConfig->allowedHostnames, true)) { - return $host; - } - - return null; - } -} diff --git a/system4.4.6/HTTP/URI.php b/system4.4.6/HTTP/URI.php deleted file mode 100644 index 5bec3801..00000000 --- a/system4.4.6/HTTP/URI.php +++ /dev/null @@ -1,1182 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP; - -use BadMethodCallException; -use CodeIgniter\HTTP\Exceptions\HTTPException; -use Config\App; -use InvalidArgumentException; - -/** - * Abstraction for a uniform resource identifier (URI). - * - * @see \CodeIgniter\HTTP\URITest - */ -class URI -{ - /** - * Sub-delimiters used in query strings and fragments. - */ - public const CHAR_SUB_DELIMS = '!\$&\'\(\)\*\+,;='; - - /** - * Unreserved characters used in paths, query strings, and fragments. - */ - public const CHAR_UNRESERVED = 'a-zA-Z0-9_\-\.~'; - - /** - * Current URI string - * - * @var string - * - * @deprecated 4.4.0 Not used. - */ - protected $uriString; - - /** - * The Current baseURL. - * - * @deprecated 4.4.0 Use SiteURI instead. - */ - private ?string $baseURL = null; - - /** - * List of URI segments. - * - * Starts at 1 instead of 0 - * - * @var array - */ - protected $segments = []; - - /** - * The URI Scheme. - * - * @var string - */ - protected $scheme = 'http'; - - /** - * URI User Info - * - * @var string - */ - protected $user; - - /** - * URI User Password - * - * @var string - */ - protected $password; - - /** - * URI Host - * - * @var string - */ - protected $host; - - /** - * URI Port - * - * @var int - */ - protected $port; - - /** - * URI path. - * - * @var string - */ - protected $path; - - /** - * The name of any fragment. - * - * @var string - */ - protected $fragment = ''; - - /** - * The query string. - * - * @var array - */ - protected $query = []; - - /** - * Default schemes/ports. - * - * @var array - */ - protected $defaultPorts = [ - 'http' => 80, - 'https' => 443, - 'ftp' => 21, - 'sftp' => 22, - ]; - - /** - * Whether passwords should be shown in userInfo/authority calls. - * Default to false because URIs often show up in logs - * - * @var bool - */ - protected $showPassword = false; - - /** - * If true, will continue instead of throwing exceptions. - * - * @var bool - */ - protected $silent = false; - - /** - * If true, will use raw query string. - * - * @var bool - */ - protected $rawQueryString = false; - - /** - * Builds a representation of the string from the component parts. - * - * @param string|null $scheme URI scheme. E.g., http, ftp - * - * @return string URI string with only passed parts. Maybe incomplete as a URI. - */ - public static function createURIString( - ?string $scheme = null, - ?string $authority = null, - ?string $path = null, - ?string $query = null, - ?string $fragment = null - ): string { - $uri = ''; - if ($scheme !== null && $scheme !== '') { - $uri .= $scheme . '://'; - } - - if ($authority !== null && $authority !== '') { - $uri .= $authority; - } - - if (isset($path) && $path !== '') { - $uri .= substr($uri, -1, 1) !== '/' - ? '/' . ltrim($path, '/') - : ltrim($path, '/'); - } - - if ($query !== '' && $query !== null) { - $uri .= '?' . $query; - } - - if ($fragment !== '' && $fragment !== null) { - $uri .= '#' . $fragment; - } - - return $uri; - } - - /** - * Used when resolving and merging paths to correctly interpret and - * remove single and double dot segments from the path per - * RFC 3986 Section 5.2.4 - * - * @see http://tools.ietf.org/html/rfc3986#section-5.2.4 - * - * @internal - */ - public static function removeDotSegments(string $path): string - { - if ($path === '' || $path === '/') { - return $path; - } - - $output = []; - - $input = explode('/', $path); - - if ($input[0] === '') { - unset($input[0]); - $input = array_values($input); - } - - // This is not a perfect representation of the - // RFC, but matches most cases and is pretty - // much what Guzzle uses. Should be good enough - // for almost every real use case. - foreach ($input as $segment) { - if ($segment === '..') { - array_pop($output); - } elseif ($segment !== '.' && $segment !== '') { - $output[] = $segment; - } - } - - $output = implode('/', $output); - $output = trim($output, '/ '); - - // Add leading slash if necessary - if (strpos($path, '/') === 0) { - $output = '/' . $output; - } - - // Add trailing slash if necessary - if ($output !== '/' && substr($path, -1, 1) === '/') { - $output .= '/'; - } - - return $output; - } - - /** - * Constructor. - * - * @param string|null $uri The URI to parse. - * - * @throws HTTPException - * - * @TODO null for param $uri should be removed. - * See https://www.php-fig.org/psr/psr-17/#26-urifactoryinterface - */ - public function __construct(?string $uri = null) - { - if ($uri !== null) { - $this->setURI($uri); - } - } - - /** - * If $silent == true, then will not throw exceptions and will - * attempt to continue gracefully. - * - * @deprecated 4.4.0 Method not in PSR-7 - * - * @return URI - */ - public function setSilent(bool $silent = true) - { - $this->silent = $silent; - - return $this; - } - - /** - * If $raw == true, then will use parseStr() method - * instead of native parse_str() function. - * - * Note: Method not in PSR-7 - * - * @return URI - */ - public function useRawQueryString(bool $raw = true) - { - $this->rawQueryString = $raw; - - return $this; - } - - /** - * Sets and overwrites any current URI information. - * - * @return URI - * - * @throws HTTPException - * - * @deprecated 4.4.0 This method will be private. - */ - public function setURI(?string $uri = null) - { - if ($uri !== null) { - $parts = parse_url($uri); - - if ($parts === false) { - if ($this->silent) { - return $this; - } - - throw HTTPException::forUnableToParseURI($uri); - } - - $this->applyParts($parts); - } - - return $this; - } - - /** - * Retrieve the scheme component of the URI. - * - * If no scheme is present, this method MUST return an empty string. - * - * The value returned MUST be normalized to lowercase, per RFC 3986 - * Section 3.1. - * - * The trailing ":" character is not part of the scheme and MUST NOT be - * added. - * - * @see https://tools.ietf.org/html/rfc3986#section-3.1 - * - * @return string The URI scheme. - */ - public function getScheme(): string - { - return $this->scheme; - } - - /** - * Retrieve the authority component of the URI. - * - * If no authority information is present, this method MUST return an empty - * string. - * - * The authority syntax of the URI is: - * - * <pre> - * [user-info@]host[:port] - * </pre> - * - * If the port component is not set or is the standard port for the current - * scheme, it SHOULD NOT be included. - * - * @see https://tools.ietf.org/html/rfc3986#section-3.2 - * - * @return string The URI authority, in "[user-info@]host[:port]" format. - */ - public function getAuthority(bool $ignorePort = false): string - { - if (empty($this->host)) { - return ''; - } - - $authority = $this->host; - - if (! empty($this->getUserInfo())) { - $authority = $this->getUserInfo() . '@' . $authority; - } - - // Don't add port if it's a standard port for - // this scheme - if (! empty($this->port) && ! $ignorePort && $this->port !== $this->defaultPorts[$this->scheme]) { - $authority .= ':' . $this->port; - } - - $this->showPassword = false; - - return $authority; - } - - /** - * Retrieve the user information component of the URI. - * - * If no user information is present, this method MUST return an empty - * string. - * - * If a user is present in the URI, this will return that value; - * additionally, if the password is also present, it will be appended to the - * user value, with a colon (":") separating the values. - * - * NOTE that be default, the password, if available, will NOT be shown - * as a security measure as discussed in RFC 3986, Section 7.5. If you know - * the password is not a security issue, you can force it to be shown - * with $this->showPassword(); - * - * The trailing "@" character is not part of the user information and MUST - * NOT be added. - * - * @return string|null The URI user information, in "username[:password]" format. - */ - public function getUserInfo() - { - $userInfo = $this->user; - - if ($this->showPassword === true && ! empty($this->password)) { - $userInfo .= ':' . $this->password; - } - - return $userInfo; - } - - /** - * Temporarily sets the URI to show a password in userInfo. Will - * reset itself after the first call to authority(). - * - * Note: Method not in PSR-7 - * - * @return URI - */ - public function showPassword(bool $val = true) - { - $this->showPassword = $val; - - return $this; - } - - /** - * Retrieve the host component of the URI. - * - * If no host is present, this method MUST return an empty string. - * - * The value returned MUST be normalized to lowercase, per RFC 3986 - * Section 3.2.2. - * - * @see http://tools.ietf.org/html/rfc3986#section-3.2.2 - * - * @return string The URI host. - */ - public function getHost(): string - { - return $this->host ?? ''; - } - - /** - * Retrieve the port component of the URI. - * - * If a port is present, and it is non-standard for the current scheme, - * this method MUST return it as an integer. If the port is the standard port - * used with the current scheme, this method SHOULD return null. - * - * If no port is present, and no scheme is present, this method MUST return - * a null value. - * - * If no port is present, but a scheme is present, this method MAY return - * the standard port for that scheme, but SHOULD return null. - * - * @return int|null The URI port. - */ - public function getPort() - { - return $this->port; - } - - /** - * Retrieve the path component of the URI. - * - * The path can either be empty or absolute (starting with a slash) or - * rootless (not starting with a slash). Implementations MUST support all - * three syntaxes. - * - * Normally, the empty path "" and absolute path "/" are considered equal as - * defined in RFC 7230 Section 2.7.3. But this method MUST NOT automatically - * do this normalization because in contexts with a trimmed base path, e.g. - * the front controller, this difference becomes significant. It's the task - * of the user to handle both "" and "/". - * - * The value returned MUST be percent-encoded, but MUST NOT double-encode - * any characters. To determine what characters to encode, please refer to - * RFC 3986, Sections 2 and 3.3. - * - * As an example, if the value should include a slash ("/") not intended as - * delimiter between path segments, that value MUST be passed in encoded - * form (e.g., "%2F") to the instance. - * - * @see https://tools.ietf.org/html/rfc3986#section-2 - * @see https://tools.ietf.org/html/rfc3986#section-3.3 - * - * @return string The URI path. - */ - public function getPath(): string - { - return $this->path ?? ''; - } - - /** - * Retrieve the query string - */ - public function getQuery(array $options = []): string - { - $vars = $this->query; - - if (array_key_exists('except', $options)) { - if (! is_array($options['except'])) { - $options['except'] = [$options['except']]; - } - - foreach ($options['except'] as $var) { - unset($vars[$var]); - } - } elseif (array_key_exists('only', $options)) { - $temp = []; - - if (! is_array($options['only'])) { - $options['only'] = [$options['only']]; - } - - foreach ($options['only'] as $var) { - if (array_key_exists($var, $vars)) { - $temp[$var] = $vars[$var]; - } - } - - $vars = $temp; - } - - return empty($vars) ? '' : http_build_query($vars); - } - - /** - * Retrieve a URI fragment - */ - public function getFragment(): string - { - return $this->fragment ?? ''; - } - - /** - * Returns the segments of the path as an array. - */ - public function getSegments(): array - { - return $this->segments; - } - - /** - * Returns the value of a specific segment of the URI path. - * Allows to get only existing segments or the next one. - * - * @param int $number Segment number starting at 1 - * @param string $default Default value - * - * @return string The value of the segment. If you specify the last +1 - * segment, the $default value. If you specify the last +2 - * or more throws HTTPException. - */ - public function getSegment(int $number, string $default = ''): string - { - if ($number < 1) { - throw HTTPException::forURISegmentOutOfRange($number); - } - - if ($number > count($this->segments) + 1 && ! $this->silent) { - throw HTTPException::forURISegmentOutOfRange($number); - } - - // The segment should treat the array as 1-based for the user - // but we still have to deal with a zero-based array. - $number--; - - return $this->segments[$number] ?? $default; - } - - /** - * Set the value of a specific segment of the URI path. - * Allows to set only existing segments or add new one. - * - * Note: Method not in PSR-7 - * - * @param int $number Segment number starting at 1 - * @param int|string $value - * - * @return $this - */ - public function setSegment(int $number, $value) - { - if ($number < 1) { - throw HTTPException::forURISegmentOutOfRange($number); - } - - if ($number > count($this->segments) + 1) { - if ($this->silent) { - return $this; - } - - throw HTTPException::forURISegmentOutOfRange($number); - } - - // The segment should treat the array as 1-based for the user - // but we still have to deal with a zero-based array. - $number--; - - $this->segments[$number] = $value; - $this->refreshPath(); - - return $this; - } - - /** - * Returns the total number of segments. - * - * Note: Method not in PSR-7 - */ - public function getTotalSegments(): int - { - return count($this->segments); - } - - /** - * Formats the URI as a string. - * - * Warning: For backwards-compatability this method - * assumes URIs with the same host as baseURL should - * be relative to the project's configuration. - * This aspect of __toString() is deprecated and should be avoided. - */ - public function __toString(): string - { - $path = $this->getPath(); - $scheme = $this->getScheme(); - - // If the hosts matches then assume this should be relative to baseURL - [$scheme, $path] = $this->changeSchemeAndPath($scheme, $path); - - return static::createURIString( - $scheme, - $this->getAuthority(), - $path, // Absolute URIs should use a "/" for an empty path - $this->getQuery(), - $this->getFragment() - ); - } - - /** - * Change the path (and scheme) assuming URIs with the same host as baseURL - * should be relative to the project's configuration. - * - * @deprecated This method will be deleted. - */ - private function changeSchemeAndPath(string $scheme, string $path): array - { - // Check if this is an internal URI - $config = config(App::class); - $baseUri = new self($config->baseURL); - - if ( - substr($this->getScheme(), 0, 4) === 'http' - && $this->getHost() === $baseUri->getHost() - ) { - // Check for additional segments - $basePath = trim($baseUri->getPath(), '/') . '/'; - $trimPath = ltrim($path, '/'); - - if ($basePath !== '/' && strpos($trimPath, $basePath) !== 0) { - $path = $basePath . $trimPath; - } - - // Check for forced HTTPS - if ($config->forceGlobalSecureRequests) { - $scheme = 'https'; - } - } - - return [$scheme, $path]; - } - - /** - * Parses the given string and saves the appropriate authority pieces. - * - * Note: Method not in PSR-7 - * - * @return $this - */ - public function setAuthority(string $str) - { - $parts = parse_url($str); - - if (! isset($parts['path'])) { - $parts['path'] = $this->getPath(); - } - - if (empty($parts['host']) && $parts['path'] !== '') { - $parts['host'] = $parts['path']; - unset($parts['path']); - } - - $this->applyParts($parts); - - return $this; - } - - /** - * Sets the scheme for this URI. - * - * Because of the large number of valid schemes we cannot limit this - * to only http or https. - * - * @see https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml - * - * @return $this - * - * @deprecated 4.4.0 Use `withScheme()` instead. - */ - public function setScheme(string $str) - { - $str = strtolower($str); - $this->scheme = preg_replace('#:(//)?$#', '', $str); - - return $this; - } - - /** - * Return an instance with the specified scheme. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified scheme. - * - * Implementations MUST support the schemes "http" and "https" case - * insensitively, and MAY accommodate other schemes if required. - * - * An empty scheme is equivalent to removing the scheme. - * - * @param string $scheme The scheme to use with the new instance. - * - * @return static A new instance with the specified scheme. - * - * @throws InvalidArgumentException for invalid or unsupported schemes. - */ - public function withScheme(string $scheme) - { - $uri = clone $this; - - $scheme = strtolower($scheme); - - $uri->scheme = preg_replace('#:(//)?$#', '', $scheme); - - return $uri; - } - - /** - * Sets the userInfo/Authority portion of the URI. - * - * @param string $user The user's username - * @param string $pass The user's password - * - * @return $this - * - * @TODO PSR-7: Should be `withUserInfo($user, $password = null)`. - */ - public function setUserInfo(string $user, string $pass) - { - $this->user = trim($user); - $this->password = trim($pass); - - return $this; - } - - /** - * Sets the host name to use. - * - * @return $this - * - * @TODO PSR-7: Should be `withHost($host)`. - */ - public function setHost(string $str) - { - $this->host = trim($str); - - return $this; - } - - /** - * Sets the port portion of the URI. - * - * @return $this - * - * @TODO PSR-7: Should be `withPort($port)`. - */ - public function setPort(?int $port = null) - { - if ($port === null) { - return $this; - } - - if ($port <= 0 || $port > 65535) { - if ($this->silent) { - return $this; - } - - throw HTTPException::forInvalidPort($port); - } - - $this->port = $port; - - return $this; - } - - /** - * Sets the path portion of the URI. - * - * @return $this - * - * @TODO PSR-7: Should be `withPath($port)`. - */ - public function setPath(string $path) - { - $this->path = $this->filterPath($path); - - $tempPath = trim($this->path, '/'); - - $this->segments = ($tempPath === '') ? [] : explode('/', $tempPath); - - return $this; - } - - /** - * Sets the current baseURL. - * - * @interal - * - * @deprecated Use SiteURI instead. - */ - public function setBaseURL(string $baseURL): void - { - $this->baseURL = $baseURL; - } - - /** - * Returns the current baseURL. - * - * @interal - * - * @deprecated Use SiteURI instead. - */ - public function getBaseURL(): string - { - if ($this->baseURL === null) { - throw new BadMethodCallException('The $baseURL is not set.'); - } - - return $this->baseURL; - } - - /** - * Sets the path portion of the URI based on segments. - * - * @return $this - * - * @deprecated This method will be private. - */ - public function refreshPath() - { - $this->path = $this->filterPath(implode('/', $this->segments)); - - $tempPath = trim($this->path, '/'); - - $this->segments = ($tempPath === '') ? [] : explode('/', $tempPath); - - return $this; - } - - /** - * Sets the query portion of the URI, while attempting - * to clean the various parts of the query keys and values. - * - * @return $this - * - * @TODO PSR-7: Should be `withQuery($query)`. - */ - public function setQuery(string $query) - { - if (strpos($query, '#') !== false) { - if ($this->silent) { - return $this; - } - - throw HTTPException::forMalformedQueryString(); - } - - // Can't have leading ? - if ($query !== '' && strpos($query, '?') === 0) { - $query = substr($query, 1); - } - - if ($this->rawQueryString) { - $this->query = $this->parseStr($query); - } else { - parse_str($query, $this->query); - } - - return $this; - } - - /** - * A convenience method to pass an array of items in as the Query - * portion of the URI. - * - * @return URI - * - * @TODO: PSR-7: Should be `withQueryParams(array $query)` - */ - public function setQueryArray(array $query) - { - $query = http_build_query($query); - - return $this->setQuery($query); - } - - /** - * Adds a single new element to the query vars. - * - * Note: Method not in PSR-7 - * - * @param int|string|null $value - * - * @return $this - */ - public function addQuery(string $key, $value = null) - { - $this->query[$key] = $value; - - return $this; - } - - /** - * Removes one or more query vars from the URI. - * - * Note: Method not in PSR-7 - * - * @param string ...$params - * - * @return $this - */ - public function stripQuery(...$params) - { - foreach ($params as $param) { - unset($this->query[$param]); - } - - return $this; - } - - /** - * Filters the query variables so that only the keys passed in - * are kept. The rest are removed from the object. - * - * Note: Method not in PSR-7 - * - * @param string ...$params - * - * @return $this - */ - public function keepQuery(...$params) - { - $temp = []; - - foreach ($this->query as $key => $value) { - if (! in_array($key, $params, true)) { - continue; - } - - $temp[$key] = $value; - } - - $this->query = $temp; - - return $this; - } - - /** - * Sets the fragment portion of the URI. - * - * @see https://tools.ietf.org/html/rfc3986#section-3.5 - * - * @return $this - * - * @TODO PSR-7: Should be `withFragment($fragment)`. - */ - public function setFragment(string $string) - { - $this->fragment = trim($string, '# '); - - return $this; - } - - /** - * Encodes any dangerous characters, and removes dot segments. - * While dot segments have valid uses according to the spec, - * this URI class does not allow them. - */ - protected function filterPath(?string $path = null): string - { - $orig = $path; - - // Decode/normalize percent-encoded chars so - // we can always have matching for Routes, etc. - $path = urldecode($path); - - // Remove dot segments - $path = self::removeDotSegments($path); - - // Fix up some leading slash edge cases... - if (strpos($orig, './') === 0) { - $path = '/' . $path; - } - if (strpos($orig, '../') === 0) { - $path = '/' . $path; - } - - // Encode characters - $path = preg_replace_callback( - '/(?:[^' . static::CHAR_UNRESERVED . ':@&=\+\$,\/;%]+|%(?![A-Fa-f0-9]{2}))/', - static fn (array $matches) => rawurlencode($matches[0]), - $path - ); - - return $path; - } - - /** - * Saves our parts from a parse_url call. - * - * @return void - */ - protected function applyParts(array $parts) - { - if (! empty($parts['host'])) { - $this->host = $parts['host']; - } - if (! empty($parts['user'])) { - $this->user = $parts['user']; - } - if (isset($parts['path']) && $parts['path'] !== '') { - $this->path = $this->filterPath($parts['path']); - } - if (! empty($parts['query'])) { - $this->setQuery($parts['query']); - } - if (! empty($parts['fragment'])) { - $this->fragment = $parts['fragment']; - } - - // Scheme - if (isset($parts['scheme'])) { - $this->setScheme(rtrim($parts['scheme'], ':/')); - } else { - $this->setScheme('http'); - } - - // Port - if (isset($parts['port']) && $parts['port'] !== null) { - // Valid port numbers are enforced by earlier parse_url or setPort() - $this->port = $parts['port']; - } - - if (isset($parts['pass'])) { - $this->password = $parts['pass']; - } - - // Populate our segments array - if (isset($parts['path']) && $parts['path'] !== '') { - $tempPath = trim($parts['path'], '/'); - - $this->segments = ($tempPath === '') ? [] : explode('/', $tempPath); - } - } - - /** - * Combines one URI string with this one based on the rules set out in - * RFC 3986 Section 2 - * - * @see http://tools.ietf.org/html/rfc3986#section-5.2 - * - * @return URI - */ - public function resolveRelativeURI(string $uri) - { - /* - * NOTE: We don't use removeDotSegments in this - * algorithm since it's already done by this line! - */ - $relative = new self(); - $relative->setURI($uri); - - if ($relative->getScheme() === $this->getScheme()) { - $relative->setScheme(''); - } - - $transformed = clone $relative; - - // 5.2.2 Transform References in a non-strict method (no scheme) - if ($relative->getAuthority() !== '') { - $transformed - ->setAuthority($relative->getAuthority()) - ->setPath($relative->getPath()) - ->setQuery($relative->getQuery()); - } else { - if ($relative->getPath() === '') { - $transformed->setPath($this->getPath()); - - if ($relative->getQuery() !== '') { - $transformed->setQuery($relative->getQuery()); - } else { - $transformed->setQuery($this->getQuery()); - } - } else { - if (strpos($relative->getPath(), '/') === 0) { - $transformed->setPath($relative->getPath()); - } else { - $transformed->setPath($this->mergePaths($this, $relative)); - } - - $transformed->setQuery($relative->getQuery()); - } - - $transformed->setAuthority($this->getAuthority()); - } - - $transformed->setScheme($this->getScheme()); - - $transformed->setFragment($relative->getFragment()); - - return $transformed; - } - - /** - * Given 2 paths, will merge them according to rules set out in RFC 2986, - * Section 5.2 - * - * @see http://tools.ietf.org/html/rfc3986#section-5.2.3 - */ - protected function mergePaths(self $base, self $reference): string - { - if ($base->getAuthority() !== '' && $base->getPath() === '') { - return '/' . ltrim($reference->getPath(), '/ '); - } - - $path = explode('/', $base->getPath()); - - if ($path[0] === '') { - unset($path[0]); - } - - array_pop($path); - $path[] = $reference->getPath(); - - return implode('/', $path); - } - - /** - * This is equivalent to the native PHP parse_str() function. - * This version allows the dot to be used as a key of the query string. - */ - protected function parseStr(string $query): array - { - $return = []; - $query = explode('&', $query); - - $params = array_map(static fn (string $chunk) => preg_replace_callback( - '/^(?<key>[^&=]+?)(?:\[[^&=]*\])?=(?<value>[^&=]+)/', - static fn (array $match) => str_replace($match['key'], bin2hex($match['key']), $match[0]), - urldecode($chunk) - ), $query); - - $params = implode('&', $params); - parse_str($params, $result); - - foreach ($result as $key => $value) { - $return[hex2bin($key)] = $value; - } - - return $return; - } -} diff --git a/system4.4.6/HTTP/UserAgent.php b/system4.4.6/HTTP/UserAgent.php deleted file mode 100644 index 2294b02a..00000000 --- a/system4.4.6/HTTP/UserAgent.php +++ /dev/null @@ -1,371 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HTTP; - -use Config\UserAgents; - -/** - * Abstraction for an HTTP user agent - * - * @see \CodeIgniter\HTTP\UserAgentTest - */ -class UserAgent -{ - /** - * Current user-agent - * - * @var string - */ - protected $agent = ''; - - /** - * Flag for if the user-agent belongs to a browser - * - * @var bool - */ - protected $isBrowser = false; - - /** - * Flag for if the user-agent is a robot - * - * @var bool - */ - protected $isRobot = false; - - /** - * Flag for if the user-agent is a mobile browser - * - * @var bool - */ - protected $isMobile = false; - - /** - * Holds the config file contents. - * - * @var UserAgents - */ - protected $config; - - /** - * Current user-agent platform - * - * @var string - */ - protected $platform = ''; - - /** - * Current user-agent browser - * - * @var string - */ - protected $browser = ''; - - /** - * Current user-agent version - * - * @var string - */ - protected $version = ''; - - /** - * Current user-agent mobile name - * - * @var string - */ - protected $mobile = ''; - - /** - * Current user-agent robot name - * - * @var string - */ - protected $robot = ''; - - /** - * HTTP Referer - * - * @var bool|string|null - */ - protected $referrer; - - /** - * Constructor - * - * Sets the User Agent and runs the compilation routine - */ - public function __construct(?UserAgents $config = null) - { - $this->config = $config ?? config(UserAgents::class); - - if (isset($_SERVER['HTTP_USER_AGENT'])) { - $this->agent = trim($_SERVER['HTTP_USER_AGENT']); - $this->compileData(); - } - } - - /** - * Is Browser - */ - public function isBrowser(?string $key = null): bool - { - if (! $this->isBrowser) { - return false; - } - - // No need to be specific, it's a browser - if ($key === null) { - return true; - } - - // Check for a specific browser - return isset($this->config->browsers[$key]) && $this->browser === $this->config->browsers[$key]; - } - - /** - * Is Robot - */ - public function isRobot(?string $key = null): bool - { - if (! $this->isRobot) { - return false; - } - - // No need to be specific, it's a robot - if ($key === null) { - return true; - } - - // Check for a specific robot - return isset($this->config->robots[$key]) && $this->robot === $this->config->robots[$key]; - } - - /** - * Is Mobile - */ - public function isMobile(?string $key = null): bool - { - if (! $this->isMobile) { - return false; - } - - // No need to be specific, it's a mobile - if ($key === null) { - return true; - } - - // Check for a specific robot - return isset($this->config->mobiles[$key]) && $this->mobile === $this->config->mobiles[$key]; - } - - /** - * Is this a referral from another site? - */ - public function isReferral(): bool - { - if (! isset($this->referrer)) { - if (empty($_SERVER['HTTP_REFERER'])) { - $this->referrer = false; - } else { - $refererHost = @parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST); - $ownHost = parse_url(\base_url(), PHP_URL_HOST); - - $this->referrer = ($refererHost && $refererHost !== $ownHost); - } - } - - return $this->referrer; - } - - /** - * Agent String - */ - public function getAgentString(): string - { - return $this->agent; - } - - /** - * Get Platform - */ - public function getPlatform(): string - { - return $this->platform; - } - - /** - * Get Browser Name - */ - public function getBrowser(): string - { - return $this->browser; - } - - /** - * Get the Browser Version - */ - public function getVersion(): string - { - return $this->version; - } - - /** - * Get The Robot Name - */ - public function getRobot(): string - { - return $this->robot; - } - - /** - * Get the Mobile Device - */ - public function getMobile(): string - { - return $this->mobile; - } - - /** - * Get the referrer - */ - public function getReferrer(): string - { - return empty($_SERVER['HTTP_REFERER']) ? '' : trim($_SERVER['HTTP_REFERER']); - } - - /** - * Parse a custom user-agent string - * - * @return void - */ - public function parse(string $string) - { - // Reset values - $this->isBrowser = false; - $this->isRobot = false; - $this->isMobile = false; - $this->browser = ''; - $this->version = ''; - $this->mobile = ''; - $this->robot = ''; - - // Set the new user-agent string and parse it, unless empty - $this->agent = $string; - - if ($string !== '') { - $this->compileData(); - } - } - - /** - * Compile the User Agent Data - * - * @return void - */ - protected function compileData() - { - $this->setPlatform(); - - foreach (['setRobot', 'setBrowser', 'setMobile'] as $function) { - if ($this->{$function}() === true) { - break; - } - } - } - - /** - * Set the Platform - */ - protected function setPlatform(): bool - { - if (is_array($this->config->platforms) && $this->config->platforms) { - foreach ($this->config->platforms as $key => $val) { - if (preg_match('|' . preg_quote($key, '|') . '|i', $this->agent)) { - $this->platform = $val; - - return true; - } - } - } - - $this->platform = 'Unknown Platform'; - - return false; - } - - /** - * Set the Browser - */ - protected function setBrowser(): bool - { - if (is_array($this->config->browsers) && $this->config->browsers) { - foreach ($this->config->browsers as $key => $val) { - if (preg_match('|' . $key . '.*?([0-9\.]+)|i', $this->agent, $match)) { - $this->isBrowser = true; - $this->version = $match[1]; - $this->browser = $val; - $this->setMobile(); - - return true; - } - } - } - - return false; - } - - /** - * Set the Robot - */ - protected function setRobot(): bool - { - if (is_array($this->config->robots) && $this->config->robots) { - foreach ($this->config->robots as $key => $val) { - if (preg_match('|' . preg_quote($key, '|') . '|i', $this->agent)) { - $this->isRobot = true; - $this->robot = $val; - $this->setMobile(); - - return true; - } - } - } - - return false; - } - - /** - * Set the Mobile Device - */ - protected function setMobile(): bool - { - if (is_array($this->config->mobiles) && $this->config->mobiles) { - foreach ($this->config->mobiles as $key => $val) { - if (false !== (stripos($this->agent, $key))) { - $this->isMobile = true; - $this->mobile = $val; - - return true; - } - } - } - - return false; - } - - /** - * Outputs the original Agent String when cast as a string. - */ - public function __toString(): string - { - return $this->getAgentString(); - } -} diff --git a/system4.4.6/Helpers/array_helper.php b/system4.4.6/Helpers/array_helper.php deleted file mode 100644 index 4c1477f5..00000000 --- a/system4.4.6/Helpers/array_helper.php +++ /dev/null @@ -1,281 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// CodeIgniter Array Helpers - -if (! function_exists('dot_array_search')) { - /** - * Searches an array through dot syntax. Supports - * wildcard searches, like foo.*.bar - * - * @return array|bool|int|object|string|null - */ - function dot_array_search(string $index, array $array) - { - // See https://regex101.com/r/44Ipql/1 - $segments = preg_split( - '/(?<!\\\\)\./', - rtrim($index, '* '), - 0, - PREG_SPLIT_NO_EMPTY - ); - - $segments = array_map(static fn ($key) => str_replace('\.', '.', $key), $segments); - - return _array_search_dot($segments, $array); - } -} - -if (! function_exists('_array_search_dot')) { - /** - * Used by `dot_array_search` to recursively search the - * array with wildcards. - * - * @internal This should not be used on its own. - * - * @return array|bool|float|int|object|string|null - */ - function _array_search_dot(array $indexes, array $array) - { - // If index is empty, returns null. - if ($indexes === []) { - return null; - } - - // Grab the current index - $currentIndex = array_shift($indexes); - - if (! isset($array[$currentIndex]) && $currentIndex !== '*') { - return null; - } - - // Handle Wildcard (*) - if ($currentIndex === '*') { - $answer = []; - - foreach ($array as $value) { - if (! is_array($value)) { - return null; - } - - $answer[] = _array_search_dot($indexes, $value); - } - - $answer = array_filter($answer, static fn ($value) => $value !== null); - - if ($answer !== []) { - // If array only has one element, we return that element for BC. - return count($answer) === 1 ? current($answer) : $answer; - } - - return null; - } - - // If this is the last index, make sure to return it now, - // and not try to recurse through things. - if ($indexes === []) { - return $array[$currentIndex]; - } - - // Do we need to recursively search this value? - if (is_array($array[$currentIndex]) && $array[$currentIndex] !== []) { - return _array_search_dot($indexes, $array[$currentIndex]); - } - - // Otherwise, not found. - return null; - } -} - -if (! function_exists('array_deep_search')) { - /** - * Returns the value of an element at a key in an array of uncertain depth. - * - * @param int|string $key - * - * @return array|bool|float|int|object|string|null - */ - function array_deep_search($key, array $array) - { - if (isset($array[$key])) { - return $array[$key]; - } - - foreach ($array as $value) { - if (is_array($value) && ($result = array_deep_search($key, $value))) { - return $result; - } - } - - return null; - } -} - -if (! function_exists('array_sort_by_multiple_keys')) { - /** - * Sorts a multidimensional array by its elements values. The array - * columns to be used for sorting are passed as an associative - * array of key names and sorting flags. - * - * Both arrays of objects and arrays of array can be sorted. - * - * Example: - * array_sort_by_multiple_keys($players, [ - * 'team.hierarchy' => SORT_ASC, - * 'position' => SORT_ASC, - * 'name' => SORT_STRING, - * ]); - * - * The '.' dot operator in the column name indicates a deeper array or - * object level. In principle, any number of sublevels could be used, - * as long as the level and column exist in every array element. - * - * For information on multi-level array sorting, refer to Example #3 here: - * https://www.php.net/manual/de/function.array-multisort.php - * - * @param array $array the reference of the array to be sorted - * @param array $sortColumns an associative array of columns to sort - * after and their sorting flags - */ - function array_sort_by_multiple_keys(array &$array, array $sortColumns): bool - { - // Check if there really are columns to sort after - if ($sortColumns === [] || $array === []) { - return false; - } - - // Group sorting indexes and data - $tempArray = []; - - foreach ($sortColumns as $key => $sortFlag) { - // Get sorting values - $carry = $array; - - // The '.' operator separates nested elements - foreach (explode('.', $key) as $keySegment) { - // Loop elements if they are objects - if (is_object(reset($carry))) { - // Extract the object attribute - foreach ($carry as $index => $object) { - $carry[$index] = $object->{$keySegment}; - } - - continue; - } - - // Extract the target column if elements are arrays - $carry = array_column($carry, $keySegment); - } - - // Store the collected sorting parameters - $tempArray[] = $carry; - $tempArray[] = $sortFlag; - } - - // Append the array as reference - $tempArray[] = &$array; - - // Pass sorting arrays and flags as an argument list. - return array_multisort(...$tempArray); - } -} - -if (! function_exists('array_flatten_with_dots')) { - /** - * Flatten a multidimensional array using dots as separators. - * - * @param iterable $array The multi-dimensional array - * @param string $id Something to initially prepend to the flattened keys - * - * @return array The flattened array - */ - function array_flatten_with_dots(iterable $array, string $id = ''): array - { - $flattened = []; - - foreach ($array as $key => $value) { - $newKey = $id . $key; - - if (is_array($value) && $value !== []) { - $flattened = array_merge($flattened, array_flatten_with_dots($value, $newKey . '.')); - } else { - $flattened[$newKey] = $value; - } - } - - return $flattened; - } -} - -if (! function_exists('array_group_by')) { - /** - * Groups all rows by their index values. Result's depth equals number of indexes - * - * @param array $array Data array (i.e. from query result) - * @param array $indexes Indexes to group by. Dot syntax used. Returns $array if empty - * @param bool $includeEmpty If true, null and '' are also added as valid keys to group - * - * @return array Result array where rows are grouped together by indexes values. - */ - function array_group_by(array $array, array $indexes, bool $includeEmpty = false): array - { - if ($indexes === []) { - return $array; - } - - $result = []; - - foreach ($array as $row) { - $result = _array_attach_indexed_value($result, $row, $indexes, $includeEmpty); - } - - return $result; - } -} - -if (! function_exists('_array_attach_indexed_value')) { - /** - * Used by `array_group_by` to recursively attach $row to the $indexes path of values found by - * `dot_array_search` - * - * @internal This should not be used on its own - */ - function _array_attach_indexed_value(array $result, array $row, array $indexes, bool $includeEmpty): array - { - if (($index = array_shift($indexes)) === null) { - $result[] = $row; - - return $result; - } - - $value = dot_array_search($index, $row); - - if (! is_scalar($value)) { - $value = ''; - } - - if (is_bool($value)) { - $value = (int) $value; - } - - if (! $includeEmpty && $value === '') { - return $result; - } - - if (! array_key_exists($value, $result)) { - $result[$value] = []; - } - - $result[$value] = _array_attach_indexed_value($result[$value], $row, $indexes, $includeEmpty); - - return $result; - } -} diff --git a/system4.4.6/Helpers/cookie_helper.php b/system4.4.6/Helpers/cookie_helper.php deleted file mode 100644 index de8fb614..00000000 --- a/system4.4.6/Helpers/cookie_helper.php +++ /dev/null @@ -1,112 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -use CodeIgniter\Cookie\Cookie; -use Config\Cookie as CookieConfig; -use Config\Services; - -// ============================================================================= -// CodeIgniter Cookie Helpers -// ============================================================================= - -if (! function_exists('set_cookie')) { - /** - * Set cookie - * - * Accepts seven parameters, or you can submit an associative - * array in the first parameter containing all the values. - * - * @param array|Cookie|string $name Cookie name / array containing binds / Cookie object - * @param string $value The value of the cookie - * @param string $expire The number of seconds until expiration - * @param string $domain For site-wide cookie. Usually: .yourdomain.com - * @param string $path The cookie path - * @param string $prefix The cookie prefix ('': the default prefix) - * @param bool|null $secure True makes the cookie secure - * @param bool|null $httpOnly True makes the cookie accessible via http(s) only (no javascript) - * @param string|null $sameSite The cookie SameSite value - * - * @return void - * - * @see \CodeIgniter\HTTP\Response::setCookie() - */ - function set_cookie( - $name, - string $value = '', - string $expire = '', - string $domain = '', - string $path = '/', - string $prefix = '', - ?bool $secure = null, - ?bool $httpOnly = null, - ?string $sameSite = null - ) { - $response = Services::response(); - $response->setCookie($name, $value, $expire, $domain, $path, $prefix, $secure, $httpOnly, $sameSite); - } -} - -if (! function_exists('get_cookie')) { - /** - * Fetch an item from the $_COOKIE array - * - * @param string $index - * @param string|null $prefix Cookie name prefix. - * '': the prefix in Config\Cookie - * null: no prefix - * - * @return array|string|null - * - * @see \CodeIgniter\HTTP\IncomingRequest::getCookie() - */ - function get_cookie($index, bool $xssClean = false, ?string $prefix = '') - { - if ($prefix === '') { - $cookie = config(CookieConfig::class); - - $prefix = $cookie->prefix; - } - - $request = Services::request(); - $filter = $xssClean ? FILTER_SANITIZE_FULL_SPECIAL_CHARS : FILTER_DEFAULT; - - return $request->getCookie($prefix . $index, $filter); - } -} - -if (! function_exists('delete_cookie')) { - /** - * Delete a cookie - * - * @param string $name - * @param string $domain the cookie domain. Usually: .yourdomain.com - * @param string $path the cookie path - * @param string $prefix the cookie prefix - * - * @return void - * - * @see \CodeIgniter\HTTP\Response::deleteCookie() - */ - function delete_cookie($name, string $domain = '', string $path = '/', string $prefix = '') - { - Services::response()->deleteCookie($name, $domain, $path, $prefix); - } -} - -if (! function_exists('has_cookie')) { - /** - * Checks if a cookie exists by name. - */ - function has_cookie(string $name, ?string $value = null, string $prefix = ''): bool - { - return Services::response()->hasCookie($name, $value, $prefix); - } -} diff --git a/system4.4.6/Helpers/date_helper.php b/system4.4.6/Helpers/date_helper.php deleted file mode 100644 index cf1dc33a..00000000 --- a/system4.4.6/Helpers/date_helper.php +++ /dev/null @@ -1,77 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -use CodeIgniter\I18n\Time; - -// CodeIgniter Date Helpers - -if (! function_exists('now')) { - /** - * Get "now" time - * - * Returns Time::now()->getTimestamp() based on the timezone parameter or on the - * app_timezone() setting - * - * @param non-empty-string|null $timezone - * - * @throws Exception - */ - function now(?string $timezone = null): int - { - $timezone = ($timezone === null || $timezone === '') ? app_timezone() : $timezone; - - if ($timezone === 'local' || $timezone === date_default_timezone_get()) { - return Time::now()->getTimestamp(); - } - - $time = Time::now($timezone); - sscanf( - $time->format('j-n-Y G:i:s'), - '%d-%d-%d %d:%d:%d', - $day, - $month, - $year, - $hour, - $minute, - $second - ); - - return mktime($hour, $minute, $second, $month, $day, $year); - } -} - -if (! function_exists('timezone_select')) { - /** - * Generates a select field of all available timezones - * - * Returns a string with the formatted HTML - * - * @param string $class Optional class to apply to the select field - * @param string $default Default value for initial selection - * @param int $what One of the DateTimeZone class constants (for listIdentifiers) - * @param string $country A two-letter ISO 3166-1 compatible country code (for listIdentifiers) - * - * @throws Exception - */ - function timezone_select(string $class = '', string $default = '', int $what = DateTimeZone::ALL, ?string $country = null): string - { - $timezones = DateTimeZone::listIdentifiers($what, $country); - - $buffer = "<select name='timezone' class='{$class}'>\n"; - - foreach ($timezones as $timezone) { - $selected = ($timezone === $default) ? 'selected' : ''; - $buffer .= "<option value='{$timezone}' {$selected}>{$timezone}</option>\n"; - } - - return $buffer . ("</select>\n"); - } -} diff --git a/system4.4.6/Helpers/filesystem_helper.php b/system4.4.6/Helpers/filesystem_helper.php deleted file mode 100644 index 4e0e8b15..00000000 --- a/system4.4.6/Helpers/filesystem_helper.php +++ /dev/null @@ -1,450 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// CodeIgniter File System Helpers - -if (! function_exists('directory_map')) { - /** - * Create a Directory Map - * - * Reads the specified directory and builds an array - * representation of it. Sub-folders contained with the - * directory will be mapped as well. - * - * @param string $sourceDir Path to source - * @param int $directoryDepth Depth of directories to traverse - * (0 = fully recursive, 1 = current dir, etc) - * @param bool $hidden Whether to show hidden files - */ - function directory_map(string $sourceDir, int $directoryDepth = 0, bool $hidden = false): array - { - try { - $fp = opendir($sourceDir); - - $fileData = []; - $newDepth = $directoryDepth - 1; - $sourceDir = rtrim($sourceDir, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR; - - while (false !== ($file = readdir($fp))) { - // Remove '.', '..', and hidden files [optional] - if ($file === '.' || $file === '..' || ($hidden === false && $file[0] === '.')) { - continue; - } - - if (is_dir($sourceDir . $file)) { - $file .= DIRECTORY_SEPARATOR; - } - - if (($directoryDepth < 1 || $newDepth > 0) && is_dir($sourceDir . $file)) { - $fileData[$file] = directory_map($sourceDir . $file, $newDepth, $hidden); - } else { - $fileData[] = $file; - } - } - - closedir($fp); - - return $fileData; - } catch (Throwable $e) { - return []; - } - } -} - -if (! function_exists('directory_mirror')) { - /** - * Recursively copies the files and directories of the origin directory - * into the target directory, i.e. "mirror" its contents. - * - * @param bool $overwrite Whether individual files overwrite on collision - * - * @throws InvalidArgumentException - */ - function directory_mirror(string $originDir, string $targetDir, bool $overwrite = true): void - { - if (! is_dir($originDir = rtrim($originDir, '\\/'))) { - throw new InvalidArgumentException(sprintf('The origin directory "%s" was not found.', $originDir)); - } - - if (! is_dir($targetDir = rtrim($targetDir, '\\/'))) { - @mkdir($targetDir, 0755, true); - } - - $dirLen = strlen($originDir); - - /** - * @var SplFileInfo $file - */ - foreach (new RecursiveIteratorIterator( - new RecursiveDirectoryIterator($originDir, FilesystemIterator::SKIP_DOTS), - RecursiveIteratorIterator::SELF_FIRST - ) as $file) { - $origin = $file->getPathname(); - $target = $targetDir . substr($origin, $dirLen); - - if ($file->isDir()) { - if (! is_dir($target)) { - mkdir($target, 0755); - } - } elseif (! is_file($target) || ($overwrite && is_file($target))) { - copy($origin, $target); - } - } - } -} - -if (! function_exists('write_file')) { - /** - * Write File - * - * Writes data to the file specified in the path. - * Creates a new file if non-existent. - * - * @param string $path File path - * @param string $data Data to write - * @param string $mode fopen() mode (default: 'wb') - */ - function write_file(string $path, string $data, string $mode = 'wb'): bool - { - try { - $fp = fopen($path, $mode); - - flock($fp, LOCK_EX); - - for ($result = $written = 0, $length = strlen($data); $written < $length; $written += $result) { - if (($result = fwrite($fp, substr($data, $written))) === false) { - break; - } - } - - flock($fp, LOCK_UN); - fclose($fp); - - return is_int($result); - } catch (Throwable $e) { - return false; - } - } -} - -if (! function_exists('delete_files')) { - /** - * Delete Files - * - * Deletes all files contained in the supplied directory path. - * Files must be writable or owned by the system in order to be deleted. - * If the second parameter is set to true, any directories contained - * within the supplied base directory will be nuked as well. - * - * @param string $path File path - * @param bool $delDir Whether to delete any directories found in the path - * @param bool $htdocs Whether to skip deleting .htaccess and index page files - * @param bool $hidden Whether to include hidden files (files beginning with a period) - */ - function delete_files(string $path, bool $delDir = false, bool $htdocs = false, bool $hidden = false): bool - { - $path = realpath($path) ?: $path; - $path = rtrim($path, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR; - - try { - foreach (new RecursiveIteratorIterator( - new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::SKIP_DOTS), - RecursiveIteratorIterator::CHILD_FIRST - ) as $object) { - $filename = $object->getFilename(); - if (! $hidden && $filename[0] === '.') { - continue; - } - - if (! $htdocs || ! preg_match('/^(\.htaccess|index\.(html|htm|php)|web\.config)$/i', $filename)) { - $isDir = $object->isDir(); - if ($isDir && $delDir) { - rmdir($object->getPathname()); - - continue; - } - if (! $isDir) { - unlink($object->getPathname()); - } - } - } - - return true; - } catch (Throwable $e) { - return false; - } - } -} - -if (! function_exists('get_filenames')) { - /** - * Get Filenames - * - * Reads the specified directory and builds an array containing the filenames. - * Any sub-folders contained within the specified path are read as well. - * - * @param string $sourceDir Path to source - * @param bool|null $includePath Whether to include the path as part of the filename; false for no path, null for a relative path, true for full path - * @param bool $hidden Whether to include hidden files (files beginning with a period) - * @param bool $includeDir Whether to include directories - */ - function get_filenames( - string $sourceDir, - ?bool $includePath = false, - bool $hidden = false, - bool $includeDir = true - ): array { - $files = []; - - $sourceDir = realpath($sourceDir) ?: $sourceDir; - $sourceDir = rtrim($sourceDir, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR; - - try { - foreach (new RecursiveIteratorIterator( - new RecursiveDirectoryIterator($sourceDir, RecursiveDirectoryIterator::SKIP_DOTS | FilesystemIterator::FOLLOW_SYMLINKS), - RecursiveIteratorIterator::SELF_FIRST - ) as $name => $object) { - $basename = pathinfo($name, PATHINFO_BASENAME); - if (! $hidden && $basename[0] === '.') { - continue; - } - - if ($includeDir || ! $object->isDir()) { - if ($includePath === false) { - $files[] = $basename; - } elseif ($includePath === null) { - $files[] = str_replace($sourceDir, '', $name); - } else { - $files[] = $name; - } - } - } - } catch (Throwable $e) { - return []; - } - - sort($files); - - return $files; - } -} - -if (! function_exists('get_dir_file_info')) { - /** - * Get Directory File Information - * - * Reads the specified directory and builds an array containing the filenames, - * filesize, dates, and permissions - * - * Any sub-folders contained within the specified path are read as well. - * - * @param string $sourceDir Path to source - * @param bool $topLevelOnly Look only at the top level directory specified? - * @param bool $recursion Internal variable to determine recursion status - do not use in calls - */ - function get_dir_file_info(string $sourceDir, bool $topLevelOnly = true, bool $recursion = false): array - { - static $fileData = []; - $relativePath = $sourceDir; - - try { - $fp = opendir($sourceDir); - - // reset the array and make sure $source_dir has a trailing slash on the initial call - if ($recursion === false) { - $fileData = []; - $sourceDir = rtrim(realpath($sourceDir), DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR; - } - - // Used to be foreach (scandir($source_dir, 1) as $file), but scandir() is simply not as fast - while (false !== ($file = readdir($fp))) { - if (is_dir($sourceDir . $file) && $file[0] !== '.' && $topLevelOnly === false) { - get_dir_file_info($sourceDir . $file . DIRECTORY_SEPARATOR, $topLevelOnly, true); - } elseif ($file[0] !== '.') { - $fileData[$file] = get_file_info($sourceDir . $file); - $fileData[$file]['relative_path'] = $relativePath; - } - } - - closedir($fp); - - return $fileData; - } catch (Throwable $fe) { - return []; - } - } -} - -if (! function_exists('get_file_info')) { - /** - * Get File Info - * - * Given a file and path, returns the name, path, size, date modified - * Second parameter allows you to explicitly declare what information you want returned - * Options are: name, server_path, size, date, readable, writable, executable, fileperms - * Returns false if the file cannot be found. - * - * @param string $file Path to file - * @param array|string $returnedValues Array or comma separated string of information returned - * - * @return array|null - */ - function get_file_info(string $file, $returnedValues = ['name', 'server_path', 'size', 'date']) - { - if (! is_file($file)) { - return null; - } - - $fileInfo = []; - - if (is_string($returnedValues)) { - $returnedValues = explode(',', $returnedValues); - } - - foreach ($returnedValues as $key) { - switch ($key) { - case 'name': - $fileInfo['name'] = basename($file); - break; - - case 'server_path': - $fileInfo['server_path'] = $file; - break; - - case 'size': - $fileInfo['size'] = filesize($file); - break; - - case 'date': - $fileInfo['date'] = filemtime($file); - break; - - case 'readable': - $fileInfo['readable'] = is_readable($file); - break; - - case 'writable': - $fileInfo['writable'] = is_really_writable($file); - break; - - case 'executable': - $fileInfo['executable'] = is_executable($file); - break; - - case 'fileperms': - $fileInfo['fileperms'] = fileperms($file); - break; - } - } - - return $fileInfo; - } -} - -if (! function_exists('symbolic_permissions')) { - /** - * Symbolic Permissions - * - * Takes a numeric value representing a file's permissions and returns - * standard symbolic notation representing that value - * - * @param int $perms Permissions - */ - function symbolic_permissions(int $perms): string - { - if (($perms & 0xC000) === 0xC000) { - $symbolic = 's'; // Socket - } elseif (($perms & 0xA000) === 0xA000) { - $symbolic = 'l'; // Symbolic Link - } elseif (($perms & 0x8000) === 0x8000) { - $symbolic = '-'; // Regular - } elseif (($perms & 0x6000) === 0x6000) { - $symbolic = 'b'; // Block special - } elseif (($perms & 0x4000) === 0x4000) { - $symbolic = 'd'; // Directory - } elseif (($perms & 0x2000) === 0x2000) { - $symbolic = 'c'; // Character special - } elseif (($perms & 0x1000) === 0x1000) { - $symbolic = 'p'; // FIFO pipe - } else { - $symbolic = 'u'; // Unknown - } - - // Owner - $symbolic .= (($perms & 0x0100) ? 'r' : '-') - . (($perms & 0x0080) ? 'w' : '-') - . (($perms & 0x0040) ? (($perms & 0x0800) ? 's' : 'x') : (($perms & 0x0800) ? 'S' : '-')); - - // Group - $symbolic .= (($perms & 0x0020) ? 'r' : '-') - . (($perms & 0x0010) ? 'w' : '-') - . (($perms & 0x0008) ? (($perms & 0x0400) ? 's' : 'x') : (($perms & 0x0400) ? 'S' : '-')); - - // World - $symbolic .= (($perms & 0x0004) ? 'r' : '-') - . (($perms & 0x0002) ? 'w' : '-') - . (($perms & 0x0001) ? (($perms & 0x0200) ? 't' : 'x') : (($perms & 0x0200) ? 'T' : '-')); - - return $symbolic; - } -} - -if (! function_exists('octal_permissions')) { - /** - * Octal Permissions - * - * Takes a numeric value representing a file's permissions and returns - * a three character string representing the file's octal permissions - * - * @param int $perms Permissions - */ - function octal_permissions(int $perms): string - { - return substr(sprintf('%o', $perms), -3); - } -} - -if (! function_exists('same_file')) { - /** - * Checks if two files both exist and have identical hashes - * - * @return bool Same or not - */ - function same_file(string $file1, string $file2): bool - { - return is_file($file1) && is_file($file2) && md5_file($file1) === md5_file($file2); - } -} - -if (! function_exists('set_realpath')) { - /** - * Set Realpath - * - * @param bool $checkExistence Checks to see if the path exists - */ - function set_realpath(string $path, bool $checkExistence = false): string - { - // Security check to make sure the path is NOT a URL. No remote file inclusion! - if (preg_match('#^(http:\/\/|https:\/\/|www\.|ftp)#i', $path) || filter_var($path, FILTER_VALIDATE_IP) === $path) { - throw new InvalidArgumentException('The path you submitted must be a local server path, not a URL'); - } - - // Resolve the path - if (realpath($path) !== false) { - $path = realpath($path); - } elseif ($checkExistence && ! is_dir($path) && ! is_file($path)) { - throw new InvalidArgumentException('Not a valid path: ' . $path); - } - - // Add a trailing slash, if this is a directory - return is_dir($path) ? rtrim($path, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR : $path; - } -} diff --git a/system4.4.6/Helpers/form_helper.php b/system4.4.6/Helpers/form_helper.php deleted file mode 100644 index b8ad3477..00000000 --- a/system4.4.6/Helpers/form_helper.php +++ /dev/null @@ -1,803 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -use CodeIgniter\Validation\Exceptions\ValidationException; -use Config\App; -use Config\Services; -use Config\Validation; - -// CodeIgniter Form Helpers - -if (! function_exists('form_open')) { - /** - * Form Declaration - * - * Creates the opening portion of the form. - * - * @param string $action the URI segments of the form destination - * @param array|string $attributes a key/value pair of attributes, or string representation - * @param array $hidden a key/value pair hidden data - */ - function form_open(string $action = '', $attributes = [], array $hidden = []): string - { - // If no action is provided then set to the current url - if (! $action) { - $action = current_url(true); - } // If an action is not a full URL then turn it into one - elseif (strpos($action, '://') === false) { - // If an action has {locale} - if (strpos($action, '{locale}') !== false) { - $action = str_replace('{locale}', Services::request()->getLocale(), $action); - } - - $action = site_url($action); - } - - if (is_array($attributes) && array_key_exists('csrf_id', $attributes)) { - $csrfId = $attributes['csrf_id']; - unset($attributes['csrf_id']); - } - - $attributes = stringify_attributes($attributes); - - if (stripos($attributes, 'method=') === false) { - $attributes .= ' method="post"'; - } - if (stripos($attributes, 'accept-charset=') === false) { - $config = config(App::class); - $attributes .= ' accept-charset="' . strtolower($config->charset) . '"'; - } - - $form = '<form action="' . $action . '"' . $attributes . ">\n"; - - // Add CSRF field if enabled, but leave it out for GET requests and requests to external websites - $before = Services::filters()->getFilters()['before']; - - if ((in_array('csrf', $before, true) || array_key_exists('csrf', $before)) && strpos($action, base_url()) !== false && ! stripos($form, 'method="get"')) { - $form .= csrf_field($csrfId ?? null); - } - - foreach ($hidden as $name => $value) { - $form .= form_hidden($name, $value); - } - - return $form; - } -} - -if (! function_exists('form_open_multipart')) { - /** - * Form Declaration - Multipart type - * - * Creates the opening portion of the form, but with "multipart/form-data". - * - * @param string $action The URI segments of the form destination - * @param array|string $attributes A key/value pair of attributes, or the same as a string - * @param array $hidden A key/value pair hidden data - */ - function form_open_multipart(string $action = '', $attributes = [], array $hidden = []): string - { - if (is_string($attributes)) { - $attributes .= ' enctype="' . esc('multipart/form-data') . '"'; - } else { - $attributes['enctype'] = 'multipart/form-data'; - } - - return form_open($action, $attributes, $hidden); - } -} - -if (! function_exists('form_hidden')) { - /** - * Hidden Input Field - * - * Generates hidden fields. You can pass a simple key/value string or - * an associative array with multiple values. - * - * @param array|string $name Field name or associative array to create multiple fields - * @param array|string $value Field value - */ - function form_hidden($name, $value = '', bool $recursing = false): string - { - static $form; - - if ($recursing === false) { - $form = "\n"; - } - - if (is_array($name)) { - foreach ($name as $key => $val) { - form_hidden($key, $val, true); - } - - return $form; - } - - if (! is_array($value)) { - $form .= form_input($name, $value, '', 'hidden'); - } else { - foreach ($value as $k => $v) { - $k = is_int($k) ? '' : $k; - form_hidden($name . '[' . $k . ']', $v, true); - } - } - - return $form; - } -} - -if (! function_exists('form_input')) { - /** - * Text Input Field. If 'type' is passed in the $type field, it will be - * used as the input type, for making 'email', 'phone', etc input fields. - * - * @param array|string $data - * @param array|object|string $extra string, array, object that can be cast to array - */ - function form_input($data = '', string $value = '', $extra = '', string $type = 'text'): string - { - $defaults = [ - 'type' => $type, - 'name' => is_array($data) ? '' : $data, - 'value' => $value, - ]; - - return '<input ' . parse_form_attributes($data, $defaults) . stringify_attributes($extra) . _solidus() . ">\n"; - } -} - -if (! function_exists('form_password')) { - /** - * Password Field - * - * Identical to the input function but adds the "password" type - * - * @param array|string $data - * @param array|object|string $extra string, array, object that can be cast to array - */ - function form_password($data = '', string $value = '', $extra = ''): string - { - if (! is_array($data)) { - $data = ['name' => $data]; - } - $data['type'] = 'password'; - - return form_input($data, $value, $extra); - } -} - -if (! function_exists('form_upload')) { - /** - * Upload Field - * - * Identical to the input function but adds the "file" type - * - * @param array|string $data - * @param array|object|string $extra string, array, object that can be cast to array - */ - function form_upload($data = '', string $value = '', $extra = ''): string - { - $defaults = [ - 'type' => 'file', - 'name' => '', - ]; - - if (! is_array($data)) { - $data = ['name' => $data]; - } - - $data['type'] = 'file'; - - return '<input ' . parse_form_attributes($data, $defaults) . stringify_attributes($extra) . _solidus() . ">\n"; - } -} - -if (! function_exists('form_textarea')) { - /** - * Textarea field - * - * @param array|string $data - * @param array|object|string $extra string, array, object that can be cast to array - */ - function form_textarea($data = '', string $value = '', $extra = ''): string - { - $defaults = [ - 'name' => is_array($data) ? '' : $data, - 'cols' => '40', - 'rows' => '10', - ]; - if (! is_array($data) || ! isset($data['value'])) { - $val = $value; - } else { - $val = $data['value']; - unset($data['value']); // textareas don't use the value attribute - } - - // Unsets default rows and cols if defined in extra field as array or string. - if ((is_array($extra) && array_key_exists('rows', $extra)) || (is_string($extra) && stripos(preg_replace('/\s+/', '', $extra), 'rows=') !== false)) { - unset($defaults['rows']); - } - - if ((is_array($extra) && array_key_exists('cols', $extra)) || (is_string($extra) && stripos(preg_replace('/\s+/', '', $extra), 'cols=') !== false)) { - unset($defaults['cols']); - } - - return '<textarea ' . rtrim(parse_form_attributes($data, $defaults)) . stringify_attributes($extra) . '>' - . htmlspecialchars($val) - . "</textarea>\n"; - } -} - -if (! function_exists('form_multiselect')) { - /** - * Multi-select menu - * - * @param array|string $name - * @param array|object|string $extra string, array, object that can be cast to array - */ - function form_multiselect($name = '', array $options = [], array $selected = [], $extra = ''): string - { - $extra = stringify_attributes($extra); - - if (stripos($extra, 'multiple') === false) { - $extra .= ' multiple="multiple"'; - } - - return form_dropdown($name, $options, $selected, $extra); - } -} - -if (! function_exists('form_dropdown')) { - /** - * Drop-down Menu - * - * @param array|string $data - * @param array|string $options - * @param array|string $selected - * @param array|object|string $extra string, array, object that can be cast to array - */ - function form_dropdown($data = '', $options = [], $selected = [], $extra = ''): string - { - $defaults = []; - if (is_array($data)) { - if (isset($data['selected'])) { - $selected = $data['selected']; - unset($data['selected']); // select tags don't have a selected attribute - } - if (isset($data['options'])) { - $options = $data['options']; - unset($data['options']); // select tags don't use an options attribute - } - } else { - $defaults = ['name' => $data]; - } - - if (! is_array($selected)) { - $selected = [$selected]; - } - if (! is_array($options)) { - $options = [$options]; - } - - // If no selected state was submitted we will attempt to set it automatically - if ($selected === []) { - if (is_array($data)) { - if (isset($data['name'], $_POST[$data['name']])) { - $selected = [$_POST[$data['name']]]; - } - } elseif (isset($_POST[$data])) { - $selected = [$_POST[$data]]; - } - } - - // Standardize selected as strings, like the option keys will be - foreach ($selected as $key => $item) { - $selected[$key] = (string) $item; - } - - $extra = stringify_attributes($extra); - $multiple = (count($selected) > 1 && stripos($extra, 'multiple') === false) ? ' multiple="multiple"' : ''; - $form = '<select ' . rtrim(parse_form_attributes($data, $defaults)) . $extra . $multiple . ">\n"; - - foreach ($options as $key => $val) { - // Keys should always be strings for strict comparison - $key = (string) $key; - - if (is_array($val)) { - if ($val === []) { - continue; - } - - $form .= '<optgroup label="' . $key . "\">\n"; - - foreach ($val as $optgroupKey => $optgroupVal) { - // Keys should always be strings for strict comparison - $optgroupKey = (string) $optgroupKey; - - $sel = in_array($optgroupKey, $selected, true) ? ' selected="selected"' : ''; - $form .= '<option value="' . htmlspecialchars($optgroupKey) . '"' . $sel . '>' . $optgroupVal . "</option>\n"; - } - - $form .= "</optgroup>\n"; - } else { - $form .= '<option value="' . htmlspecialchars($key) . '"' - . (in_array($key, $selected, true) ? ' selected="selected"' : '') . '>' - . $val . "</option>\n"; - } - } - - return $form . "</select>\n"; - } -} - -if (! function_exists('form_checkbox')) { - /** - * Checkbox Field - * - * @param array|string $data - * @param array|object|string $extra string, array, object that can be cast to array - */ - function form_checkbox($data = '', string $value = '', bool $checked = false, $extra = ''): string - { - $defaults = [ - 'type' => 'checkbox', - 'name' => (! is_array($data) ? $data : ''), - 'value' => $value, - ]; - - if (is_array($data) && array_key_exists('checked', $data)) { - $checked = $data['checked']; - - if ($checked === false) { - unset($data['checked']); - } else { - $data['checked'] = 'checked'; - } - } - - if ($checked === true) { - $defaults['checked'] = 'checked'; - } - - return '<input ' . parse_form_attributes($data, $defaults) . stringify_attributes($extra) . _solidus() . ">\n"; - } -} - -if (! function_exists('form_radio')) { - /** - * Radio Button - * - * @param array|string $data - * @param array|object|string $extra string, array, object that can be cast to array - */ - function form_radio($data = '', string $value = '', bool $checked = false, $extra = ''): string - { - if (! is_array($data)) { - $data = ['name' => $data]; - } - $data['type'] = 'radio'; - - return form_checkbox($data, $value, $checked, $extra); - } -} - -if (! function_exists('form_submit')) { - /** - * Submit Button - * - * @param array|string $data - * @param array|object|string $extra string, array, object that can be cast to array - */ - function form_submit($data = '', string $value = '', $extra = ''): string - { - return form_input($data, $value, $extra, 'submit'); - } -} - -if (! function_exists('form_reset')) { - /** - * Reset Button - * - * @param array|string $data - * @param array|object|string $extra string, array, object that can be cast to array - */ - function form_reset($data = '', string $value = '', $extra = ''): string - { - return form_input($data, $value, $extra, 'reset'); - } -} - -if (! function_exists('form_button')) { - /** - * Form Button - * - * @param array|string $data - * @param array|object|string $extra string, array, object that can be cast to array - */ - function form_button($data = '', string $content = '', $extra = ''): string - { - $defaults = [ - 'name' => is_array($data) ? '' : $data, - 'type' => 'button', - ]; - - if (is_array($data) && isset($data['content'])) { - $content = $data['content']; - unset($data['content']); // content is not an attribute - } - - return '<button ' . parse_form_attributes($data, $defaults) . stringify_attributes($extra) . '>' - . $content - . "</button>\n"; - } -} - -if (! function_exists('form_label')) { - /** - * Form Label Tag - * - * @param string $labelText The text to appear onscreen - * @param string $id The id the label applies to - * @param array $attributes Additional attributes - */ - function form_label(string $labelText = '', string $id = '', array $attributes = []): string - { - $label = '<label'; - - if ($id !== '') { - $label .= ' for="' . $id . '"'; - } - - if (is_array($attributes) && $attributes) { - foreach ($attributes as $key => $val) { - $label .= ' ' . $key . '="' . $val . '"'; - } - } - - return $label . '>' . $labelText . '</label>'; - } -} - -if (! function_exists('form_datalist')) { - /** - * Datalist - * - * The <datalist> element specifies a list of pre-defined options for an <input> element. - * Users will see a drop-down list of pre-defined options as they input data. - * The list attribute of the <input> element, must refer to the id attribute of the <datalist> element. - */ - function form_datalist(string $name, string $value, array $options): string - { - $data = [ - 'type' => 'text', - 'name' => $name, - 'list' => $name . '_list', - 'value' => $value, - ]; - - $out = form_input($data) . "\n"; - - $out .= "<datalist id='" . $name . "_list'>"; - - foreach ($options as $option) { - $out .= "<option value='{$option}'>\n"; - } - - return $out . ("</datalist>\n"); - } -} - -if (! function_exists('form_fieldset')) { - /** - * Fieldset Tag - * - * Used to produce <fieldset><legend>text</legend>. To close fieldset - * use form_fieldset_close() - * - * @param string $legendText The legend text - * @param array $attributes Additional attributes - */ - function form_fieldset(string $legendText = '', array $attributes = []): string - { - $fieldset = '<fieldset' . stringify_attributes($attributes) . ">\n"; - - if ($legendText !== '') { - return $fieldset . '<legend>' . $legendText . "</legend>\n"; - } - - return $fieldset; - } -} - -if (! function_exists('form_fieldset_close')) { - /** - * Fieldset Close Tag - */ - function form_fieldset_close(string $extra = ''): string - { - return '</fieldset>' . $extra; - } -} - -if (! function_exists('form_close')) { - /** - * Form Close Tag - */ - function form_close(string $extra = ''): string - { - return '</form>' . $extra; - } -} - -if (! function_exists('set_value')) { - /** - * Form Value - * - * Grabs a value from the POST array for the specified field so you can - * re-populate an input field or textarea - * - * @param string $field Field name - * @param string|string[] $default Default value - * @param bool $htmlEscape Whether to escape HTML special characters or not - * - * @return string|string[] - */ - function set_value(string $field, $default = '', bool $htmlEscape = true) - { - $request = Services::request(); - - // Try any old input data we may have first - $value = $request->getOldInput($field); - - if ($value === null) { - $value = $request->getPost($field) ?? $default; - } - - return ($htmlEscape) ? esc($value) : $value; - } -} - -if (! function_exists('set_select')) { - /** - * Set Select - * - * Let's you set the selected value of a <select> menu via data in the POST array. - */ - function set_select(string $field, string $value = '', bool $default = false): string - { - $request = Services::request(); - - // Try any old input data we may have first - $input = $request->getOldInput($field); - - if ($input === null) { - $input = $request->getPost($field); - } - - if ($input === null) { - return ($default === true) ? ' selected="selected"' : ''; - } - - if (is_array($input)) { - // Note: in_array('', array(0)) returns TRUE, do not use it - foreach ($input as &$v) { - if ($value === $v) { - return ' selected="selected"'; - } - } - - return ''; - } - - return ($input === $value) ? ' selected="selected"' : ''; - } -} - -if (! function_exists('set_checkbox')) { - /** - * Set Checkbox - * - * Let's you set the selected value of a checkbox via the value in the POST array. - */ - function set_checkbox(string $field, string $value = '', bool $default = false): string - { - $request = Services::request(); - - // Try any old input data we may have first - $input = $request->getOldInput($field); - - if ($input === null) { - $input = $request->getPost($field); - } - - if (is_array($input)) { - // Note: in_array('', array(0)) returns TRUE, do not use it - foreach ($input as &$v) { - if ($value === $v) { - return ' checked="checked"'; - } - } - - return ''; - } - - $session = Services::session(); - $hasOldInput = $session->has('_ci_old_input'); - - // Unchecked checkbox and radio inputs are not even submitted by browsers ... - if ((string) $input === '0' || ! empty($request->getPost()) || $hasOldInput) { - return ($input === $value) ? ' checked="checked"' : ''; - } - - return ($default === true) ? ' checked="checked"' : ''; - } -} - -if (! function_exists('set_radio')) { - /** - * Set Radio - * - * Let's you set the selected value of a radio field via info in the POST array. - */ - function set_radio(string $field, string $value = '', bool $default = false): string - { - $request = Services::request(); - - // Try any old input data we may have first - $oldInput = $request->getOldInput($field); - - $postInput = $request->getPost($field); - - $input = $oldInput ?? $postInput ?? $default; - - if (is_array($input)) { - // Note: in_array('', array(0)) returns TRUE, do not use it - foreach ($input as $v) { - if ($value === $v) { - return ' checked="checked"'; - } - } - - return ''; - } - - // Unchecked checkbox and radio inputs are not even submitted by browsers ... - if ($oldInput !== null || $postInput !== null) { - return ((string) $input === $value) ? ' checked="checked"' : ''; - } - - return ($default === true) ? ' checked="checked"' : ''; - } -} - -if (! function_exists('validation_errors')) { - /** - * Returns the validation errors. - * - * First, checks the validation errors that are stored in the session. - * To store the errors in the session, you need to use `withInput()` with `redirect()`. - * - * The returned array should be in the following format: - * [ - * 'field1' => 'error message', - * 'field2' => 'error message', - * ] - * - * @return array<string, string> - */ - function validation_errors() - { - $errors = session('_ci_validation_errors'); - - // Check the session to see if any were - // passed along from a redirect withErrors() request. - if ($errors !== null && (ENVIRONMENT === 'testing' || ! is_cli())) { - return $errors; - } - - $validation = Services::validation(); - - return $validation->getErrors(); - } -} - -if (! function_exists('validation_list_errors')) { - /** - * Returns the rendered HTML of the validation errors. - * - * See Validation::listErrors() - */ - function validation_list_errors(string $template = 'list'): string - { - $config = config(Validation::class); - $view = Services::renderer(); - - if (! array_key_exists($template, $config->templates)) { - throw ValidationException::forInvalidTemplate($template); - } - - return $view->setVar('errors', validation_errors()) - ->render($config->templates[$template]); - } -} - -if (! function_exists('validation_show_error')) { - /** - * Returns a single error for the specified field in formatted HTML. - * - * See Validation::showError() - */ - function validation_show_error(string $field, string $template = 'single'): string - { - $config = config(Validation::class); - $view = Services::renderer(); - - $errors = array_filter(validation_errors(), static fn ($key) => preg_match( - '/^' . str_replace(['\.\*', '\*\.'], ['\..+', '.+\.'], preg_quote($field, '/')) . '$/', - $key - ), ARRAY_FILTER_USE_KEY); - - if ($errors === []) { - return ''; - } - - if (! array_key_exists($template, $config->templates)) { - throw ValidationException::forInvalidTemplate($template); - } - - return $view->setVar('error', implode("\n", $errors)) - ->render($config->templates[$template]); - } -} - -if (! function_exists('parse_form_attributes')) { - /** - * Parse the form attributes - * - * Helper function used by some of the form helpers - * - * @internal - * - * @param array|string $attributes List of attributes - * @param array $default Default values - */ - function parse_form_attributes($attributes, array $default): string - { - if (is_array($attributes)) { - foreach (array_keys($default) as $key) { - if (isset($attributes[$key])) { - $default[$key] = $attributes[$key]; - unset($attributes[$key]); - } - } - if ($attributes !== []) { - $default = array_merge($default, $attributes); - } - } - - $att = ''; - - foreach ($default as $key => $val) { - if (! is_bool($val)) { - if ($key === 'value') { - $val = esc($val); - } elseif ($key === 'name' && ! strlen($default['name'])) { - continue; - } - $att .= $key . '="' . $val . '"' . ($key === array_key_last($default) ? '' : ' '); - } else { - $att .= $key . ' '; - } - } - - return $att; - } -} diff --git a/system4.4.6/Helpers/html_helper.php b/system4.4.6/Helpers/html_helper.php deleted file mode 100644 index 0f7e154a..00000000 --- a/system4.4.6/Helpers/html_helper.php +++ /dev/null @@ -1,547 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -use CodeIgniter\Files\Exceptions\FileNotFoundException; -use Config\DocTypes; -use Config\Mimes; - -// CodeIgniter HTML Helpers - -if (! function_exists('ul')) { - /** - * Unordered List - * - * Generates an HTML unordered list from an single or - * multi-dimensional array. - * - * @param array|object|string $attributes HTML attributes string, array, object - */ - function ul(array $list, $attributes = ''): string - { - return _list('ul', $list, $attributes); - } -} - -if (! function_exists('ol')) { - /** - * Ordered List - * - * Generates an HTML ordered list from an single or multi-dimensional array. - * - * @param array|object|string $attributes HTML attributes string, array, object - */ - function ol(array $list, $attributes = ''): string - { - return _list('ol', $list, $attributes); - } -} - -if (! function_exists('_list')) { - /** - * Generates the list - * - * Generates an HTML ordered list from an single or multi-dimensional array. - * - * @param array $list - * @param array|object|string $attributes string, array, object - */ - function _list(string $type = 'ul', $list = [], $attributes = '', int $depth = 0): string - { - // Set the indentation based on the depth - $out = str_repeat(' ', $depth) - // Write the opening list tag - . '<' . $type . stringify_attributes($attributes) . ">\n"; - - // Cycle through the list elements. If an array is - // encountered we will recursively call _list() - - foreach ($list as $key => $val) { - $out .= str_repeat(' ', $depth + 2) . '<li>'; - - if (! is_array($val)) { - $out .= $val; - } else { - $out .= $key - . "\n" - . _list($type, $val, '', $depth + 4) - . str_repeat(' ', $depth + 2); - } - - $out .= "</li>\n"; - } - - // Set the indentation for the closing tag and apply it - return $out . str_repeat(' ', $depth) . '</' . $type . ">\n"; - } -} - -if (! function_exists('img')) { - /** - * Image - * - * Generates an image element - * - * @param array|string $src Image source URI, or array of attributes and values - * @param bool $indexPage Whether to treat $src as a routed URI string - * @param array|object|string $attributes Additional HTML attributes - */ - function img($src = '', bool $indexPage = false, $attributes = ''): string - { - if (! is_array($src)) { - $src = ['src' => $src]; - } - if (! isset($src['src'])) { - $src['src'] = $attributes['src'] ?? ''; - } - if (! isset($src['alt'])) { - $src['alt'] = $attributes['alt'] ?? ''; - } - - $img = '<img'; - - // Check for a relative URI - if (! preg_match('#^([a-z]+:)?//#i', $src['src']) && strpos($src['src'], 'data:') !== 0) { - if ($indexPage === true) { - $img .= ' src="' . site_url($src['src']) . '"'; - } else { - $img .= ' src="' . slash_item('baseURL') . $src['src'] . '"'; - } - - unset($src['src']); - } - - // Append any other values - foreach ($src as $key => $value) { - $img .= ' ' . $key . '="' . $value . '"'; - } - - // Prevent passing completed values to stringify_attributes - if (is_array($attributes)) { - unset($attributes['alt'], $attributes['src']); - } - - return $img . stringify_attributes($attributes) . _solidus() . '>'; - } -} - -if (! function_exists('img_data')) { - /** - * Image (data) - * - * Generates a src-ready string from an image using the "data:" protocol - * - * @param string $path Image source path - * @param string|null $mime MIME type to use, or null to guess - */ - function img_data(string $path, ?string $mime = null): string - { - if (! is_file($path) || ! is_readable($path)) { - throw FileNotFoundException::forFileNotFound($path); - } - - // Read in file binary data - $handle = fopen($path, 'rb'); - $data = fread($handle, filesize($path)); - fclose($handle); - - // Encode as base64 - $data = base64_encode($data); - - // Figure out the type (Hail Mary to JPEG) - $mime ??= Mimes::guessTypeFromExtension(pathinfo($path, PATHINFO_EXTENSION)) ?? 'image/jpg'; - - return 'data:' . $mime . ';base64,' . $data; - } -} - -if (! function_exists('doctype')) { - /** - * Doctype - * - * Generates a page document type declaration - * - * Examples of valid options: html5, xhtml-11, xhtml-strict, xhtml-trans, - * xhtml-frame, html4-strict, html4-trans, and html4-frame. - * All values are saved in the doctypes config file. - * - * @param string $type The doctype to be generated - */ - function doctype(string $type = 'html5'): string - { - $config = new DocTypes(); - $doctypes = $config->list; - - return $doctypes[$type] ?? false; - } -} - -if (! function_exists('script_tag')) { - /** - * Script - * - * Generates link to a JS file - * - * @param array|string $src Script source or an array of attributes - * @param bool $indexPage Should indexPage be added to the JS path - */ - function script_tag($src = '', bool $indexPage = false): string - { - $cspNonce = csp_script_nonce(); - $cspNonce = $cspNonce ? ' ' . $cspNonce : $cspNonce; - $script = '<script' . $cspNonce . ' '; - if (! is_array($src)) { - $src = ['src' => $src]; - } - - foreach ($src as $k => $v) { - if ($k === 'src' && ! preg_match('#^([a-z]+:)?//#i', $v)) { - if ($indexPage === true) { - $script .= 'src="' . site_url($v) . '" '; - } else { - $script .= 'src="' . slash_item('baseURL') . $v . '" '; - } - } else { - // for attributes without values, like async or defer, use NULL. - $script .= $k . (null === $v ? ' ' : '="' . $v . '" '); - } - } - - return rtrim($script) . '></script>'; - } -} - -if (! function_exists('link_tag')) { - /** - * Link - * - * Generates link tag - * - * @param array<string, bool|string>|string $href Stylesheet href or an array - * @param bool $indexPage should indexPage be added to the CSS path. - */ - function link_tag( - $href = '', - string $rel = 'stylesheet', - string $type = 'text/css', - string $title = '', - string $media = '', - bool $indexPage = false, - string $hreflang = '' - ): string { - $attributes = []; - // extract fields if needed - if (is_array($href)) { - $rel = $href['rel'] ?? $rel; - $type = $href['type'] ?? $type; - $title = $href['title'] ?? $title; - $media = $href['media'] ?? $media; - $hreflang = $href['hreflang'] ?? ''; - $indexPage = $href['indexPage'] ?? $indexPage; - $href = $href['href'] ?? ''; - } - - if (! preg_match('#^([a-z]+:)?//#i', $href)) { - $attributes['href'] = $indexPage ? site_url($href) : slash_item('baseURL') . $href; - } else { - $attributes['href'] = $href; - } - - if ($hreflang !== '') { - $attributes['hreflang'] = $hreflang; - } - - $attributes['rel'] = $rel; - - if ($type !== '' && $rel !== 'canonical' && $hreflang === '' && ! ($rel === 'alternate' && $media !== '')) { - $attributes['type'] = $type; - } - - if ($media !== '') { - $attributes['media'] = $media; - } - - if ($title !== '') { - $attributes['title'] = $title; - } - - return '<link' . stringify_attributes($attributes) . _solidus() . '>'; - } -} - -if (! function_exists('video')) { - /** - * Video - * - * Generates a video element to embed videos. The video element can - * contain one or more video sources - * - * @param array|string $src Either a source string or an array of sources - * @param string $unsupportedMessage The message to display if the media tag is not supported by the browser - * @param string $attributes HTML attributes - */ - function video($src, string $unsupportedMessage = '', string $attributes = '', array $tracks = [], bool $indexPage = false): string - { - if (is_array($src)) { - return _media('video', $src, $unsupportedMessage, $attributes, $tracks); - } - - $video = '<video'; - - if (_has_protocol($src)) { - $video .= ' src="' . $src . '"'; - } elseif ($indexPage === true) { - $video .= ' src="' . site_url($src) . '"'; - } else { - $video .= ' src="' . slash_item('baseURL') . $src . '"'; - } - - if ($attributes !== '') { - $video .= ' ' . $attributes; - } - - $video .= ">\n"; - - foreach ($tracks as $track) { - $video .= _space_indent() . $track . "\n"; - } - - if ($unsupportedMessage !== '') { - $video .= _space_indent() - . $unsupportedMessage - . "\n"; - } - - return $video . "</video>\n"; - } -} - -if (! function_exists('audio')) { - /** - * Audio - * - * Generates an audio element to embed sounds - * - * @param array|string $src Either a source string or an array of sources - * @param string $unsupportedMessage The message to display if the media tag is not supported by the browser. - * @param string $attributes HTML attributes - */ - function audio($src, string $unsupportedMessage = '', string $attributes = '', array $tracks = [], bool $indexPage = false): string - { - if (is_array($src)) { - return _media('audio', $src, $unsupportedMessage, $attributes, $tracks); - } - - $audio = '<audio'; - - if (_has_protocol($src)) { - $audio .= ' src="' . $src . '"'; - } elseif ($indexPage === true) { - $audio .= ' src="' . site_url($src) . '"'; - } else { - $audio .= ' src="' . slash_item('baseURL') . $src . '"'; - } - - if ($attributes !== '') { - $audio .= ' ' . $attributes; - } - - $audio .= '>'; - - foreach ($tracks as $track) { - $audio .= "\n" . _space_indent() . $track; - } - - if ($unsupportedMessage !== '') { - $audio .= "\n" . _space_indent() . $unsupportedMessage . "\n"; - } - - return $audio . "</audio>\n"; - } -} - -if (! function_exists('_media')) { - /** - * Generate media based tag - * - * @param string $unsupportedMessage The message to display if the media tag is not supported by the browser. - */ - function _media(string $name, array $types = [], string $unsupportedMessage = '', string $attributes = '', array $tracks = []): string - { - $media = '<' . $name; - - if ($attributes === '') { - $media .= '>'; - } else { - $media .= ' ' . $attributes . '>'; - } - - $media .= "\n"; - - foreach ($types as $option) { - $media .= _space_indent() . $option . "\n"; - } - - foreach ($tracks as $track) { - $media .= _space_indent() . $track . "\n"; - } - - if ($unsupportedMessage !== '') { - $media .= _space_indent() . $unsupportedMessage . "\n"; - } - - return $media . ('</' . $name . ">\n"); - } -} - -if (! function_exists('source')) { - /** - * Source - * - * Generates a source element that specifies multiple media resources - * for either audio or video element - * - * @param string $src The path of the media resource - * @param string $type The MIME-type of the resource with optional codecs parameters - * @param string $attributes HTML attributes - */ - function source(string $src, string $type = 'unknown', string $attributes = '', bool $indexPage = false): string - { - if (! _has_protocol($src)) { - $src = $indexPage === true ? site_url($src) : slash_item('baseURL') . $src; - } - - $source = '<source src="' . $src - . '" type="' . $type . '"'; - - if ($attributes !== '') { - $source .= ' ' . $attributes; - } - - return $source . _solidus() . '>'; - } -} - -if (! function_exists('track')) { - /** - * Track - * - * Generates a track element to specify timed tracks. The tracks are - * formatted in WebVTT format. - * - * @param string $src The path of the .VTT file - */ - function track(string $src, string $kind, string $srcLanguage, string $label): string - { - return '<track src="' . $src - . '" kind="' . $kind - . '" srclang="' . $srcLanguage - . '" label="' . $label - . '"' . _solidus() . '>'; - } -} - -if (! function_exists('object')) { - /** - * Object - * - * Generates an object element that represents the media - * as either image or a resource plugin such as audio, video, - * Java applets, ActiveX, PDF and Flash - * - * @param string $data A resource URL - * @param string $type Content-type of the resource - * @param string $attributes HTML attributes - */ - function object(string $data, string $type = 'unknown', string $attributes = '', array $params = [], bool $indexPage = false): string - { - if (! _has_protocol($data)) { - $data = $indexPage === true ? site_url($data) : slash_item('baseURL') . $data; - } - - $object = '<object data="' . $data . '" ' - . $attributes . '>'; - - if ($params !== []) { - $object .= "\n"; - } - - foreach ($params as $param) { - $object .= _space_indent() . $param . "\n"; - } - - return $object . "</object>\n"; - } -} - -if (! function_exists('param')) { - /** - * Param - * - * Generates a param element that defines parameters - * for the object element. - * - * @param string $name The name of the parameter - * @param string $value The value of the parameter - * @param string $type The MIME-type - * @param string $attributes HTML attributes - */ - function param(string $name, string $value, string $type = 'ref', string $attributes = ''): string - { - return '<param name="' . $name - . '" type="' . $type - . '" value="' . $value - . '" ' . $attributes . _solidus() . '>'; - } -} - -if (! function_exists('embed')) { - /** - * Embed - * - * Generates an embed element - * - * @param string $src The path of the resource to embed - * @param string $type MIME-type - * @param string $attributes HTML attributes - */ - function embed(string $src, string $type = 'unknown', string $attributes = '', bool $indexPage = false): string - { - if (! _has_protocol($src)) { - $src = $indexPage === true ? site_url($src) : slash_item('baseURL') . $src; - } - - return '<embed src="' . $src - . '" type="' . $type . '" ' - . $attributes . _solidus() . ">\n"; - } -} - -if (! function_exists('_has_protocol')) { - /** - * Test the protocol of a URI. - * - * @return false|int - */ - function _has_protocol(string $url) - { - return preg_match('#^([a-z]+:)?//#i', $url); - } -} - -if (! function_exists('_space_indent')) { - /** - * Provide space indenting. - */ - function _space_indent(int $depth = 2): string - { - return str_repeat(' ', $depth); - } -} diff --git a/system4.4.6/Helpers/inflector_helper.php b/system4.4.6/Helpers/inflector_helper.php deleted file mode 100644 index bac5ab1e..00000000 --- a/system4.4.6/Helpers/inflector_helper.php +++ /dev/null @@ -1,337 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// CodeIgniter Inflector Helpers - -if (! function_exists('singular')) { - /** - * Singular - * - * Takes a plural word and makes it singular - * - * @param string $string Input string - */ - function singular(string $string): string - { - $result = $string; - - if (! is_pluralizable($result)) { - return $result; - } - - // Arranged in order. - $singularRules = [ - '/(matr)ices$/' => '\1ix', - '/(vert|ind)ices$/' => '\1ex', - '/^(ox)en/' => '\1', - '/(alias)es$/' => '\1', - '/([octop|vir])i$/' => '\1us', - '/(cris|ax|test)es$/' => '\1is', - '/(shoe)s$/' => '\1', - '/(o)es$/' => '\1', - '/(bus|campus)es$/' => '\1', - '/([m|l])ice$/' => '\1ouse', - '/(x|ch|ss|sh)es$/' => '\1', - '/(m)ovies$/' => '\1\2ovie', - '/(s)eries$/' => '\1\2eries', - '/([^aeiouy]|qu)ies$/' => '\1y', - '/([lr])ves$/' => '\1f', - '/(tive)s$/' => '\1', - '/(hive)s$/' => '\1', - '/([^f])ves$/' => '\1fe', - '/(^analy)ses$/' => '\1sis', - '/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/' => '\1\2sis', - '/([ti])a$/' => '\1um', - '/(p)eople$/' => '\1\2erson', - '/(m)en$/' => '\1an', - '/(s)tatuses$/' => '\1\2tatus', - '/(c)hildren$/' => '\1\2hild', - '/(n)ews$/' => '\1\2ews', - '/(quiz)zes$/' => '\1', - '/([^us])s$/' => '\1', - ]; - - foreach ($singularRules as $rule => $replacement) { - if (preg_match($rule, $result)) { - $result = preg_replace($rule, $replacement, $result); - break; - } - } - - return $result; - } -} - -if (! function_exists('plural')) { - /** - * Plural - * - * Takes a singular word and makes it plural - * - * @param string $string Input string - */ - function plural(string $string): string - { - $result = $string; - - if (! is_pluralizable($result)) { - return $result; - } - - $pluralRules = [ - '/(quiz)$/' => '\1zes', // quizzes - '/^(ox)$/' => '\1\2en', // ox - '/([m|l])ouse$/' => '\1ice', // mouse, louse - '/(matr|vert|ind)ix|ex$/' => '\1ices', // matrix, vertex, index - '/(x|ch|ss|sh)$/' => '\1es', // search, switch, fix, box, process, address - '/([^aeiouy]|qu)y$/' => '\1ies', // query, ability, agency - '/(hive)$/' => '\1s', // archive, hive - '/(?:([^f])fe|([lr])f)$/' => '\1\2ves', // half, safe, wife - '/sis$/' => 'ses', // basis, diagnosis - '/([ti])um$/' => '\1a', // datum, medium - '/(p)erson$/' => '\1eople', // person, salesperson - '/(m)an$/' => '\1en', // man, woman, spokesman - '/(c)hild$/' => '\1hildren', // child - '/(buffal|tomat)o$/' => '\1\2oes', // buffalo, tomato - '/(bu|campu)s$/' => '\1\2ses', // bus, campus - '/(alias|status|virus)$/' => '\1es', // alias - '/(octop)us$/' => '\1i', // octopus - '/(ax|cris|test)is$/' => '\1es', // axis, crisis - '/s$/' => 's', // no change (compatibility) - '/$/' => 's', - ]; - - foreach ($pluralRules as $rule => $replacement) { - if (preg_match($rule, $result)) { - $result = preg_replace($rule, $replacement, $result); - break; - } - } - - return $result; - } -} - -if (! function_exists('counted')) { - /** - * Counted - * - * Takes a number and a word to return the plural or not - * E.g. 0 cats, 1 cat, 2 cats, ... - * - * @param int $count Number of items - * @param string $string Input string - */ - function counted(int $count, string $string): string - { - $result = "{$count} "; - - return $result . ($count === 1 ? singular($string) : plural($string)); - } -} - -if (! function_exists('camelize')) { - /** - * Camelize - * - * Takes multiple words separated by spaces or - * underscores and converts them to camel case. - * - * @param string $string Input string - */ - function camelize(string $string): string - { - return lcfirst(str_replace(' ', '', ucwords(preg_replace('/[\s_]+/', ' ', $string)))); - } -} - -if (! function_exists('pascalize')) { - /** - * Pascalize - * - * Takes multiple words separated by spaces or - * underscores and converts them to Pascal case, - * which is camel case with an uppercase first letter. - * - * @param string $string Input string - */ - function pascalize(string $string): string - { - return ucfirst(camelize($string)); - } -} - -if (! function_exists('underscore')) { - /** - * Underscore - * - * Takes multiple words separated by spaces and underscores them - * - * @param string $string Input string - */ - function underscore(string $string): string - { - $replacement = trim($string); - - return preg_replace('/[\s]+/', '_', $replacement); - } -} - -if (! function_exists('decamelize')) { - /** - * Decamelize - * - * Takes multiple words separated by camel case and - * underscores them. - * - * @param string $string Input string - */ - function decamelize(string $string): string - { - return strtolower(preg_replace(['/([a-z\d])([A-Z])/', '/([^_])([A-Z][a-z])/'], '$1_$2', trim($string))); - } -} - -if (! function_exists('humanize')) { - /** - * Humanize - * - * Takes multiple words separated by the separator, - * camelizes and changes them to spaces - * - * @param string $string Input string - * @param string $separator Input separator - */ - function humanize(string $string, string $separator = '_'): string - { - $replacement = trim($string); - - return ucwords(preg_replace('/[' . $separator . ']+/', ' ', $replacement)); - } -} - -if (! function_exists('is_pluralizable')) { - /** - * Checks if the given word has a plural version. - * - * @param string $word Word to check - */ - function is_pluralizable(string $word): bool - { - $uncountables = in_array( - strtolower($word), - [ - 'advice', - 'bravery', - 'butter', - 'chaos', - 'clarity', - 'coal', - 'courage', - 'cowardice', - 'curiosity', - 'education', - 'equipment', - 'evidence', - 'fish', - 'fun', - 'furniture', - 'greed', - 'help', - 'homework', - 'honesty', - 'information', - 'insurance', - 'jewelry', - 'knowledge', - 'livestock', - 'love', - 'luck', - 'marketing', - 'meta', - 'money', - 'mud', - 'news', - 'patriotism', - 'racism', - 'rice', - 'satisfaction', - 'scenery', - 'series', - 'sexism', - 'silence', - 'species', - 'spelling', - 'sugar', - 'water', - 'weather', - 'wisdom', - 'work', - ], - true - ); - - return ! $uncountables; - } -} - -if (! function_exists('dasherize')) { - /** - * Replaces underscores with dashes in the string. - * - * @param string $string Input string - */ - function dasherize(string $string): string - { - return str_replace('_', '-', $string); - } -} - -if (! function_exists('ordinal')) { - /** - * Returns the suffix that should be added to a - * number to denote the position in an ordered - * sequence such as 1st, 2nd, 3rd, 4th. - * - * @param int $integer The integer to determine the suffix - */ - function ordinal(int $integer): string - { - $suffixes = [ - 'th', - 'st', - 'nd', - 'rd', - 'th', - 'th', - 'th', - 'th', - 'th', - 'th', - ]; - - return $integer % 100 >= 11 && $integer % 100 <= 13 ? 'th' : $suffixes[$integer % 10]; - } -} - -if (! function_exists('ordinalize')) { - /** - * Turns a number into an ordinal string used - * to denote the position in an ordered sequence - * such as 1st, 2nd, 3rd, 4th. - * - * @param int $integer The integer to ordinalize - */ - function ordinalize(int $integer): string - { - return $integer . ordinal($integer); - } -} diff --git a/system4.4.6/Helpers/kint_helper.php b/system4.4.6/Helpers/kint_helper.php deleted file mode 100644 index 4221573a..00000000 --- a/system4.4.6/Helpers/kint_helper.php +++ /dev/null @@ -1,92 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// This helper is autoloaded by CodeIgniter. - -if (! function_exists('dd')) { - if (class_exists(Kint::class)) { - /** - * Prints a Kint debug report and exits. - * - * @param array $vars - * - * @return never - * - * @codeCoverageIgnore Can't be tested ... exits - */ - function dd(...$vars) - { - // @codeCoverageIgnoreStart - Kint::$aliases[] = 'dd'; - Kint::dump(...$vars); - - exit; - // @codeCoverageIgnoreEnd - } - } else { - // In case that Kint is not loaded. - /** - * dd function - * - * @param array $vars - * - * @return int - */ - function dd(...$vars) - { - return 0; - } - } -} - -if (! function_exists('d') && ! class_exists(Kint::class)) { - // In case that Kint is not loaded. - /** - * d function - * - * @param array $vars - * - * @return int - */ - function d(...$vars) - { - return 0; - } -} - -if (! function_exists('trace')) { - if (class_exists(Kint::class)) { - /** - * Provides a backtrace to the current execution point, from Kint. - */ - /** - * trace function - * - * @return void - */ - function trace() - { - Kint::$aliases[] = 'trace'; - Kint::trace(); - } - } else { - // In case that Kint is not loaded. - /** - * trace function - * - * @return int - */ - function trace() - { - return 0; - } - } -} diff --git a/system4.4.6/Helpers/number_helper.php b/system4.4.6/Helpers/number_helper.php deleted file mode 100644 index 8ca5d3e2..00000000 --- a/system4.4.6/Helpers/number_helper.php +++ /dev/null @@ -1,217 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// CodeIgniter Number Helpers - -if (! function_exists('number_to_size')) { - /** - * Formats a numbers as bytes, based on size, and adds the appropriate suffix - * - * @param int|string $num Will be cast as int - * @param non-empty-string|null $locale [optional] - * - * @return bool|string - */ - function number_to_size($num, int $precision = 1, ?string $locale = null) - { - // Strip any formatting & ensure numeric input - try { - // @phpstan-ignore-next-line - $num = 0 + str_replace(',', '', $num); - } catch (ErrorException $ee) { - // Catch "Warning: A non-numeric value encountered" - return false; - } - - // ignore sub part - $generalLocale = $locale; - if ($locale !== null && $locale !== '' && ($underscorePos = strpos($locale, '_'))) { - $generalLocale = substr($locale, 0, $underscorePos); - } - - if ($num >= 1_000_000_000_000) { - $num = round($num / 1_099_511_627_776, $precision); - $unit = lang('Number.terabyteAbbr', [], $generalLocale); - } elseif ($num >= 1_000_000_000) { - $num = round($num / 1_073_741_824, $precision); - $unit = lang('Number.gigabyteAbbr', [], $generalLocale); - } elseif ($num >= 1_000_000) { - $num = round($num / 1_048_576, $precision); - $unit = lang('Number.megabyteAbbr', [], $generalLocale); - } elseif ($num >= 1000) { - $num = round($num / 1024, $precision); - $unit = lang('Number.kilobyteAbbr', [], $generalLocale); - } else { - $unit = lang('Number.bytes', [], $generalLocale); - } - - return format_number($num, $precision, $locale, ['after' => ' ' . $unit]); - } -} - -if (! function_exists('number_to_amount')) { - /** - * Converts numbers to a more readable representation - * when dealing with very large numbers (in the thousands or above), - * up to the quadrillions, because you won't often deal with numbers - * larger than that. - * - * It uses the "short form" numbering system as this is most commonly - * used within most English-speaking countries today. - * - * @see https://simple.wikipedia.org/wiki/Names_for_large_numbers - * - * @param int|string $num Will be cast as int - * @param int $precision [optional] The optional number of decimal digits to round to. - * @param non-empty-string|null $locale [optional] - * - * @return bool|string - */ - function number_to_amount($num, int $precision = 0, ?string $locale = null) - { - // Strip any formatting & ensure numeric input - try { - // @phpstan-ignore-next-line - $num = 0 + str_replace(',', '', $num); - } catch (ErrorException $ee) { - return false; - } - - $suffix = ''; - - // ignore sub part - $generalLocale = $locale; - if ($locale !== null && $locale !== '' && ($underscorePos = strpos($locale, '_'))) { - $generalLocale = substr($locale, 0, $underscorePos); - } - - if ($num >= 1_000_000_000_000_000) { - $suffix = lang('Number.quadrillion', [], $generalLocale); - $num = round(($num / 1_000_000_000_000_000), $precision); - } elseif ($num >= 1_000_000_000_000) { - $suffix = lang('Number.trillion', [], $generalLocale); - $num = round(($num / 1_000_000_000_000), $precision); - } elseif ($num >= 1_000_000_000) { - $suffix = lang('Number.billion', [], $generalLocale); - $num = round(($num / 1_000_000_000), $precision); - } elseif ($num >= 1_000_000) { - $suffix = lang('Number.million', [], $generalLocale); - $num = round(($num / 1_000_000), $precision); - } elseif ($num >= 1000) { - $suffix = lang('Number.thousand', [], $generalLocale); - $num = round(($num / 1000), $precision); - } - - return format_number($num, $precision, $locale, ['after' => $suffix]); - } -} - -if (! function_exists('number_to_currency')) { - function number_to_currency(float $num, string $currency, ?string $locale = null, int $fraction = 0): string - { - return format_number($num, 1, $locale, [ - 'type' => NumberFormatter::CURRENCY, - 'currency' => $currency, - 'fraction' => $fraction, - ]); - } -} - -if (! function_exists('format_number')) { - /** - * A general purpose, locale-aware, number_format method. - * Used by all of the functions of the number_helper. - */ - function format_number(float $num, int $precision = 1, ?string $locale = null, array $options = []): string - { - // If locale is not passed, get from the default locale that is set from our config file - // or set by HTTP content negotiation. - $locale ??= Locale::getDefault(); - - // Type can be any of the NumberFormatter options, but provide a default. - $type = (int) ($options['type'] ?? NumberFormatter::DECIMAL); - - $formatter = new NumberFormatter($locale, $type); - - // Try to format it per the locale - if ($type === NumberFormatter::CURRENCY) { - $formatter->setAttribute(NumberFormatter::FRACTION_DIGITS, $options['fraction']); - $output = $formatter->formatCurrency($num, $options['currency']); - } else { - // In order to specify a precision, we'll have to modify - // the pattern used by NumberFormatter. - $pattern = '#,##0.' . str_repeat('#', $precision); - - $formatter->setPattern($pattern); - $output = $formatter->format($num); - } - - // This might lead a trailing period if $precision == 0 - $output = trim($output, '. '); - - if (intl_is_failure($formatter->getErrorCode())) { - throw new BadFunctionCallException($formatter->getErrorMessage()); - } - - // Add on any before/after text. - if (isset($options['before']) && is_string($options['before'])) { - $output = $options['before'] . $output; - } - - if (isset($options['after']) && is_string($options['after'])) { - $output .= $options['after']; - } - - return $output; - } -} - -if (! function_exists('number_to_roman')) { - /** - * Convert a number to a roman numeral. - * - * @param int|string $num it will convert to int - */ - function number_to_roman($num): ?string - { - static $map = [ - 'M' => 1000, - 'CM' => 900, - 'D' => 500, - 'CD' => 400, - 'C' => 100, - 'XC' => 90, - 'L' => 50, - 'XL' => 40, - 'X' => 10, - 'IX' => 9, - 'V' => 5, - 'IV' => 4, - 'I' => 1, - ]; - - $num = (int) $num; - - if ($num < 1 || $num > 3999) { - return null; - } - - $result = ''; - - foreach ($map as $roman => $arabic) { - $repeat = (int) floor($num / $arabic); - $result .= str_repeat($roman, $repeat); - $num %= $arabic; - } - - return $result; - } -} diff --git a/system4.4.6/Helpers/security_helper.php b/system4.4.6/Helpers/security_helper.php deleted file mode 100644 index eba12de5..00000000 --- a/system4.4.6/Helpers/security_helper.php +++ /dev/null @@ -1,51 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -use Config\Services; - -// CodeIgniter Security Helpers - -if (! function_exists('sanitize_filename')) { - /** - * Sanitize a filename to use in a URI. - */ - function sanitize_filename(string $filename): string - { - return Services::security()->sanitizeFilename($filename); - } -} - -if (! function_exists('strip_image_tags')) { - /** - * Strip Image Tags - */ - function strip_image_tags(string $str): string - { - return preg_replace( - [ - '#<img[\s/]+.*?src\s*=\s*(["\'])([^\\1]+?)\\1.*?\>#i', - '#<img[\s/]+.*?src\s*=\s*?(([^\s"\'=<>`]+)).*?\>#i', - ], - '\\2', - $str - ); - } -} - -if (! function_exists('encode_php_tags')) { - /** - * Convert PHP tags to entities - */ - function encode_php_tags(string $str): string - { - return str_replace(['<?', '?>'], ['<?', '?>'], $str); - } -} diff --git a/system4.4.6/Helpers/test_helper.php b/system4.4.6/Helpers/test_helper.php deleted file mode 100644 index a542bb1c..00000000 --- a/system4.4.6/Helpers/test_helper.php +++ /dev/null @@ -1,70 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -use CodeIgniter\Exceptions\TestException; -use CodeIgniter\Model; -use CodeIgniter\Test\Fabricator; -use Config\Services; - -// CodeIgniter Test Helpers - -if (! function_exists('fake')) { - /** - * Creates a single item using Fabricator. - * - * @param Model|object|string $model Instance or name of the model - * @param array|null $overrides Overriding data to pass to Fabricator::setOverrides() - * @param bool $persist - * - * @return array|object - */ - function fake($model, ?array $overrides = null, $persist = true) - { - $fabricator = new Fabricator($model); - - if ($overrides !== null) { - $fabricator->setOverrides($overrides); - } - - if ($persist) { - return $fabricator->create(); - } - - return $fabricator->make(); - } -} - -if (! function_exists('mock')) { - /** - * Used within our test suite to mock certain system tools. - * - * @param string $className Fully qualified class name - * - * @return object - */ - function mock(string $className) - { - $mockClass = $className::$mockClass; - $mockService = $className::$mockServiceName ?? ''; - - if (empty($mockClass) || ! class_exists($mockClass)) { - throw TestException::forInvalidMockClass($mockClass); - } - - $mock = new $mockClass(); - - if (! empty($mockService)) { - Services::injectMock($mockService, $mock); - } - - return $mock; - } -} diff --git a/system4.4.6/Helpers/text_helper.php b/system4.4.6/Helpers/text_helper.php deleted file mode 100644 index 7db126fa..00000000 --- a/system4.4.6/Helpers/text_helper.php +++ /dev/null @@ -1,745 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -use Config\ForeignCharacters; - -// CodeIgniter Text Helpers - -if (! function_exists('word_limiter')) { - /** - * Word Limiter - * - * Limits a string to X number of words. - * - * @param string $endChar the end character. Usually an ellipsis - */ - function word_limiter(string $str, int $limit = 100, string $endChar = '…'): string - { - if (trim($str) === '') { - return $str; - } - - preg_match('/^\s*+(?:\S++\s*+){1,' . $limit . '}/', $str, $matches); - - if (strlen($str) === strlen($matches[0])) { - $endChar = ''; - } - - return rtrim($matches[0]) . $endChar; - } -} - -if (! function_exists('character_limiter')) { - /** - * Character Limiter - * - * Limits the string based on the character count. Preserves complete words - * so the character count may not be exactly as specified. - * - * @param string $endChar the end character. Usually an ellipsis - */ - function character_limiter(string $str, int $n = 500, string $endChar = '…'): string - { - if (mb_strlen($str) < $n) { - return $str; - } - - // a bit complicated, but faster than preg_replace with \s+ - $str = preg_replace('/ {2,}/', ' ', str_replace(["\r", "\n", "\t", "\x0B", "\x0C"], ' ', $str)); - - if (mb_strlen($str) <= $n) { - return $str; - } - - $out = ''; - - foreach (explode(' ', trim($str)) as $val) { - $out .= $val . ' '; - if (mb_strlen($out) >= $n) { - $out = trim($out); - break; - } - } - - return (mb_strlen($out) === mb_strlen($str)) ? $out : $out . $endChar; - } -} - -if (! function_exists('ascii_to_entities')) { - /** - * High ASCII to Entities - * - * Converts high ASCII text and MS Word special characters to character entities - */ - function ascii_to_entities(string $str): string - { - $out = ''; - - for ($i = 0, $s = strlen($str) - 1, $count = 1, $temp = []; $i <= $s; $i++) { - $ordinal = ord($str[$i]); - - if ($ordinal < 128) { - /* - If the $temp array has a value but we have moved on, then it seems only - fair that we output that entity and restart $temp before continuing. - */ - if (count($temp) === 1) { - $out .= '&#' . array_shift($temp) . ';'; - $count = 1; - } - - $out .= $str[$i]; - } else { - if ($temp === []) { - $count = ($ordinal < 224) ? 2 : 3; - } - - $temp[] = $ordinal; - - if (count($temp) === $count) { - $number = ($count === 3) ? (($temp[0] % 16) * 4096) + (($temp[1] % 64) * 64) + ($temp[2] % 64) : (($temp[0] % 32) * 64) + ($temp[1] % 64); - $out .= '&#' . $number . ';'; - $count = 1; - $temp = []; - } - // If this is the last iteration, just output whatever we have - elseif ($i === $s) { - $out .= '&#' . implode(';', $temp) . ';'; - } - } - } - - return $out; - } -} - -if (! function_exists('entities_to_ascii')) { - /** - * Entities to ASCII - * - * Converts character entities back to ASCII - */ - function entities_to_ascii(string $str, bool $all = true): string - { - if (preg_match_all('/\&#(\d+)\;/', $str, $matches)) { - for ($i = 0, $s = count($matches[0]); $i < $s; $i++) { - $digits = $matches[1][$i]; - $out = ''; - if ($digits < 128) { - $out .= chr($digits); - } elseif ($digits < 2048) { - $out .= chr(192 + (($digits - ($digits % 64)) / 64)) . chr(128 + ($digits % 64)); - } else { - $out .= chr(224 + (($digits - ($digits % 4096)) / 4096)) - . chr(128 + ((($digits % 4096) - ($digits % 64)) / 64)) - . chr(128 + ($digits % 64)); - } - $str = str_replace($matches[0][$i], $out, $str); - } - } - - if ($all) { - return str_replace( - ['&', '<', '>', '"', ''', '-'], - ['&', '<', '>', '"', "'", '-'], - $str - ); - } - - return $str; - } -} - -if (! function_exists('word_censor')) { - /** - * Word Censoring Function - * - * Supply a string and an array of disallowed words and any - * matched words will be converted to #### or to the replacement - * word you've submitted. - * - * @param string $str the text string - * @param array $censored the array of censored words - * @param string $replacement the optional replacement value - */ - function word_censor(string $str, array $censored, string $replacement = ''): string - { - if ($censored === []) { - return $str; - } - - $str = ' ' . $str . ' '; - - // \w, \b and a few others do not match on a unicode character - // set for performance reasons. As a result words like über - // will not match on a word boundary. Instead, we'll assume that - // a bad word will be bookended by any of these characters. - $delim = '[-_\'\"`(){}<>\[\]|!?@#%&,.:;^~*+=\/ 0-9\n\r\t]'; - - foreach ($censored as $badword) { - $badword = str_replace('\*', '\w*?', preg_quote($badword, '/')); - - if ($replacement !== '') { - $str = preg_replace( - "/({$delim})(" . $badword . ")({$delim})/i", - "\\1{$replacement}\\3", - $str - ); - } elseif (preg_match_all("/{$delim}(" . $badword . "){$delim}/i", $str, $matches, PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE)) { - $matches = $matches[1]; - - for ($i = count($matches) - 1; $i >= 0; $i--) { - $length = strlen($matches[$i][0]); - - $str = substr_replace( - $str, - str_repeat('#', $length), - $matches[$i][1], - $length - ); - } - } - } - - return trim($str); - } -} - -if (! function_exists('highlight_code')) { - /** - * Code Highlighter - * - * Colorizes code strings - * - * @param string $str the text string - */ - function highlight_code(string $str): string - { - /* The highlight string function encodes and highlights - * brackets so we need them to start raw. - * - * Also replace any existing PHP tags to temporary markers - * so they don't accidentally break the string out of PHP, - * and thus, thwart the highlighting. - */ - $str = str_replace( - ['<', '>', '<?', '?>', '<%', '%>', '\\', '</script>'], - ['<', '>', 'phptagopen', 'phptagclose', 'asptagopen', 'asptagclose', 'backslashtmp', 'scriptclose'], - $str - ); - - // The highlight_string function requires that the text be surrounded - // by PHP tags, which we will remove later - $str = highlight_string('<?php ' . $str . ' ?>', true); - - // Remove our artificially added PHP, and the syntax highlighting that came with it - $str = preg_replace( - [ - '/<span style="color: #([A-Z0-9]+)"><\?php( | )/i', - '/(<span style="color: #[A-Z0-9]+">.*?)\?><\/span>\n<\/span>\n<\/code>/is', - '/<span style="color: #[A-Z0-9]+"\><\/span>/i', - ], - [ - '<span style="color: #$1">', - "$1</span>\n</span>\n</code>", - '', - ], - $str - ); - - // Replace our markers back to PHP tags. - return str_replace( - [ - 'phptagopen', - 'phptagclose', - 'asptagopen', - 'asptagclose', - 'backslashtmp', - 'scriptclose', - ], - [ - '<?', - '?>', - '<%', - '%>', - '\\', - '</script>', - ], - $str - ); - } -} - -if (! function_exists('highlight_phrase')) { - /** - * Phrase Highlighter - * - * Highlights a phrase within a text string - * - * @param string $str the text string - * @param string $phrase the phrase you'd like to highlight - * @param string $tagOpen the opening tag to precede the phrase with - * @param string $tagClose the closing tag to end the phrase with - */ - function highlight_phrase(string $str, string $phrase, string $tagOpen = '<mark>', string $tagClose = '</mark>'): string - { - return ($str !== '' && $phrase !== '') ? preg_replace('/(' . preg_quote($phrase, '/') . ')/i', $tagOpen . '\\1' . $tagClose, $str) : $str; - } -} - -if (! function_exists('convert_accented_characters')) { - /** - * Convert Accented Foreign Characters to ASCII - * - * @param string $str Input string - */ - function convert_accented_characters(string $str): string - { - static $arrayFrom, $arrayTo; - - if (! is_array($arrayFrom)) { - $config = new ForeignCharacters(); - - if (empty($config->characterList) || ! is_array($config->characterList)) { - $arrayFrom = []; - $arrayTo = []; - - return $str; - } - $arrayFrom = array_keys($config->characterList); - $arrayTo = array_values($config->characterList); - - unset($config); - } - - return preg_replace($arrayFrom, $arrayTo, $str); - } -} - -if (! function_exists('word_wrap')) { - /** - * Word Wrap - * - * Wraps text at the specified character. Maintains the integrity of words. - * Anything placed between {unwrap}{/unwrap} will not be word wrapped, nor - * will URLs. - * - * @param string $str the text string - * @param int $charlim = 76 the number of characters to wrap at - */ - function word_wrap(string $str, int $charlim = 76): string - { - // Reduce multiple spaces - $str = preg_replace('| +|', ' ', $str); - - // Standardize newlines - if (strpos($str, "\r") !== false) { - $str = str_replace(["\r\n", "\r"], "\n", $str); - } - - // If the current word is surrounded by {unwrap} tags we'll - // strip the entire chunk and replace it with a marker. - $unwrap = []; - - if (preg_match_all('|\{unwrap\}(.+?)\{/unwrap\}|s', $str, $matches)) { - for ($i = 0, $c = count($matches[0]); $i < $c; $i++) { - $unwrap[] = $matches[1][$i]; - $str = str_replace($matches[0][$i], '{{unwrapped' . $i . '}}', $str); - } - } - - // Use PHP's native function to do the initial wordwrap. - // We set the cut flag to FALSE so that any individual words that are - // too long get left alone. In the next step we'll deal with them. - $str = wordwrap($str, $charlim, "\n", false); - - // Split the string into individual lines of text and cycle through them - $output = ''; - - foreach (explode("\n", $str) as $line) { - // Is the line within the allowed character count? - // If so we'll join it to the output and continue - if (mb_strlen($line) <= $charlim) { - $output .= $line . "\n"; - - continue; - } - - $temp = ''; - - while (mb_strlen($line) > $charlim) { - // If the over-length word is a URL we won't wrap it - if (preg_match('!\[url.+\]|://|www\.!', $line)) { - break; - } - // Trim the word down - $temp .= mb_substr($line, 0, $charlim - 1); - $line = mb_substr($line, $charlim - 1); - } - - // If $temp contains data it means we had to split up an over-length - // word into smaller chunks so we'll add it back to our current line - if ($temp !== '') { - $output .= $temp . "\n" . $line . "\n"; - } else { - $output .= $line . "\n"; - } - } - - // Put our markers back - foreach ($unwrap as $key => $val) { - $output = str_replace('{{unwrapped' . $key . '}}', $val, $output); - } - - // remove any trailing newline - return rtrim($output); - } -} - -if (! function_exists('ellipsize')) { - /** - * Ellipsize String - * - * This function will strip tags from a string, split it at its max_length and ellipsize - * - * @param string $str String to ellipsize - * @param int $maxLength Max length of string - * @param float|int $position int (1|0) or float, .5, .2, etc for position to split - * @param string $ellipsis ellipsis ; Default '...' - * - * @return string Ellipsized string - */ - function ellipsize(string $str, int $maxLength, $position = 1, string $ellipsis = '…'): string - { - // Strip tags - $str = trim(strip_tags($str)); - - // Is the string long enough to ellipsize? - if (mb_strlen($str) <= $maxLength) { - return $str; - } - - $beg = mb_substr($str, 0, (int) floor($maxLength * $position)); - $position = ($position > 1) ? 1 : $position; - - if ($position === 1) { - $end = mb_substr($str, 0, -($maxLength - mb_strlen($beg))); - } else { - $end = mb_substr($str, -($maxLength - mb_strlen($beg))); - } - - return $beg . $ellipsis . $end; - } -} - -if (! function_exists('strip_slashes')) { - /** - * Strip Slashes - * - * Removes slashes contained in a string or in an array - * - * @param array|string $str string or array - * - * @return array|string string or array - */ - function strip_slashes($str) - { - if (! is_array($str)) { - return stripslashes($str); - } - - foreach ($str as $key => $val) { - $str[$key] = strip_slashes($val); - } - - return $str; - } -} - -if (! function_exists('strip_quotes')) { - /** - * Strip Quotes - * - * Removes single and double quotes from a string - */ - function strip_quotes(string $str): string - { - return str_replace(['"', "'"], '', $str); - } -} - -if (! function_exists('quotes_to_entities')) { - /** - * Quotes to Entities - * - * Converts single and double quotes to entities - */ - function quotes_to_entities(string $str): string - { - return str_replace(["\\'", '"', "'", '"'], [''', '"', ''', '"'], $str); - } -} - -if (! function_exists('reduce_double_slashes')) { - /** - * Reduce Double Slashes - * - * Converts double slashes in a string to a single slash, - * except those found in http:// - * - * http://www.some-site.com//index.php - * - * becomes: - * - * http://www.some-site.com/index.php - */ - function reduce_double_slashes(string $str): string - { - return preg_replace('#(^|[^:])//+#', '\\1/', $str); - } -} - -if (! function_exists('reduce_multiples')) { - /** - * Reduce Multiples - * - * Reduces multiple instances of a particular character. Example: - * - * Fred, Bill,, Joe, Jimmy - * - * becomes: - * - * Fred, Bill, Joe, Jimmy - * - * @param string $character the character you wish to reduce - * @param bool $trim TRUE/FALSE - whether to trim the character from the beginning/end - */ - function reduce_multiples(string $str, string $character = ',', bool $trim = false): string - { - $str = preg_replace('#' . preg_quote($character, '#') . '{2,}#', $character, $str); - - return ($trim) ? trim($str, $character) : $str; - } -} - -if (! function_exists('random_string')) { - /** - * Create a Random String - * - * Useful for generating passwords or hashes. - * - * @param string $type Type of random string. basic, alpha, alnum, numeric, nozero, md5, sha1, and crypto - * @param int $len Number of characters - * - * @deprecated The type 'basic', 'md5', and 'sha1' are deprecated. They are not cryptographically secure. - */ - function random_string(string $type = 'alnum', int $len = 8): string - { - switch ($type) { - case 'alnum': - case 'nozero': - case 'alpha': - switch ($type) { - case 'alpha': - $pool = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; - break; - - case 'alnum': - $pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; - break; - - case 'nozero': - $pool = '123456789'; - break; - } - - return _from_random($len, $pool); - - case 'numeric': - $max = 10 ** $len - 1; - $rand = random_int(0, $max); - - return sprintf('%0' . $len . 'd', $rand); - - case 'md5': - return md5(uniqid((string) mt_rand(), true)); - - case 'sha1': - return sha1(uniqid((string) mt_rand(), true)); - - case 'crypto': - if ($len % 2 !== 0) { - throw new InvalidArgumentException( - 'You must set an even number to the second parameter when you use `crypto`.' - ); - } - - return bin2hex(random_bytes($len / 2)); - } - - // 'basic' type treated as default - return (string) mt_rand(); - } -} - -if (! function_exists('_from_random')) { - /** - * The following function was derived from code of Symfony (v6.2.7 - 2023-02-28) - * https://github.com/symfony/symfony/blob/80cac46a31d4561804c17d101591a4f59e6db3a2/src/Symfony/Component/String/ByteString.php#L45 - * Code subject to the MIT license (https://github.com/symfony/symfony/blob/v6.2.7/LICENSE). - * Copyright (c) 2004-present Fabien Potencier - * - * The following method was derived from code of the Hack Standard Library (v4.40 - 2020-05-03) - * https://github.com/hhvm/hsl/blob/80a42c02f036f72a42f0415e80d6b847f4bf62d5/src/random/private.php#L16 - * Code subject to the MIT license (https://github.com/hhvm/hsl/blob/master/LICENSE). - * Copyright (c) 2004-2020, Facebook, Inc. (https://www.facebook.com/) - * - * @internal Outside the framework this should not be used directly. - */ - function _from_random(int $length, string $pool): string - { - if ($length <= 0) { - throw new InvalidArgumentException( - sprintf('A strictly positive length is expected, "%d" given.', $length) - ); - } - - $poolSize = \strlen($pool); - $bits = (int) ceil(log($poolSize, 2.0)); - if ($bits <= 0 || $bits > 56) { - throw new InvalidArgumentException( - 'The length of the alphabet must in the [2^1, 2^56] range.' - ); - } - - $string = ''; - - while ($length > 0) { - $urandomLength = (int) ceil(2 * $length * $bits / 8.0); - $data = random_bytes($urandomLength); - $unpackedData = 0; - $unpackedBits = 0; - - for ($i = 0; $i < $urandomLength && $length > 0; $i++) { - // Unpack 8 bits - $unpackedData = ($unpackedData << 8) | \ord($data[$i]); - $unpackedBits += 8; - - // While we have enough bits to select a character from the alphabet, keep - // consuming the random data - for (; $unpackedBits >= $bits && $length > 0; $unpackedBits -= $bits) { - $index = ($unpackedData & ((1 << $bits) - 1)); - $unpackedData >>= $bits; - // Unfortunately, the alphabet size is not necessarily a power of two. - // Worst case, it is 2^k + 1, which means we need (k+1) bits and we - // have around a 50% chance of missing as k gets larger - if ($index < $poolSize) { - $string .= $pool[$index]; - $length--; - } - } - } - } - - return $string; - } -} - -if (! function_exists('increment_string')) { - /** - * Add's _1 to a string or increment the ending number to allow _2, _3, etc - * - * @param string $str Required - * @param string $separator What should the duplicate number be appended with - * @param int $first Which number should be used for the first dupe increment - */ - function increment_string(string $str, string $separator = '_', int $first = 1): string - { - preg_match('/(.+)' . preg_quote($separator, '/') . '([0-9]+)$/', $str, $match); - - return isset($match[2]) ? $match[1] . $separator . ((int) $match[2] + 1) : $str . $separator . $first; - } -} - -if (! function_exists('alternator')) { - /** - * Alternator - * - * Allows strings to be alternated. See docs... - * - * @param string ...$args (as many parameters as needed) - */ - function alternator(...$args): string - { - static $i; - - if (func_num_args() === 0) { - $i = 0; - - return ''; - } - - return $args[($i++ % count($args))]; - } -} - -if (! function_exists('excerpt')) { - /** - * Excerpt. - * - * Allows to extract a piece of text surrounding a word or phrase. - * - * @param string $text String to search the phrase - * @param string $phrase Phrase that will be searched for. - * @param int $radius The amount of characters returned around the phrase. - * @param string $ellipsis Ending that will be appended - * - * If no $phrase is passed, will generate an excerpt of $radius characters - * from the beginning of $text. - */ - function excerpt(string $text, ?string $phrase = null, int $radius = 100, string $ellipsis = '...'): string - { - if (isset($phrase)) { - $phrasePos = stripos($text, $phrase); - $phraseLen = strlen($phrase); - } else { - $phrasePos = $radius / 2; - $phraseLen = 1; - } - - $pre = explode(' ', substr($text, 0, $phrasePos)); - $pos = explode(' ', substr($text, $phrasePos + $phraseLen)); - - $prev = ' '; - $post = ' '; - $count = 0; - - foreach (array_reverse($pre) as $e) { - if ((strlen($e) + $count + 1) < $radius) { - $prev = ' ' . $e . $prev; - } - $count = ++$count + strlen($e); - } - - $count = 0; - - foreach ($pos as $s) { - if ((strlen($s) + $count + 1) < $radius) { - $post .= $s . ' '; - } - $count = ++$count + strlen($s); - } - - $ellPre = $phrase ? $ellipsis : ''; - - return str_replace(' ', ' ', $ellPre . $prev . $phrase . $post . $ellipsis); - } -} diff --git a/system4.4.6/Helpers/url_helper.php b/system4.4.6/Helpers/url_helper.php deleted file mode 100644 index f992eac3..00000000 --- a/system4.4.6/Helpers/url_helper.php +++ /dev/null @@ -1,517 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -use CodeIgniter\HTTP\CLIRequest; -use CodeIgniter\HTTP\IncomingRequest; -use CodeIgniter\HTTP\SiteURI; -use CodeIgniter\HTTP\URI; -use CodeIgniter\Router\Exceptions\RouterException; -use Config\App; -use Config\Services; - -// CodeIgniter URL Helpers - -if (! function_exists('site_url')) { - /** - * Returns a site URL as defined by the App config. - * - * @param array|string $relativePath URI string or array of URI segments. - * @param string|null $scheme URI scheme. E.g., http, ftp. If empty - * string '' is set, a protocol-relative - * link is returned. - * @param App|null $config Alternate configuration to use. - */ - function site_url($relativePath = '', ?string $scheme = null, ?App $config = null): string - { - $currentURI = Services::request()->getUri(); - - assert($currentURI instanceof SiteURI); - - return $currentURI->siteUrl($relativePath, $scheme, $config); - } -} - -if (! function_exists('base_url')) { - /** - * Returns the base URL as defined by the App config. - * Base URLs are trimmed site URLs without the index page. - * - * @param array|string $relativePath URI string or array of URI segments. - * @param string|null $scheme URI scheme. E.g., http, ftp. If empty - * string '' is set, a protocol-relative - * link is returned. - */ - function base_url($relativePath = '', ?string $scheme = null): string - { - $currentURI = Services::request()->getUri(); - - assert($currentURI instanceof SiteURI); - - return $currentURI->baseUrl($relativePath, $scheme); - } -} - -if (! function_exists('current_url')) { - /** - * Returns the current full URL based on the Config\App settings and IncomingRequest. - * - * @param bool $returnObject True to return an object instead of a string - * @param IncomingRequest|null $request A request to use when retrieving the path - * - * @return string|URI When returning string, the query and fragment parts are removed. - * When returning URI, the query and fragment parts are preserved. - */ - function current_url(bool $returnObject = false, ?IncomingRequest $request = null) - { - $request ??= Services::request(); - /** @var CLIRequest|IncomingRequest $request */ - $uri = $request->getUri(); - - return $returnObject ? $uri : URI::createURIString($uri->getScheme(), $uri->getAuthority(), $uri->getPath()); - } -} - -if (! function_exists('previous_url')) { - /** - * Returns the previous URL the current visitor was on. For security reasons - * we first check in a saved session variable, if it exists, and use that. - * If that's not available, however, we'll use a sanitized url from $_SERVER['HTTP_REFERER'] - * which can be set by the user so is untrusted and not set by certain browsers/servers. - * - * @return string|URI - */ - function previous_url(bool $returnObject = false) - { - // Grab from the session first, if we have it, - // since it's more reliable and safer. - if (isset($_SESSION)) { - $referer = session('_ci_previous_url'); - } - - // Otherwise, grab a sanitized version from $_SERVER. - $referer ??= request()->getServer('HTTP_REFERER', FILTER_SANITIZE_URL) ?? site_url('/'); - - return $returnObject ? new URI($referer) : $referer; - } -} - -if (! function_exists('uri_string')) { - /** - * URL String - * - * Returns the path part (relative to baseURL) of the current URL - */ - function uri_string(): string - { - // The value of Services::request()->getUri()->getPath() returns - // full URI path. - $uri = Services::request()->getUri(); - - $path = $uri instanceof SiteURI ? $uri->getRoutePath() : $uri->getPath(); - - return ltrim($path, '/'); - } -} - -if (! function_exists('index_page')) { - /** - * Index page - * - * Returns the "index_page" from your config file - * - * @param App|null $altConfig Alternate configuration to use - */ - function index_page(?App $altConfig = null): string - { - // use alternate config if provided, else default one - $config = $altConfig ?? config(App::class); - - return $config->indexPage; - } -} - -if (! function_exists('anchor')) { - /** - * Anchor Link - * - * Creates an anchor based on the local URL. - * - * @param array|string $uri URI string or array of URI segments - * @param string $title The link title - * @param array|object|string $attributes Any attributes - * @param App|null $altConfig Alternate configuration to use - */ - function anchor($uri = '', string $title = '', $attributes = '', ?App $altConfig = null): string - { - // use alternate config if provided, else default one - $config = $altConfig ?? config(App::class); - - $siteUrl = is_array($uri) ? site_url($uri, null, $config) : (preg_match('#^(\w+:)?//#i', $uri) ? $uri : site_url($uri, null, $config)); - // eliminate trailing slash - $siteUrl = rtrim($siteUrl, '/'); - - if ($title === '') { - $title = $siteUrl; - } - - if ($attributes !== '') { - $attributes = stringify_attributes($attributes); - } - - return '<a href="' . $siteUrl . '"' . $attributes . '>' . $title . '</a>'; - } -} - -if (! function_exists('anchor_popup')) { - /** - * Anchor Link - Pop-up version - * - * Creates an anchor based on the local URL. The link - * opens a new window based on the attributes specified. - * - * @param string $uri the URL - * @param string $title the link title - * @param array|false|object|string $attributes any attributes - * @param App|null $altConfig Alternate configuration to use - */ - function anchor_popup($uri = '', string $title = '', $attributes = false, ?App $altConfig = null): string - { - // use alternate config if provided, else default one - $config = $altConfig ?? config(App::class); - - $siteUrl = preg_match('#^(\w+:)?//#i', $uri) ? $uri : site_url($uri, null, $config); - $siteUrl = rtrim($siteUrl, '/'); - - if ($title === '') { - $title = $siteUrl; - } - - if ($attributes === false) { - return '<a href="' . $siteUrl . '" onclick="window.open(\'' . $siteUrl . "', '_blank'); return false;\">" . $title . '</a>'; - } - - if (! is_array($attributes)) { - $attributes = [$attributes]; - - // Ref: http://www.w3schools.com/jsref/met_win_open.asp - $windowName = '_blank'; - } elseif (! empty($attributes['window_name'])) { - $windowName = $attributes['window_name']; - unset($attributes['window_name']); - } else { - $windowName = '_blank'; - } - - foreach (['width' => '800', 'height' => '600', 'scrollbars' => 'yes', 'menubar' => 'no', 'status' => 'yes', 'resizable' => 'yes', 'screenx' => '0', 'screeny' => '0'] as $key => $val) { - $atts[$key] = $attributes[$key] ?? $val; - unset($attributes[$key]); - } - - $attributes = stringify_attributes($attributes); - - return '<a href="' . $siteUrl - . '" onclick="window.open(\'' . $siteUrl . "', '" . $windowName . "', '" . stringify_attributes($atts, true) . "'); return false;\"" - . $attributes . '>' . $title . '</a>'; - } -} - -if (! function_exists('mailto')) { - /** - * Mailto Link - * - * @param string $email the email address - * @param string $title the link title - * @param array|object|string $attributes any attributes - */ - function mailto(string $email, string $title = '', $attributes = ''): string - { - if (trim($title) === '') { - $title = $email; - } - - return '<a href="mailto:' . $email . '"' . stringify_attributes($attributes) . '>' . $title . '</a>'; - } -} - -if (! function_exists('safe_mailto')) { - /** - * Encoded Mailto Link - * - * Create a spam-protected mailto link written in Javascript - * - * @param string $email the email address - * @param string $title the link title - * @param array|object|string $attributes any attributes - */ - function safe_mailto(string $email, string $title = '', $attributes = ''): string - { - $count = 0; - if (trim($title) === '') { - $title = $email; - } - - $x = str_split('<a href="mailto:', 1); - - for ($i = 0, $l = strlen($email); $i < $l; $i++) { - $x[] = '|' . ord($email[$i]); - } - - $x[] = '"'; - - if ($attributes !== '') { - if (is_array($attributes)) { - foreach ($attributes as $key => $val) { - $x[] = ' ' . $key . '="'; - - for ($i = 0, $l = strlen($val); $i < $l; $i++) { - $x[] = '|' . ord($val[$i]); - } - - $x[] = '"'; - } - } else { - for ($i = 0, $l = mb_strlen($attributes); $i < $l; $i++) { - $x[] = mb_substr($attributes, $i, 1); - } - } - } - - $x[] = '>'; - - $temp = []; - - for ($i = 0, $l = strlen($title); $i < $l; $i++) { - $ordinal = ord($title[$i]); - - if ($ordinal < 128) { - $x[] = '|' . $ordinal; - } else { - if ($temp === []) { - $count = ($ordinal < 224) ? 2 : 3; - } - - $temp[] = $ordinal; - - if (count($temp) === $count) { - $number = ($count === 3) ? (($temp[0] % 16) * 4096) + (($temp[1] % 64) * 64) + ($temp[2] % 64) : (($temp[0] % 32) * 64) + ($temp[1] % 64); - $x[] = '|' . $number; - $count = 1; - $temp = []; - } - } - } - - $x[] = '<'; - $x[] = '/'; - $x[] = 'a'; - $x[] = '>'; - - $x = array_reverse($x); - - // improve obfuscation by eliminating newlines & whitespace - $cspNonce = csp_script_nonce(); - $cspNonce = $cspNonce ? ' ' . $cspNonce : $cspNonce; - $output = '<script' . $cspNonce . '>' - . 'var l=new Array();'; - - foreach ($x as $i => $value) { - $output .= 'l[' . $i . "] = '" . $value . "';"; - } - - return $output . ('for (var i = l.length-1; i >= 0; i=i-1) {' - . "if (l[i].substring(0, 1) === '|') document.write(\"&#\"+unescape(l[i].substring(1))+\";\");" - . 'else document.write(unescape(l[i]));' - . '}' - . '</script>'); - } -} - -if (! function_exists('auto_link')) { - /** - * Auto-linker - * - * Automatically links URL and Email addresses. - * Note: There's a bit of extra code here to deal with - * URLs or emails that end in a period. We'll strip these - * off and add them after the link. - * - * @param string $str the string - * @param string $type the type: email, url, or both - * @param bool $popup whether to create pop-up links - */ - function auto_link(string $str, string $type = 'both', bool $popup = false): string - { - // Find and replace any URLs. - if ($type !== 'email' && preg_match_all('#(\w*://|www\.)[^\s()<>;]+\w#i', $str, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) { - // Set our target HTML if using popup links. - $target = ($popup) ? ' target="_blank"' : ''; - - // We process the links in reverse order (last -> first) so that - // the returned string offsets from preg_match_all() are not - // moved as we add more HTML. - foreach (array_reverse($matches) as $match) { - // $match[0] is the matched string/link - // $match[1] is either a protocol prefix or 'www.' - // - // With PREG_OFFSET_CAPTURE, both of the above is an array, - // where the actual value is held in [0] and its offset at the [1] index. - $a = '<a href="' . (strpos($match[1][0], '/') ? '' : 'http://') . $match[0][0] . '"' . $target . '>' . $match[0][0] . '</a>'; - $str = substr_replace($str, $a, $match[0][1], strlen($match[0][0])); - } - } - - // Find and replace any emails. - if ($type !== 'url' && preg_match_all('#([\w\.\-\+]+@[a-z0-9\-]+\.[a-z0-9\-\.]+[^[:punct:]\s])#i', $str, $matches, PREG_OFFSET_CAPTURE)) { - foreach (array_reverse($matches[0]) as $match) { - if (filter_var($match[0], FILTER_VALIDATE_EMAIL) !== false) { - $str = substr_replace($str, safe_mailto($match[0]), $match[1], strlen($match[0])); - } - } - } - - return $str; - } -} - -if (! function_exists('prep_url')) { - /** - * Prep URL - Simply adds the http:// or https:// part if no scheme is included. - * - * Formerly used URI, but that does not play nicely with URIs missing - * the scheme. - * - * @param string $str the URL - * @param bool $secure set true if you want to force https:// - */ - function prep_url(string $str = '', bool $secure = false): string - { - if (in_array($str, ['http://', 'https://', '//', ''], true)) { - return ''; - } - - if (parse_url($str, PHP_URL_SCHEME) === null) { - $str = 'http://' . ltrim($str, '/'); - } - - // force replace http:// with https:// - if ($secure) { - $str = preg_replace('/^(?:http):/i', 'https:', $str); - } - - return $str; - } -} - -if (! function_exists('url_title')) { - /** - * Create URL Title - * - * Takes a "title" string as input and creates a - * human-friendly URL string with a "separator" string - * as the word separator. - * - * @param string $str Input string - * @param string $separator Word separator (usually '-' or '_') - * @param bool $lowercase Whether to transform the output string to lowercase - */ - function url_title(string $str, string $separator = '-', bool $lowercase = false): string - { - $qSeparator = preg_quote($separator, '#'); - - $trans = [ - '&.+?;' => '', - '[^\w\d\pL\pM _-]' => '', - '\s+' => $separator, - '(' . $qSeparator . ')+' => $separator, - ]; - - $str = strip_tags($str); - - foreach ($trans as $key => $val) { - $str = preg_replace('#' . $key . '#iu', $val, $str); - } - - if ($lowercase === true) { - $str = mb_strtolower($str); - } - - return trim(trim($str, $separator)); - } -} - -if (! function_exists('mb_url_title')) { - /** - * Create URL Title that takes into account accented characters - * - * Takes a "title" string as input and creates a - * human-friendly URL string with a "separator" string - * as the word separator. - * - * @param string $str Input string - * @param string $separator Word separator (usually '-' or '_') - * @param bool $lowercase Whether to transform the output string to lowercase - */ - function mb_url_title(string $str, string $separator = '-', bool $lowercase = false): string - { - helper('text'); - - return url_title(convert_accented_characters($str), $separator, $lowercase); - } -} - -if (! function_exists('url_to')) { - /** - * Get the full, absolute URL to a route name or controller method - * (with additional arguments) - * - * NOTE: This requires the controller/method to - * have a route defined in the routes Config file. - * - * @param string $controller Route name or Controller::method - * @param int|string ...$args One or more parameters to be passed to the route. - * The last parameter allows you to set the locale. - * - * @throws RouterException - */ - function url_to(string $controller, ...$args): string - { - if (! $route = route_to($controller, ...$args)) { - $explode = explode('::', $controller); - - if (isset($explode[1])) { - throw RouterException::forControllerNotFound($explode[0], $explode[1]); - } - - throw RouterException::forInvalidRoute($controller); - } - - return site_url($route); - } -} - -if (! function_exists('url_is')) { - /** - * Determines if current url path contains - * the given path. It may contain a wildcard (*) - * which will allow any valid character. - * - * Example: - * if (url_is('admin*')) ... - */ - function url_is(string $path): bool - { - // Setup our regex to allow wildcards - $path = '/' . trim(str_replace('*', '(\S)*', $path), '/ '); - $currentPath = '/' . trim(uri_string(), '/ '); - - return (bool) preg_match("|^{$path}$|", $currentPath, $matches); - } -} diff --git a/system4.4.6/Helpers/xml_helper.php b/system4.4.6/Helpers/xml_helper.php deleted file mode 100644 index ece28201..00000000 --- a/system4.4.6/Helpers/xml_helper.php +++ /dev/null @@ -1,59 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// CodeIgniter XML Helpers - -if (! function_exists('xml_convert')) { - /** - * Convert Reserved XML characters to Entities - */ - function xml_convert(string $str, bool $protectAll = false): string - { - $temp = '__TEMP_AMPERSANDS__'; - - // Replace entities to temporary markers so that - // ampersands won't get messed up - $str = preg_replace('/&#(\d+);/', $temp . '\\1;', $str); - - if ($protectAll === true) { - $str = preg_replace('/&(\w+);/', $temp . '\\1;', $str); - } - - $original = [ - '&', - '<', - '>', - '"', - "'", - '-', - ]; - - $replacement = [ - '&', - '<', - '>', - '"', - ''', - '-', - ]; - - $str = str_replace($original, $replacement, $str); - - // Decode the temp markers back to entities - $str = preg_replace('/' . $temp . '(\d+);/', '&#\\1;', $str); - - if ($protectAll === true) { - return preg_replace('/' . $temp . '(\w+);/', '&\\1;', $str); - } - - return $str; - } -} diff --git a/system4.4.6/Honeypot/Exceptions/HoneypotException.php b/system4.4.6/Honeypot/Exceptions/HoneypotException.php deleted file mode 100644 index 31d13151..00000000 --- a/system4.4.6/Honeypot/Exceptions/HoneypotException.php +++ /dev/null @@ -1,58 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Honeypot\Exceptions; - -use CodeIgniter\Exceptions\ConfigException; -use CodeIgniter\Exceptions\ExceptionInterface; - -class HoneypotException extends ConfigException implements ExceptionInterface -{ - /** - * Thrown when the template value of config is empty. - * - * @return static - */ - public static function forNoTemplate() - { - return new static(lang('Honeypot.noTemplate')); - } - - /** - * Thrown when the name value of config is empty. - * - * @return static - */ - public static function forNoNameField() - { - return new static(lang('Honeypot.noNameField')); - } - - /** - * Thrown when the hidden value of config is false. - * - * @return static - */ - public static function forNoHiddenValue() - { - return new static(lang('Honeypot.noHiddenValue')); - } - - /** - * Thrown when there are no data in the request of honeypot field. - * - * @return static - */ - public static function isBot() - { - return new static(lang('Honeypot.theClientIsABot')); - } -} diff --git a/system4.4.6/Honeypot/Honeypot.php b/system4.4.6/Honeypot/Honeypot.php deleted file mode 100644 index c0998c47..00000000 --- a/system4.4.6/Honeypot/Honeypot.php +++ /dev/null @@ -1,123 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Honeypot; - -use CodeIgniter\Honeypot\Exceptions\HoneypotException; -use CodeIgniter\HTTP\IncomingRequest; -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\ResponseInterface; -use Config\Honeypot as HoneypotConfig; - -/** - * class Honeypot - * - * @see \CodeIgniter\Honeypot\HoneypotTest - */ -class Honeypot -{ - /** - * Our configuration. - * - * @var HoneypotConfig - */ - protected $config; - - /** - * Constructor. - * - * @throws HoneypotException - */ - public function __construct(HoneypotConfig $config) - { - $this->config = $config; - - if (! $this->config->hidden) { - throw HoneypotException::forNoHiddenValue(); - } - - if ($this->config->container === '' || strpos($this->config->container, '{template}') === false) { - $this->config->container = '<div style="display:none">{template}</div>'; - } - - $this->config->containerId ??= 'hpc'; - - if ($this->config->template === '') { - throw HoneypotException::forNoTemplate(); - } - - if ($this->config->name === '') { - throw HoneypotException::forNoNameField(); - } - } - - /** - * Checks the request if honeypot field has data. - * - * @return bool - */ - public function hasContent(RequestInterface $request) - { - assert($request instanceof IncomingRequest); - - return ! empty($request->getPost($this->config->name)); - } - - /** - * Attaches Honeypot template to response. - * - * @return void - */ - public function attachHoneypot(ResponseInterface $response) - { - if ($response->getBody() === null) { - return; - } - - if ($response->getCSP()->enabled()) { - // Add id attribute to the container tag. - $this->config->container = str_ireplace( - '>{template}', - ' id="' . $this->config->containerId . '">{template}', - $this->config->container - ); - } - - $prepField = $this->prepareTemplate($this->config->template); - - $bodyBefore = $response->getBody(); - $bodyAfter = str_ireplace('</form>', $prepField . '</form>', $bodyBefore); - - if ($response->getCSP()->enabled() && ($bodyBefore !== $bodyAfter)) { - // Add style tag for the container tag in the head tag. - $style = '<style ' . csp_style_nonce() . '>#' . $this->config->containerId . ' { display:none }</style>'; - $bodyAfter = str_ireplace('</head>', $style . '</head>', $bodyAfter); - } - - $response->setBody($bodyAfter); - } - - /** - * Prepares the template by adding label - * content and field name. - */ - protected function prepareTemplate(string $template): string - { - $template = str_ireplace('{label}', $this->config->label, $template); - $template = str_ireplace('{name}', $this->config->name, $template); - - if ($this->config->hidden) { - $template = str_ireplace('{template}', $template, $this->config->container); - } - - return $template; - } -} diff --git a/system4.4.6/HotReloader/DirectoryHasher.php b/system4.4.6/HotReloader/DirectoryHasher.php deleted file mode 100644 index ba8d2bfb..00000000 --- a/system4.4.6/HotReloader/DirectoryHasher.php +++ /dev/null @@ -1,80 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HotReloader; - -use CodeIgniter\Exceptions\FrameworkException; -use Config\Toolbar; -use FilesystemIterator; -use RecursiveDirectoryIterator; -use RecursiveIteratorIterator; - -/** - * @internal - * @see \CodeIgniter\HotReloader\DirectoryHasherTest - */ -final class DirectoryHasher -{ - /** - * Generates an md5 value of all directories that are watched by the - * Hot Reloader, as defined in the Config\Toolbar. - * - * This is the current app fingerprint. - */ - public function hash(): string - { - return md5(implode('', $this->hashApp())); - } - - /** - * Generates an array of md5 hashes for all directories that are - * watched by the Hot Reloader, as defined in the Config\Toolbar. - */ - public function hashApp(): array - { - $hashes = []; - - $watchedDirectories = config(Toolbar::class)->watchedDirectories; - - foreach ($watchedDirectories as $directory) { - if (is_dir(ROOTPATH . $directory)) { - $hashes[$directory] = $this->hashDirectory(ROOTPATH . $directory); - } - } - - return array_unique(array_filter($hashes)); - } - - /** - * Generates an md5 hash of a given directory and all of its files - * that match the watched extensions defined in Config\Toolbar. - */ - public function hashDirectory(string $path): string - { - if (! is_dir($path)) { - throw FrameworkException::forInvalidDirectory($path); - } - - $directory = new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS); - $filter = new IteratorFilter($directory); - $iterator = new RecursiveIteratorIterator($filter); - - $hashes = []; - - foreach ($iterator as $file) { - if ($file->isFile()) { - $hashes[] = md5_file($file->getRealPath()); - } - } - - return md5(implode('', $hashes)); - } -} diff --git a/system4.4.6/HotReloader/HotReloader.php b/system4.4.6/HotReloader/HotReloader.php deleted file mode 100644 index 579bcd4a..00000000 --- a/system4.4.6/HotReloader/HotReloader.php +++ /dev/null @@ -1,70 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HotReloader; - -/** - * @internal - */ -final class HotReloader -{ - public function run(): void - { - if (session_status() === PHP_SESSION_ACTIVE) { - session_write_close(); - } - - ini_set('zlib.output_compression', 'Off'); - - header('Cache-Control: no-store'); - header('Content-Type: text/event-stream'); - header('Access-Control-Allow-Methods: GET'); - - ob_end_clean(); - set_time_limit(0); - - $hasher = new DirectoryHasher(); - $appHash = $hasher->hash(); - - while (true) { - if (connection_status() !== CONNECTION_NORMAL || connection_aborted()) { - break; - } - - $currentHash = $hasher->hash(); - - // If hash has changed, tell the browser to reload. - if ($currentHash !== $appHash) { - $appHash = $currentHash; - - $this->sendEvent('reload', ['time' => date('Y-m-d H:i:s')]); - break; - } - if (mt_rand(1, 10) > 8) { - $this->sendEvent('ping', ['time' => date('Y-m-d H:i:s')]); - } - - sleep(1); - } - } - - /** - * Send an event to the browser. - */ - private function sendEvent(string $event, array $data): void - { - echo "event: {$event}\n"; - echo 'data: ' . json_encode($data) . "\n\n"; - - ob_flush(); - flush(); - } -} diff --git a/system4.4.6/HotReloader/IteratorFilter.php b/system4.4.6/HotReloader/IteratorFilter.php deleted file mode 100644 index db775f90..00000000 --- a/system4.4.6/HotReloader/IteratorFilter.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\HotReloader; - -use Config\Toolbar; -use RecursiveFilterIterator; -use RecursiveIterator; - -/** - * @internal - * - * @psalm-suppress MissingTemplateParam - */ -final class IteratorFilter extends RecursiveFilterIterator implements RecursiveIterator -{ - private array $watchedExtensions = []; - - public function __construct(RecursiveIterator $iterator) - { - parent::__construct($iterator); - - $this->watchedExtensions = config(Toolbar::class)->watchedExtensions; - } - - /** - * Apply filters to the files in the iterator. - */ - public function accept(): bool - { - if (! $this->current()->isFile()) { - return true; - } - - $filename = $this->current()->getFilename(); - - // Skip hidden files and directories. - if ($filename[0] === '.') { - return false; - } - - // Only consume files of interest. - $ext = trim(strtolower($this->current()->getExtension()), '. '); - - return in_array($ext, $this->watchedExtensions, true); - } -} diff --git a/system4.4.6/I18n/Exceptions/I18nException.php b/system4.4.6/I18n/Exceptions/I18nException.php deleted file mode 100644 index a0af5078..00000000 --- a/system4.4.6/I18n/Exceptions/I18nException.php +++ /dev/null @@ -1,97 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\I18n\Exceptions; - -use CodeIgniter\Exceptions\FrameworkException; - -/** - * I18nException - */ -class I18nException extends FrameworkException -{ - /** - * Thrown when createFromFormat fails to receive a valid - * DateTime back from DateTime::createFromFormat. - * - * @return static - */ - public static function forInvalidFormat(string $format) - { - return new static(lang('Time.invalidFormat', [$format])); - } - - /** - * Thrown when the numeric representation of the month falls - * outside the range of allowed months. - * - * @return static - */ - public static function forInvalidMonth(string $month) - { - return new static(lang('Time.invalidMonth', [$month])); - } - - /** - * Thrown when the supplied day falls outside the range - * of allowed days. - * - * @return static - */ - public static function forInvalidDay(string $day) - { - return new static(lang('Time.invalidDay', [$day])); - } - - /** - * Thrown when the day provided falls outside the allowed - * last day for the given month. - * - * @return static - */ - public static function forInvalidOverDay(string $lastDay, string $day) - { - return new static(lang('Time.invalidOverDay', [$lastDay, $day])); - } - - /** - * Thrown when the supplied hour falls outside the - * range of allowed hours. - * - * @return static - */ - public static function forInvalidHour(string $hour) - { - return new static(lang('Time.invalidHour', [$hour])); - } - - /** - * Thrown when the supplied minutes falls outside the - * range of allowed minutes. - * - * @return static - */ - public static function forInvalidMinutes(string $minutes) - { - return new static(lang('Time.invalidMinutes', [$minutes])); - } - - /** - * Thrown when the supplied seconds falls outside the - * range of allowed seconds. - * - * @return static - */ - public static function forInvalidSeconds(string $seconds) - { - return new static(lang('Time.invalidSeconds', [$seconds])); - } -} diff --git a/system4.4.6/I18n/Time.php b/system4.4.6/I18n/Time.php deleted file mode 100644 index f01718aa..00000000 --- a/system4.4.6/I18n/Time.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\I18n; - -use DateTimeImmutable; - -/** - * A localized date/time package inspired - * by Nesbot/Carbon and CakePHP/Chronos. - * - * Requires the intl PHP extension. - * - * @property int $age read-only - * @property string $day read-only - * @property string $dayOfWeek read-only - * @property string $dayOfYear read-only - * @property bool $dst read-only - * @property string $hour read-only - * @property bool $local read-only - * @property string $minute read-only - * @property string $month read-only - * @property string $quarter read-only - * @property string $second read-only - * @property int $timestamp read-only - * @property bool $utc read-only - * @property string $weekOfMonth read-only - * @property string $weekOfYear read-only - * @property string $year read-only - * - * @see \CodeIgniter\I18n\TimeTest - */ -class Time extends DateTimeImmutable -{ - use TimeTrait; -} diff --git a/system4.4.6/I18n/TimeDifference.php b/system4.4.6/I18n/TimeDifference.php deleted file mode 100644 index c797a422..00000000 --- a/system4.4.6/I18n/TimeDifference.php +++ /dev/null @@ -1,304 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\I18n; - -use DateTime; -use IntlCalendar; - -/** - * Class TimeDifference - * - * @see \CodeIgniter\I18n\TimeDifferenceTest - */ -class TimeDifference -{ - /** - * The timestamp of the "current" time. - * - * @var IntlCalendar - */ - protected $currentTime; - - /** - * The timestamp to compare the current time to. - * - * @var float - */ - protected $testTime; - - /** - * Eras. - * - * @var float - */ - protected $eras = 0; - - /** - * Years. - * - * @var float - */ - protected $years = 0; - - /** - * Months. - * - * @var float - */ - protected $months = 0; - - /** - * Weeks. - * - * @var int - */ - protected $weeks = 0; - - /** - * Days. - * - * @var int - */ - protected $days = 0; - - /** - * Hours. - * - * @var int - */ - protected $hours = 0; - - /** - * Minutes. - * - * @var int - */ - protected $minutes = 0; - - /** - * Seconds. - * - * @var int - */ - protected $seconds = 0; - - /** - * Difference in seconds. - * - * @var int - */ - protected $difference; - - /** - * Note: both parameters are required to be in the same timezone. No timezone - * shifting is done internally. - */ - public function __construct(DateTime $currentTime, DateTime $testTime) - { - $this->difference = $currentTime->getTimestamp() - $testTime->getTimestamp(); - - $current = IntlCalendar::fromDateTime($currentTime); - $time = IntlCalendar::fromDateTime($testTime)->getTime(); - - $this->currentTime = $current; - $this->testTime = $time; - } - - /** - * Returns the number of years of difference between the two. - * - * @return float|int - */ - public function getYears(bool $raw = false) - { - if ($raw) { - return $this->difference / YEAR; - } - - $time = clone $this->currentTime; - - return $time->fieldDifference($this->testTime, IntlCalendar::FIELD_YEAR); - } - - /** - * Returns the number of months difference between the two dates. - * - * @return float|int - */ - public function getMonths(bool $raw = false) - { - if ($raw) { - return $this->difference / MONTH; - } - - $time = clone $this->currentTime; - - return $time->fieldDifference($this->testTime, IntlCalendar::FIELD_MONTH); - } - - /** - * Returns the number of weeks difference between the two dates. - * - * @return float|int - */ - public function getWeeks(bool $raw = false) - { - if ($raw) { - return $this->difference / WEEK; - } - - $time = clone $this->currentTime; - - return (int) ($time->fieldDifference($this->testTime, IntlCalendar::FIELD_DAY_OF_YEAR) / 7); - } - - /** - * Returns the number of days difference between the two dates. - * - * @return float|int - */ - public function getDays(bool $raw = false) - { - if ($raw) { - return $this->difference / DAY; - } - - $time = clone $this->currentTime; - - return $time->fieldDifference($this->testTime, IntlCalendar::FIELD_DAY_OF_YEAR); - } - - /** - * Returns the number of hours difference between the two dates. - * - * @return float|int - */ - public function getHours(bool $raw = false) - { - if ($raw) { - return $this->difference / HOUR; - } - - $time = clone $this->currentTime; - - return $time->fieldDifference($this->testTime, IntlCalendar::FIELD_HOUR_OF_DAY); - } - - /** - * Returns the number of minutes difference between the two dates. - * - * @return float|int - */ - public function getMinutes(bool $raw = false) - { - if ($raw) { - return $this->difference / MINUTE; - } - - $time = clone $this->currentTime; - - return $time->fieldDifference($this->testTime, IntlCalendar::FIELD_MINUTE); - } - - /** - * Returns the number of seconds difference between the two dates. - * - * @return int - */ - public function getSeconds(bool $raw = false) - { - if ($raw) { - return $this->difference; - } - - $time = clone $this->currentTime; - - return $time->fieldDifference($this->testTime, IntlCalendar::FIELD_SECOND); - } - - /** - * Convert the time to human readable format - */ - public function humanize(?string $locale = null): string - { - $current = clone $this->currentTime; - - $years = $current->fieldDifference($this->testTime, IntlCalendar::FIELD_YEAR); - $months = $current->fieldDifference($this->testTime, IntlCalendar::FIELD_MONTH); - $days = $current->fieldDifference($this->testTime, IntlCalendar::FIELD_DAY_OF_YEAR); - $hours = $current->fieldDifference($this->testTime, IntlCalendar::FIELD_HOUR_OF_DAY); - $minutes = $current->fieldDifference($this->testTime, IntlCalendar::FIELD_MINUTE); - - $phrase = null; - - if ($years !== 0) { - $phrase = lang('Time.years', [abs($years)], $locale); - $before = $years < 0; - } elseif ($months !== 0) { - $phrase = lang('Time.months', [abs($months)], $locale); - $before = $months < 0; - } elseif ($days !== 0 && (abs($days) >= 7)) { - $weeks = ceil($days / 7); - $phrase = lang('Time.weeks', [abs($weeks)], $locale); - $before = $days < 0; - } elseif ($days !== 0) { - $phrase = lang('Time.days', [abs($days)], $locale); - $before = $days < 0; - } elseif ($hours !== 0) { - $phrase = lang('Time.hours', [abs($hours)], $locale); - $before = $hours < 0; - } elseif ($minutes !== 0) { - $phrase = lang('Time.minutes', [abs($minutes)], $locale); - $before = $minutes < 0; - } else { - return lang('Time.now', [], $locale); - } - - return $before - ? lang('Time.ago', [$phrase], $locale) - : lang('Time.inFuture', [$phrase], $locale); - } - - /** - * Allow property-like access to our calculated values. - * - * @param string $name - * - * @return float|int|null - */ - public function __get($name) - { - $name = ucfirst(strtolower($name)); - $method = "get{$name}"; - - if (method_exists($this, $method)) { - return $this->{$method}(); - } - - return null; - } - - /** - * Allow property-like checking for our calculated values. - * - * @param string $name - * - * @return bool - */ - public function __isset($name) - { - $name = ucfirst(strtolower($name)); - $method = "get{$name}"; - - return method_exists($this, $method); - } -} diff --git a/system4.4.6/I18n/TimeLegacy.php b/system4.4.6/I18n/TimeLegacy.php deleted file mode 100644 index 35523e32..00000000 --- a/system4.4.6/I18n/TimeLegacy.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\I18n; - -use DateTime; - -/** - * Legacy Time class. - * - * This class is only for backward compatibility. Do not use. - * This is not immutable! Some methods are immutable, - * but some methods can alter the state. - * - * @property int $age read-only - * @property string $day read-only - * @property string $dayOfWeek read-only - * @property string $dayOfYear read-only - * @property bool $dst read-only - * @property string $hour read-only - * @property bool $local read-only - * @property string $minute read-only - * @property string $month read-only - * @property string $quarter read-only - * @property string $second read-only - * @property int $timestamp read-only - * @property bool $utc read-only - * @property string $weekOfMonth read-only - * @property string $weekOfYear read-only - * @property string $year read-only - * - * @deprecated Use Time instead. - * @see \CodeIgniter\I18n\TimeLegacyTest - */ -class TimeLegacy extends DateTime -{ - use TimeTrait; -} diff --git a/system4.4.6/I18n/TimeTrait.php b/system4.4.6/I18n/TimeTrait.php deleted file mode 100644 index a2a92b8f..00000000 --- a/system4.4.6/I18n/TimeTrait.php +++ /dev/null @@ -1,1198 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\I18n; - -use CodeIgniter\I18n\Exceptions\I18nException; -use DateInterval; -use DateTime; -use DateTimeImmutable; -use DateTimeInterface; -use DateTimeZone; -use Exception; -use IntlCalendar; -use IntlDateFormatter; -use Locale; -use ReturnTypeWillChange; - -/** - * This trait has properties and methods for Time and TimeLegacy. - * When TimeLegacy is removed, this will be in Time. - */ -trait TimeTrait -{ - /** - * @var DateTimeZone - */ - protected $timezone; - - /** - * @var string - */ - protected $locale; - - /** - * Format to use when displaying datetime through __toString - * - * @var string - */ - protected $toStringFormat = 'yyyy-MM-dd HH:mm:ss'; - - /** - * Used to check time string to determine if it is relative time or not.... - * - * @var string - */ - protected static $relativePattern = '/this|next|last|tomorrow|yesterday|midnight|today|[+-]|first|last|ago/i'; - - /** - * @var DateTimeInterface|static|null - */ - protected static $testNow; - - // -------------------------------------------------------------------- - // Constructors - // -------------------------------------------------------------------- - - /** - * Time constructor. - * - * @param DateTimeZone|string|null $timezone - * - * @throws Exception - */ - public function __construct(?string $time = null, $timezone = null, ?string $locale = null) - { - $this->locale = $locale ?: Locale::getDefault(); - - $time ??= ''; - - // If a test instance has been provided, use it instead. - if ($time === '' && static::$testNow instanceof self) { - if ($timezone !== null) { - $testNow = static::$testNow->setTimezone($timezone); - $time = $testNow->format('Y-m-d H:i:s'); - } else { - $timezone = static::$testNow->getTimezone(); - $time = static::$testNow->format('Y-m-d H:i:s'); - } - } - - $timezone = $timezone ?: date_default_timezone_get(); - $this->timezone = $timezone instanceof DateTimeZone ? $timezone : new DateTimeZone($timezone); - - // If the time string was a relative string (i.e. 'next Tuesday') - // then we need to adjust the time going in so that we have a current - // timezone to work with. - if ($time !== '' && static::hasRelativeKeywords($time)) { - $instance = new DateTime('now', $this->timezone); - $instance->modify($time); - $time = $instance->format('Y-m-d H:i:s'); - } - - parent::__construct($time, $this->timezone); - } - - /** - * Returns a new Time instance with the timezone set. - * - * @param DateTimeZone|string|null $timezone - * - * @return self - * - * @throws Exception - */ - public static function now($timezone = null, ?string $locale = null) - { - return new self(null, $timezone, $locale); - } - - /** - * Returns a new Time instance while parsing a datetime string. - * - * Example: - * $time = Time::parse('first day of December 2008'); - * - * @param DateTimeZone|string|null $timezone - * - * @return self - * - * @throws Exception - */ - public static function parse(string $datetime, $timezone = null, ?string $locale = null) - { - return new self($datetime, $timezone, $locale); - } - - /** - * Return a new time with the time set to midnight. - * - * @param DateTimeZone|string|null $timezone - * - * @return self - * - * @throws Exception - */ - public static function today($timezone = null, ?string $locale = null) - { - return new self(date('Y-m-d 00:00:00'), $timezone, $locale); - } - - /** - * Returns an instance set to midnight yesterday morning. - * - * @param DateTimeZone|string|null $timezone - * - * @return self - * - * @throws Exception - */ - public static function yesterday($timezone = null, ?string $locale = null) - { - return new self(date('Y-m-d 00:00:00', strtotime('-1 day')), $timezone, $locale); - } - - /** - * Returns an instance set to midnight tomorrow morning. - * - * @param DateTimeZone|string|null $timezone - * - * @return self - * - * @throws Exception - */ - public static function tomorrow($timezone = null, ?string $locale = null) - { - return new self(date('Y-m-d 00:00:00', strtotime('+1 day')), $timezone, $locale); - } - - /** - * Returns a new instance based on the year, month and day. If any of those three - * are left empty, will default to the current value. - * - * @param DateTimeZone|string|null $timezone - * - * @return self - * - * @throws Exception - */ - public static function createFromDate(?int $year = null, ?int $month = null, ?int $day = null, $timezone = null, ?string $locale = null) - { - return static::create($year, $month, $day, null, null, null, $timezone, $locale); - } - - /** - * Returns a new instance with the date set to today, and the time set to the values passed in. - * - * @param DateTimeZone|string|null $timezone - * - * @return self - * - * @throws Exception - */ - public static function createFromTime(?int $hour = null, ?int $minutes = null, ?int $seconds = null, $timezone = null, ?string $locale = null) - { - return static::create(null, null, null, $hour, $minutes, $seconds, $timezone, $locale); - } - - /** - * Returns a new instance with the date time values individually set. - * - * @param DateTimeZone|string|null $timezone - * - * @return self - * - * @throws Exception - */ - public static function create( - ?int $year = null, - ?int $month = null, - ?int $day = null, - ?int $hour = null, - ?int $minutes = null, - ?int $seconds = null, - $timezone = null, - ?string $locale = null - ) { - $year ??= date('Y'); - $month ??= date('m'); - $day ??= date('d'); - $hour ??= 0; - $minutes ??= 0; - $seconds ??= 0; - - return new self(date('Y-m-d H:i:s', strtotime("{$year}-{$month}-{$day} {$hour}:{$minutes}:{$seconds}")), $timezone, $locale); - } - - /** - * Provides a replacement for DateTime's own createFromFormat function, that provides - * more flexible timeZone handling - * - * @param string $format - * @param string $datetime - * @param DateTimeZone|string|null $timezone - * - * @return self - * - * @throws Exception - */ - #[ReturnTypeWillChange] - public static function createFromFormat($format, $datetime, $timezone = null) - { - if (! $date = parent::createFromFormat($format, $datetime)) { - throw I18nException::forInvalidFormat($format); - } - - return new self($date->format('Y-m-d H:i:s'), $timezone); - } - - /** - * Returns a new instance with the datetime set based on the provided UNIX timestamp. - * - * @param DateTimeZone|string|null $timezone - * - * @return self - * - * @throws Exception - */ - public static function createFromTimestamp(int $timestamp, $timezone = null, ?string $locale = null) - { - $time = new self(gmdate('Y-m-d H:i:s', $timestamp), 'UTC', $locale); - - $timezone ??= date_default_timezone_get(); - - return $time->setTimezone($timezone); - } - - /** - * Takes an instance of DateTimeInterface and returns an instance of Time with it's same values. - * - * @return self - * - * @throws Exception - */ - public static function createFromInstance(DateTimeInterface $dateTime, ?string $locale = null) - { - $date = $dateTime->format('Y-m-d H:i:s'); - $timezone = $dateTime->getTimezone(); - - return new self($date, $timezone, $locale); - } - - /** - * Takes an instance of DateTime and returns an instance of Time with it's same values. - * - * @return self - * - * @throws Exception - * - * @deprecated Use createFromInstance() instead - * - * @codeCoverageIgnore - */ - public static function instance(DateTime $dateTime, ?string $locale = null) - { - return self::createFromInstance($dateTime, $locale); - } - - /** - * Converts the current instance to a mutable DateTime object. - * - * @return DateTime - * - * @throws Exception - */ - public function toDateTime() - { - $dateTime = new DateTime('', $this->getTimezone()); - $dateTime->setTimestamp(parent::getTimestamp()); - - return $dateTime; - } - - // -------------------------------------------------------------------- - // For Testing - // -------------------------------------------------------------------- - - /** - * Creates an instance of Time that will be returned during testing - * when calling 'Time::now()' instead of the current time. - * - * @param DateTimeInterface|self|string|null $datetime - * @param DateTimeZone|string|null $timezone - * - * @return void - * - * @throws Exception - */ - public static function setTestNow($datetime = null, $timezone = null, ?string $locale = null) - { - // Reset the test instance - if ($datetime === null) { - static::$testNow = null; - - return; - } - - // Convert to a Time instance - if (is_string($datetime)) { - $datetime = new self($datetime, $timezone, $locale); - } elseif ($datetime instanceof DateTimeInterface && ! $datetime instanceof self) { - $datetime = new self($datetime->format('Y-m-d H:i:s'), $timezone); - } - - static::$testNow = $datetime; - } - - /** - * Returns whether we have a testNow instance saved. - */ - public static function hasTestNow(): bool - { - return static::$testNow !== null; - } - - // -------------------------------------------------------------------- - // Getters - // -------------------------------------------------------------------- - - /** - * Returns the localized Year - * - * @throws Exception - */ - public function getYear(): string - { - return $this->toLocalizedString('y'); - } - - /** - * Returns the localized Month - * - * @throws Exception - */ - public function getMonth(): string - { - return $this->toLocalizedString('M'); - } - - /** - * Return the localized day of the month. - * - * @throws Exception - */ - public function getDay(): string - { - return $this->toLocalizedString('d'); - } - - /** - * Return the localized hour (in 24-hour format). - * - * @throws Exception - */ - public function getHour(): string - { - return $this->toLocalizedString('H'); - } - - /** - * Return the localized minutes in the hour. - * - * @throws Exception - */ - public function getMinute(): string - { - return $this->toLocalizedString('m'); - } - - /** - * Return the localized seconds - * - * @throws Exception - */ - public function getSecond(): string - { - return $this->toLocalizedString('s'); - } - - /** - * Return the index of the day of the week - * - * @throws Exception - */ - public function getDayOfWeek(): string - { - return $this->toLocalizedString('c'); - } - - /** - * Return the index of the day of the year - * - * @throws Exception - */ - public function getDayOfYear(): string - { - return $this->toLocalizedString('D'); - } - - /** - * Return the index of the week in the month - * - * @throws Exception - */ - public function getWeekOfMonth(): string - { - return $this->toLocalizedString('W'); - } - - /** - * Return the index of the week in the year - * - * @throws Exception - */ - public function getWeekOfYear(): string - { - return $this->toLocalizedString('w'); - } - - /** - * Returns the age in years from the date and 'now' - * - * @return int - * - * @throws Exception - */ - public function getAge() - { - // future dates have no age - return max(0, $this->difference(self::now())->getYears()); - } - - /** - * Returns the number of the current quarter for the year. - * - * @throws Exception - */ - public function getQuarter(): string - { - return $this->toLocalizedString('Q'); - } - - /** - * Are we in daylight savings time currently? - */ - public function getDst(): bool - { - return $this->format('I') === '1'; // 1 if Daylight Saving Time, 0 otherwise. - } - - /** - * Returns boolean whether the passed timezone is the same as - * the local timezone. - */ - public function getLocal(): bool - { - $local = date_default_timezone_get(); - - return $local === $this->timezone->getName(); - } - - /** - * Returns boolean whether object is in UTC. - */ - public function getUtc(): bool - { - return $this->getOffset() === 0; - } - - /** - * Returns the name of the current timezone. - */ - public function getTimezoneName(): string - { - return $this->timezone->getName(); - } - - // -------------------------------------------------------------------- - // Setters - // -------------------------------------------------------------------- - - /** - * Sets the current year for this instance. - * - * @param int|string $value - * - * @return self - * - * @throws Exception - */ - public function setYear($value) - { - return $this->setValue('year', $value); - } - - /** - * Sets the month of the year. - * - * @param int|string $value - * - * @return self - * - * @throws Exception - */ - public function setMonth($value) - { - if (is_numeric($value) && ($value < 1 || $value > 12)) { - throw I18nException::forInvalidMonth($value); - } - - if (is_string($value) && ! is_numeric($value)) { - $value = date('m', strtotime("{$value} 1 2017")); - } - - return $this->setValue('month', $value); - } - - /** - * Sets the day of the month. - * - * @param int|string $value - * - * @return self - * - * @throws Exception - */ - public function setDay($value) - { - if ($value < 1 || $value > 31) { - throw I18nException::forInvalidDay($value); - } - - $date = $this->getYear() . '-' . $this->getMonth(); - $lastDay = date('t', strtotime($date)); - if ($value > $lastDay) { - throw I18nException::forInvalidOverDay($lastDay, $value); - } - - return $this->setValue('day', $value); - } - - /** - * Sets the hour of the day (24 hour cycle) - * - * @param int|string $value - * - * @return self - * - * @throws Exception - */ - public function setHour($value) - { - if ($value < 0 || $value > 23) { - throw I18nException::forInvalidHour($value); - } - - return $this->setValue('hour', $value); - } - - /** - * Sets the minute of the hour - * - * @param int|string $value - * - * @return self - * - * @throws Exception - */ - public function setMinute($value) - { - if ($value < 0 || $value > 59) { - throw I18nException::forInvalidMinutes($value); - } - - return $this->setValue('minute', $value); - } - - /** - * Sets the second of the minute. - * - * @param int|string $value - * - * @return self - * - * @throws Exception - */ - public function setSecond($value) - { - if ($value < 0 || $value > 59) { - throw I18nException::forInvalidSeconds($value); - } - - return $this->setValue('second', $value); - } - - /** - * Helper method to do the heavy lifting of the 'setX' methods. - * - * @param int $value - * - * @return self - * - * @throws Exception - */ - protected function setValue(string $name, $value) - { - [$year, $month, $day, $hour, $minute, $second] = explode('-', $this->format('Y-n-j-G-i-s')); - - ${$name} = $value; - - return self::create( - (int) $year, - (int) $month, - (int) $day, - (int) $hour, - (int) $minute, - (int) $second, - $this->getTimezoneName(), - $this->locale - ); - } - - /** - * Returns a new instance with the revised timezone. - * - * @param DateTimeZone|string $timezone - * - * @return self - * - * @throws Exception - */ - #[ReturnTypeWillChange] - public function setTimezone($timezone) - { - $timezone = $timezone instanceof DateTimeZone ? $timezone : new DateTimeZone($timezone); - - return self::createFromInstance($this->toDateTime()->setTimezone($timezone), $this->locale); - } - - /** - * Returns a new instance with the date set to the new timestamp. - * - * @param int $timestamp - * - * @return self - * - * @throws Exception - */ - #[ReturnTypeWillChange] - public function setTimestamp($timestamp) - { - $time = date('Y-m-d H:i:s', $timestamp); - - return self::parse($time, $this->timezone, $this->locale); - } - - // -------------------------------------------------------------------- - // Add/Subtract - // -------------------------------------------------------------------- - - /** - * Returns a new Time instance with $seconds added to the time. - * - * @return static - */ - public function addSeconds(int $seconds) - { - $time = clone $this; - - return $time->add(DateInterval::createFromDateString("{$seconds} seconds")); - } - - /** - * Returns a new Time instance with $minutes added to the time. - * - * @return static - */ - public function addMinutes(int $minutes) - { - $time = clone $this; - - return $time->add(DateInterval::createFromDateString("{$minutes} minutes")); - } - - /** - * Returns a new Time instance with $hours added to the time. - * - * @return static - */ - public function addHours(int $hours) - { - $time = clone $this; - - return $time->add(DateInterval::createFromDateString("{$hours} hours")); - } - - /** - * Returns a new Time instance with $days added to the time. - * - * @return static - */ - public function addDays(int $days) - { - $time = clone $this; - - return $time->add(DateInterval::createFromDateString("{$days} days")); - } - - /** - * Returns a new Time instance with $months added to the time. - * - * @return static - */ - public function addMonths(int $months) - { - $time = clone $this; - - return $time->add(DateInterval::createFromDateString("{$months} months")); - } - - /** - * Returns a new Time instance with $years added to the time. - * - * @return static - */ - public function addYears(int $years) - { - $time = clone $this; - - return $time->add(DateInterval::createFromDateString("{$years} years")); - } - - /** - * Returns a new Time instance with $seconds subtracted from the time. - * - * @return static - */ - public function subSeconds(int $seconds) - { - $time = clone $this; - - return $time->sub(DateInterval::createFromDateString("{$seconds} seconds")); - } - - /** - * Returns a new Time instance with $minutes subtracted from the time. - * - * @return static - */ - public function subMinutes(int $minutes) - { - $time = clone $this; - - return $time->sub(DateInterval::createFromDateString("{$minutes} minutes")); - } - - /** - * Returns a new Time instance with $hours subtracted from the time. - * - * @return static - */ - public function subHours(int $hours) - { - $time = clone $this; - - return $time->sub(DateInterval::createFromDateString("{$hours} hours")); - } - - /** - * Returns a new Time instance with $days subtracted from the time. - * - * @return static - */ - public function subDays(int $days) - { - $time = clone $this; - - return $time->sub(DateInterval::createFromDateString("{$days} days")); - } - - /** - * Returns a new Time instance with $months subtracted from the time. - * - * @return static - */ - public function subMonths(int $months) - { - $time = clone $this; - - return $time->sub(DateInterval::createFromDateString("{$months} months")); - } - - /** - * Returns a new Time instance with $hours subtracted from the time. - * - * @return static - */ - public function subYears(int $years) - { - $time = clone $this; - - return $time->sub(DateInterval::createFromDateString("{$years} years")); - } - - // -------------------------------------------------------------------- - // Formatters - // -------------------------------------------------------------------- - - /** - * Returns the localized value of the date in the format 'Y-m-d H:i:s' - * - * @return false|string - * - * @throws Exception - */ - public function toDateTimeString() - { - return $this->toLocalizedString('yyyy-MM-dd HH:mm:ss'); - } - - /** - * Returns a localized version of the date in Y-m-d format. - * - * @return string - * - * @throws Exception - */ - public function toDateString() - { - return $this->toLocalizedString('yyyy-MM-dd'); - } - - /** - * Returns a localized version of the date in nicer date format: - * - * i.e. Apr 1, 2017 - * - * @return string - * - * @throws Exception - */ - public function toFormattedDateString() - { - return $this->toLocalizedString('MMM d, yyyy'); - } - - /** - * Returns a localized version of the time in nicer date format: - * - * i.e. 13:20:33 - * - * @return string - * - * @throws Exception - */ - public function toTimeString() - { - return $this->toLocalizedString('HH:mm:ss'); - } - - /** - * Returns the localized value of this instance in $format. - * - * @return false|string - * - * @throws Exception - */ - public function toLocalizedString(?string $format = null) - { - $format ??= $this->toStringFormat; - - return IntlDateFormatter::formatObject($this->toDateTime(), $format, $this->locale); - } - - // -------------------------------------------------------------------- - // Comparison - // -------------------------------------------------------------------- - - /** - * Determines if the datetime passed in is equal to the current instance. - * Equal in this case means that they represent the same moment in time, - * and are not required to be in the same timezone, as both times are - * converted to UTC and compared that way. - * - * @param DateTimeInterface|self|string $testTime - * - * @throws Exception - */ - public function equals($testTime, ?string $timezone = null): bool - { - $testTime = $this->getUTCObject($testTime, $timezone); - - $ourTime = $this->toDateTime() - ->setTimezone(new DateTimeZone('UTC')) - ->format('Y-m-d H:i:s'); - - return $testTime->format('Y-m-d H:i:s') === $ourTime; - } - - /** - * Ensures that the times are identical, taking timezone into account. - * - * @param DateTimeInterface|self|string $testTime - * - * @throws Exception - */ - public function sameAs($testTime, ?string $timezone = null): bool - { - if ($testTime instanceof DateTimeInterface) { - $testTime = $testTime->format('Y-m-d H:i:s'); - } elseif (is_string($testTime)) { - $timezone = $timezone ?: $this->timezone; - $timezone = $timezone instanceof DateTimeZone ? $timezone : new DateTimeZone($timezone); - $testTime = new DateTime($testTime, $timezone); - $testTime = $testTime->format('Y-m-d H:i:s'); - } - - $ourTime = $this->toDateTimeString(); - - return $testTime === $ourTime; - } - - /** - * Determines if the current instance's time is before $testTime, - * after converting to UTC. - * - * @param DateTimeInterface|self|string $testTime - * - * @throws Exception - */ - public function isBefore($testTime, ?string $timezone = null): bool - { - $testTime = $this->getUTCObject($testTime, $timezone)->getTimestamp(); - $ourTime = $this->getTimestamp(); - - return $ourTime < $testTime; - } - - /** - * Determines if the current instance's time is after $testTime, - * after converting in UTC. - * - * @param DateTimeInterface|self|string $testTime - * - * @throws Exception - */ - public function isAfter($testTime, ?string $timezone = null): bool - { - $testTime = $this->getUTCObject($testTime, $timezone)->getTimestamp(); - $ourTime = $this->getTimestamp(); - - return $ourTime > $testTime; - } - - // -------------------------------------------------------------------- - // Differences - // -------------------------------------------------------------------- - - /** - * Returns a text string that is easily readable that describes - * how long ago, or how long from now, a date is, like: - * - * - 3 weeks ago - * - in 4 days - * - 6 hours ago - * - * @return string - * - * @throws Exception - */ - public function humanize() - { - $now = IntlCalendar::fromDateTime(self::now($this->timezone)); - $time = $this->getCalendar()->getTime(); - - $years = $now->fieldDifference($time, IntlCalendar::FIELD_YEAR); - $months = $now->fieldDifference($time, IntlCalendar::FIELD_MONTH); - $days = $now->fieldDifference($time, IntlCalendar::FIELD_DAY_OF_YEAR); - $hours = $now->fieldDifference($time, IntlCalendar::FIELD_HOUR_OF_DAY); - $minutes = $now->fieldDifference($time, IntlCalendar::FIELD_MINUTE); - - $phrase = null; - - if ($years !== 0) { - $phrase = lang('Time.years', [abs($years)]); - $before = $years < 0; - } elseif ($months !== 0) { - $phrase = lang('Time.months', [abs($months)]); - $before = $months < 0; - } elseif ($days !== 0 && (abs($days) >= 7)) { - $weeks = ceil($days / 7); - $phrase = lang('Time.weeks', [abs($weeks)]); - $before = $days < 0; - } elseif ($days !== 0) { - $before = $days < 0; - - // Yesterday/Tomorrow special cases - if (abs($days) === 1) { - return $before ? lang('Time.yesterday') : lang('Time.tomorrow'); - } - - $phrase = lang('Time.days', [abs($days)]); - } elseif ($hours !== 0) { - $phrase = lang('Time.hours', [abs($hours)]); - $before = $hours < 0; - } elseif ($minutes !== 0) { - $phrase = lang('Time.minutes', [abs($minutes)]); - $before = $minutes < 0; - } else { - return lang('Time.now'); - } - - return $before ? lang('Time.ago', [$phrase]) : lang('Time.inFuture', [$phrase]); - } - - /** - * @param DateTimeInterface|self|string $testTime - * - * @return TimeDifference - * - * @throws Exception - */ - public function difference($testTime, ?string $timezone = null) - { - $testTime = $this->getUTCObject($testTime, $timezone); - $ourTime = $this->getUTCObject($this); - - return new TimeDifference($ourTime, $testTime); - } - - // -------------------------------------------------------------------- - // Utilities - // -------------------------------------------------------------------- - - /** - * Returns a Time instance with the timezone converted to UTC. - * - * @param DateTimeInterface|self|string $time - * - * @return DateTime|static - * - * @throws Exception - */ - public function getUTCObject($time, ?string $timezone = null) - { - if ($time instanceof self) { - $time = $time->toDateTime(); - } elseif (is_string($time)) { - $timezone = $timezone ?: $this->timezone; - $timezone = $timezone instanceof DateTimeZone ? $timezone : new DateTimeZone($timezone); - $time = new DateTime($time, $timezone); - } - - if ($time instanceof DateTime || $time instanceof DateTimeImmutable) { - $time = $time->setTimezone(new DateTimeZone('UTC')); - } - - return $time; - } - - /** - * Returns the IntlCalendar object used for this object, - * taking into account the locale, date, etc. - * - * Primarily used internally to provide the difference and comparison functions, - * but available for public consumption if they need it. - * - * @return IntlCalendar - * - * @throws Exception - */ - public function getCalendar() - { - return IntlCalendar::fromDateTime($this); - } - - /** - * Check a time string to see if it includes a relative date (like 'next Tuesday'). - */ - protected static function hasRelativeKeywords(string $time): bool - { - // skip common format with a '-' in it - if (preg_match('/\d{4}-\d{1,2}-\d{1,2}/', $time) !== 1) { - return preg_match(static::$relativePattern, $time) > 0; - } - - return false; - } - - /** - * Outputs a short format version of the datetime. - * The output is NOT localized intentionally. - */ - public function __toString(): string - { - return $this->format('Y-m-d H:i:s'); - } - - /** - * Allow for property-type access to any getX method... - * - * Note that we cannot use this for any of our setX methods, - * as they return new Time objects, but the __set ignores - * return values. - * See http://php.net/manual/en/language.oop5.overloading.php - * - * @param string $name - * - * @return array|bool|DateTimeInterface|DateTimeZone|int|IntlCalendar|self|string|null - */ - public function __get($name) - { - $method = 'get' . ucfirst($name); - - if (method_exists($this, $method)) { - return $this->{$method}(); - } - - return null; - } - - /** - * Allow for property-type checking to any getX method... - * - * @param string $name - */ - public function __isset($name): bool - { - $method = 'get' . ucfirst($name); - - return method_exists($this, $method); - } - - /** - * This is called when we unserialize the Time object. - */ - public function __wakeup(): void - { - /** - * Prior to unserialization, this is a string. - * - * @var string $timezone - */ - $timezone = $this->timezone; - - $this->timezone = new DateTimeZone($timezone); - - // @phpstan-ignore-next-line `$this->date` is a special property for PHP internal use. - parent::__construct($this->date, $this->timezone); - } -} diff --git a/system4.4.6/Images/Exceptions/ImageException.php b/system4.4.6/Images/Exceptions/ImageException.php deleted file mode 100644 index e72a19f8..00000000 --- a/system4.4.6/Images/Exceptions/ImageException.php +++ /dev/null @@ -1,118 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Images\Exceptions; - -use CodeIgniter\Exceptions\ExceptionInterface; -use CodeIgniter\Exceptions\FrameworkException; - -class ImageException extends FrameworkException implements ExceptionInterface -{ - /** - * Thrown when the image is not found. - * - * @return static - */ - public static function forMissingImage() - { - return new static(lang('Images.sourceImageRequired')); - } - - /** - * Thrown when the file specific is not following the role. - * - * @return static - */ - public static function forFileNotSupported() - { - return new static(lang('Images.fileNotSupported')); - } - - /** - * Thrown when the angle is undefined. - * - * @return static - */ - public static function forMissingAngle() - { - return new static(lang('Images.rotationAngleRequired')); - } - - /** - * Thrown when the direction property is invalid. - * - * @return static - */ - public static function forInvalidDirection(?string $dir = null) - { - return new static(lang('Images.invalidDirection', [$dir])); - } - - /** - * Thrown when the path property is invalid. - * - * @return static - */ - public static function forInvalidPath() - { - return new static(lang('Images.invalidPath')); - } - - /** - * Thrown when the EXIF function is not supported. - * - * @return static - */ - public static function forEXIFUnsupported() - { - return new static(lang('Images.exifNotSupported')); - } - - /** - * Thrown when the image specific is invalid. - * - * @return static - */ - public static function forInvalidImageCreate(?string $extra = null) - { - return new static(lang('Images.unsupportedImageCreate') . ' ' . $extra); - } - - /** - * Thrown when the image save failed. - * - * @return static - */ - public static function forSaveFailed() - { - return new static(lang('Images.saveFailed')); - } - - /** - * Thrown when the image library path is invalid. - * - * @return static - */ - public static function forInvalidImageLibraryPath(?string $path = null) - { - return new static(lang('Images.libPathInvalid', [$path])); - } - - /** - * Thrown when the image process failed. - * - * @return static - */ - public static function forImageProcessFailed() - { - return new static(lang('Images.imageProcessFailed')); - } -} diff --git a/system4.4.6/Images/Handlers/BaseHandler.php b/system4.4.6/Images/Handlers/BaseHandler.php deleted file mode 100644 index 92644eed..00000000 --- a/system4.4.6/Images/Handlers/BaseHandler.php +++ /dev/null @@ -1,783 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Images\Handlers; - -use CodeIgniter\Images\Exceptions\ImageException; -use CodeIgniter\Images\Image; -use CodeIgniter\Images\ImageHandlerInterface; -use Config\Images; -use InvalidArgumentException; - -/** - * Base image handling implementation - */ -abstract class BaseHandler implements ImageHandlerInterface -{ - /** - * Configuration settings. - * - * @var Images - */ - protected $config; - - /** - * The image/file instance - * - * @var Image - */ - protected $image; - - /** - * Whether the image file has been confirmed. - * - * @var bool - */ - protected $verified = false; - - /** - * Image width. - * - * @var int - */ - protected $width = 0; - - /** - * Image height. - * - * @var int - */ - protected $height = 0; - - /** - * File permission mask. - * - * @var int - */ - protected $filePermissions = 0644; - - /** - * X-axis. - * - * @var int|null - */ - protected $xAxis = 0; - - /** - * Y-axis. - * - * @var int|null - */ - protected $yAxis = 0; - - /** - * Master dimensioning. - * - * @var string - */ - protected $masterDim = 'auto'; - - /** - * Default options for text watermarking. - * - * @var array - */ - protected $textDefaults = [ - 'fontPath' => null, - 'fontSize' => 16, - 'color' => 'ffffff', - 'opacity' => 1.0, - 'vAlign' => 'bottom', - 'hAlign' => 'center', - 'vOffset' => 0, - 'hOffset' => 0, - 'padding' => 0, - 'withShadow' => false, - 'shadowColor' => '000000', - 'shadowOffset' => 3, - ]; - - /** - * Image types with support for transparency. - * - * @var array - */ - protected $supportTransparency = [ - IMAGETYPE_PNG, - IMAGETYPE_WEBP, - ]; - - /** - * Temporary image used by the different engines. - * - * @var resource|null - */ - protected $resource; - - /** - * Constructor. - * - * @param Images|null $config - */ - public function __construct($config = null) - { - $this->config = $config ?? new Images(); - } - - /** - * Sets another image for this handler to work on. - * Keeps us from needing to continually instantiate the handler. - * - * @return $this - */ - public function withFile(string $path) - { - // Clear out the old resource so that - // it doesn't try to use a previous image - $this->resource = null; - $this->verified = false; - - $this->image = new Image($path, true); - - $this->image->getProperties(false); - $this->width = $this->image->origWidth; - $this->height = $this->image->origHeight; - - return $this; - } - - /** - * Make the image resource object if needed - * - * @return void - */ - abstract protected function ensureResource(); - - /** - * Returns the image instance. - * - * @return Image - */ - public function getFile() - { - return $this->image; - } - - /** - * Verifies that a file has been supplied and it is an image. - * - * @return Image The image instance - * - * @throws ImageException - */ - protected function image(): Image - { - if ($this->verified) { - return $this->image; - } - - // Verify withFile has been called - if (empty($this->image)) { - throw ImageException::forMissingImage(); - } - - // Verify the loaded image is an Image instance - if (! $this->image instanceof Image) { - throw ImageException::forInvalidPath(); - } - - // File::__construct has verified the file exists - make sure it is an image - if (! is_int($this->image->imageType)) { - throw ImageException::forFileNotSupported(); - } - - // Note that the image has been verified - $this->verified = true; - - return $this->image; - } - - /** - * Returns the temporary image used during the image processing. - * Good for extending the system or doing things this library - * is not intended to do. - * - * @return resource - */ - public function getResource() - { - $this->ensureResource(); - - return $this->resource; - } - - /** - * Load the temporary image used during the image processing. - * Some functions e.g. save() will only copy and not compress - * your image otherwise. - * - * @return $this - */ - public function withResource() - { - $this->ensureResource(); - - return $this; - } - - /** - * Resize the image - * - * @param bool $maintainRatio If true, will get the closest match possible while keeping aspect ratio true. - * - * @return BaseHandler - */ - public function resize(int $width, int $height, bool $maintainRatio = false, string $masterDim = 'auto') - { - // If the target width/height match the source, then we have nothing to do here. - if ($this->image()->origWidth === $width && $this->image()->origHeight === $height) { - return $this; - } - - $this->width = $width; - $this->height = $height; - - if ($maintainRatio) { - $this->masterDim = $masterDim; - $this->reproportion(); - } - - return $this->_resize($maintainRatio); - } - - /** - * Crops the image to the desired height and width. If one of the height/width values - * is not provided, that value will be set the appropriate value based on offsets and - * image dimensions. - * - * @param int|null $x X-axis coord to start cropping from the left of image - * @param int|null $y Y-axis coord to start cropping from the top of image - * - * @return $this - */ - public function crop(?int $width = null, ?int $height = null, ?int $x = null, ?int $y = null, bool $maintainRatio = false, string $masterDim = 'auto') - { - $this->width = $width; - $this->height = $height; - $this->xAxis = $x; - $this->yAxis = $y; - - if ($maintainRatio) { - $this->masterDim = $masterDim; - $this->reproportion(); - } - - $result = $this->_crop(); - - $this->xAxis = null; - $this->yAxis = null; - - return $result; - } - - /** - * Changes the stored image type to indicate the new file format to use when saving. - * Does not touch the actual resource. - * - * @param int $imageType A PHP imageType constant, e.g. https://www.php.net/manual/en/function.image-type-to-mime-type.php - * - * @return $this - */ - public function convert(int $imageType) - { - $this->ensureResource(); - - $this->image()->imageType = $imageType; - - return $this; - } - - /** - * Rotates the image on the current canvas. - * - * @return $this - */ - public function rotate(float $angle) - { - // Allowed rotation values - $degs = [ - 90.0, - 180.0, - 270.0, - ]; - - if (! in_array($angle, $degs, true)) { - throw ImageException::forMissingAngle(); - } - - // cast angle as an int, for our use - $angle = (int) $angle; - - // Reassign the width and height - if ($angle === 90 || $angle === 270) { - $temp = $this->height; - $this->width = $this->height; - $this->height = $temp; - } - - // Call the Handler-specific version. - $this->_rotate($angle); - - return $this; - } - - /** - * Flattens transparencies, default white background - * - * @return $this - */ - public function flatten(int $red = 255, int $green = 255, int $blue = 255) - { - $this->width = $this->image()->origWidth; - $this->height = $this->image()->origHeight; - - return $this->_flatten($red, $green, $blue); - } - - /** - * Handler-specific method to flattening an image's transparencies. - * - * @return $this - * - * @internal - */ - abstract protected function _flatten(int $red = 255, int $green = 255, int $blue = 255); - - /** - * Handler-specific method to handle rotating an image in 90 degree increments. - * - * @return mixed - */ - abstract protected function _rotate(int $angle); - - /** - * Flips an image either horizontally or vertically. - * - * @param string $dir Either 'vertical' or 'horizontal' - * - * @return $this - */ - public function flip(string $dir = 'vertical') - { - $dir = strtolower($dir); - - if ($dir !== 'vertical' && $dir !== 'horizontal') { - throw ImageException::forInvalidDirection($dir); - } - - return $this->_flip($dir); - } - - /** - * Handler-specific method to handle flipping an image along its - * horizontal or vertical axis. - * - * @return $this - */ - abstract protected function _flip(string $direction); - - /** - * Overlays a string of text over the image. - * - * Valid options: - * - * - color Text Color (hex number) - * - shadowColor Color of the shadow (hex number) - * - hAlign Horizontal alignment: left, center, right - * - vAlign Vertical alignment: top, middle, bottom - * - hOffset - * - vOffset - * - fontPath - * - fontSize - * - shadowOffset - * - * @return $this - */ - public function text(string $text, array $options = []) - { - $options = array_merge($this->textDefaults, $options); - $options['color'] = trim($options['color'], '# '); - $options['shadowColor'] = trim($options['shadowColor'], '# '); - - $this->_text($text, $options); - - return $this; - } - - /** - * Handler-specific method for overlaying text on an image. - * - * @return void - */ - abstract protected function _text(string $text, array $options = []); - - /** - * Handles the actual resizing of the image. - * - * @return $this - */ - abstract public function _resize(bool $maintainRatio = false); - - /** - * Crops the image. - * - * @return $this - */ - abstract public function _crop(); - - /** - * Return image width. - * - * @return int - */ - abstract public function _getWidth(); - - /** - * Return the height of an image. - * - * @return int - */ - abstract public function _getHeight(); - - /** - * Reads the EXIF information from the image and modifies the orientation - * so that displays correctly in the browser. This is especially an issue - * with images taken by smartphones who always store the image up-right, - * but set the orientation flag to display it correctly. - * - * @param bool $silent If true, will ignore exceptions when PHP doesn't support EXIF. - * - * @return $this - */ - public function reorient(bool $silent = false) - { - $orientation = $this->getEXIF('Orientation', $silent); - - switch ($orientation) { - case 2: - return $this->flip('horizontal'); - - case 3: - return $this->rotate(180); - - case 4: - return $this->rotate(180)->flip('horizontal'); - - case 5: - return $this->rotate(270)->flip('horizontal'); - - case 6: - return $this->rotate(270); - - case 7: - return $this->rotate(90)->flip('horizontal'); - - case 8: - return $this->rotate(90); - - default: - return $this; - } - } - - /** - * Retrieve the EXIF information from the image, if possible. Returns - * an array of the information, or null if nothing can be found. - * - * EXIF data is only supported fr JPEG & TIFF formats. - * - * @param string|null $key If specified, will only return this piece of EXIF data. - * @param bool $silent If true, will not throw our own exceptions. - * - * @return mixed - * - * @throws ImageException - */ - public function getEXIF(?string $key = null, bool $silent = false) - { - if (! function_exists('exif_read_data')) { - if ($silent) { - return null; - } - - throw ImageException::forEXIFUnsupported(); // @codeCoverageIgnore - } - - $exif = null; // default - - switch ($this->image()->imageType) { - case IMAGETYPE_JPEG: - case IMAGETYPE_TIFF_II: - $exif = @exif_read_data($this->image()->getPathname()); - if ($key !== null && is_array($exif)) { - $exif = $exif[$key] ?? false; - } - } - - return $exif; - } - - /** - * Combine cropping and resizing into a single command. - * - * Supported positions: - * - top-left - * - top - * - top-right - * - left - * - center - * - right - * - bottom-left - * - bottom - * - bottom-right - * - * @return BaseHandler - */ - public function fit(int $width, ?int $height = null, string $position = 'center') - { - $origWidth = $this->image()->origWidth; - $origHeight = $this->image()->origHeight; - - [$cropWidth, $cropHeight] = $this->calcAspectRatio($width, $height, $origWidth, $origHeight); - - if ($height === null) { - $height = ceil(($width / $cropWidth) * $cropHeight); - } - - [$x, $y] = $this->calcCropCoords($cropWidth, $cropHeight, $origWidth, $origHeight, $position); - - return $this->crop($cropWidth, $cropHeight, $x, $y)->resize($width, $height); - } - - /** - * Calculate image aspect ratio. - * - * @param float|int $width - * @param float|int|null $height - * @param float|int $origWidth - * @param float|int $origHeight - */ - protected function calcAspectRatio($width, $height = null, $origWidth = 0, $origHeight = 0): array - { - if (empty($origWidth) || empty($origHeight)) { - throw new InvalidArgumentException('You must supply the parameters: origWidth, origHeight.'); - } - - // If $height is null, then we have it easy. - // Calc based on full image size and be done. - if ($height === null) { - $height = ($width / $origWidth) * $origHeight; - - return [ - $width, - (int) $height, - ]; - } - - $xRatio = $width / $origWidth; - $yRatio = $height / $origHeight; - - if ($xRatio > $yRatio) { - return [ - $origWidth, - (int) ($origWidth * $height / $width), - ]; - } - - return [ - (int) ($origHeight * $width / $height), - $origHeight, - ]; - } - - /** - * Based on the position, will determine the correct x/y coords to - * crop the desired portion from the image. - * - * @param float|int $width - * @param float|int $height - * @param float|int $origWidth - * @param float|int $origHeight - * @param string $position - */ - protected function calcCropCoords($width, $height, $origWidth, $origHeight, $position): array - { - $position = strtolower($position); - - $x = $y = 0; - - switch ($position) { - case 'top-left': - $x = 0; - $y = 0; - break; - - case 'top': - $x = floor(($origWidth - $width) / 2); - $y = 0; - break; - - case 'top-right': - $x = $origWidth - $width; - $y = 0; - break; - - case 'left': - $x = 0; - $y = floor(($origHeight - $height) / 2); - break; - - case 'center': - $x = floor(($origWidth - $width) / 2); - $y = floor(($origHeight - $height) / 2); - break; - - case 'right': - $x = ($origWidth - $width); - $y = floor(($origHeight - $height) / 2); - break; - - case 'bottom-left': - $x = 0; - $y = $origHeight - $height; - break; - - case 'bottom': - $x = floor(($origWidth - $width) / 2); - $y = $origHeight - $height; - break; - - case 'bottom-right': - $x = ($origWidth - $width); - $y = $origHeight - $height; - break; - } - - return [ - $x, - $y, - ]; - } - - /** - * Get the version of the image library in use. - * - * @return string - */ - abstract public function getVersion(); - - /** - * Saves any changes that have been made to file. - * - * Example: - * $image->resize(100, 200, true) - * ->save($target); - * - * @param non-empty-string|null $target - * - * @return bool - */ - abstract public function save(?string $target = null, int $quality = 90); - - /** - * Does the driver-specific processing of the image. - * - * @return mixed - */ - abstract protected function process(string $action); - - /** - * Provide access to the Image class' methods if they don't exist - * on the handler itself. - * - * @return mixed - */ - public function __call(string $name, array $args = []) - { - if (method_exists($this->image(), $name)) { - return $this->image()->{$name}(...$args); - } - } - - /** - * Re-proportion Image Width/Height - * - * When creating thumbs, the desired width/height - * can end up warping the image due to an incorrect - * ratio between the full-sized image and the thumb. - * - * This function lets us re-proportion the width/height - * if users choose to maintain the aspect ratio when resizing. - * - * @return void - */ - protected function reproportion() - { - if (($this->width === 0 && $this->height === 0) || $this->image()->origWidth === 0 || $this->image()->origHeight === 0 || (! ctype_digit((string) $this->width) && ! ctype_digit((string) $this->height)) || ! ctype_digit((string) $this->image()->origWidth) || ! ctype_digit((string) $this->image()->origHeight)) { - return; - } - - // Sanitize - $this->width = (int) $this->width; - $this->height = (int) $this->height; - - if ($this->masterDim !== 'width' && $this->masterDim !== 'height') { - if ($this->width > 0 && $this->height > 0) { - $this->masterDim = ((($this->image()->origHeight / $this->image()->origWidth) - ($this->height / $this->width)) < 0) ? 'width' : 'height'; - } else { - $this->masterDim = ($this->height === 0) ? 'width' : 'height'; - } - } elseif (($this->masterDim === 'width' && $this->width === 0) || ($this->masterDim === 'height' && $this->height === 0) - ) { - return; - } - - if ($this->masterDim === 'width') { - $this->height = (int) ceil($this->width * $this->image()->origHeight / $this->image()->origWidth); - } else { - $this->width = (int) ceil($this->image()->origWidth * $this->height / $this->image()->origHeight); - } - } - - /** - * Return image width. - * - * accessor for testing; not part of interface - * - * @return int - */ - public function getWidth() - { - return ($this->resource !== null) ? $this->_getWidth() : $this->width; - } - - /** - * Return image height. - * - * accessor for testing; not part of interface - * - * @return int - */ - public function getHeight() - { - return ($this->resource !== null) ? $this->_getHeight() : $this->height; - } -} diff --git a/system4.4.6/Images/Handlers/GDHandler.php b/system4.4.6/Images/Handlers/GDHandler.php deleted file mode 100644 index f2cd5587..00000000 --- a/system4.4.6/Images/Handlers/GDHandler.php +++ /dev/null @@ -1,511 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Images\Handlers; - -use CodeIgniter\Images\Exceptions\ImageException; -use Config\Images; - -/** - * Image handler for GD package - */ -class GDHandler extends BaseHandler -{ - /** - * Constructor. - * - * @param Images|null $config - * - * @throws ImageException - */ - public function __construct($config = null) - { - parent::__construct($config); - - if (! extension_loaded('gd')) { - throw ImageException::forMissingExtension('GD'); // @codeCoverageIgnore - } - } - - /** - * Handles the rotation of an image resource. - * Doesn't save the image, but replaces the current resource. - */ - protected function _rotate(int $angle): bool - { - // Create the image handle - $srcImg = $this->createImage(); - - // Set the background color - // This won't work with transparent PNG files so we are - // going to have to figure out how to determine the color - // of the alpha channel in a future release. - - $white = imagecolorallocate($srcImg, 255, 255, 255); - - // Rotate it! - $destImg = imagerotate($srcImg, $angle, $white); - - // Kill the file handles - imagedestroy($srcImg); - - $this->resource = $destImg; - - return true; - } - - /** - * Flattens transparencies - * - * @return $this - */ - protected function _flatten(int $red = 255, int $green = 255, int $blue = 255) - { - $srcImg = $this->createImage(); - - if (function_exists('imagecreatetruecolor')) { - $create = 'imagecreatetruecolor'; - $copy = 'imagecopyresampled'; - } else { - $create = 'imagecreate'; - $copy = 'imagecopyresized'; - } - $dest = $create($this->width, $this->height); - - $matte = imagecolorallocate($dest, $red, $green, $blue); - - imagefilledrectangle($dest, 0, 0, $this->width, $this->height, $matte); - imagecopy($dest, $srcImg, 0, 0, 0, 0, $this->width, $this->height); - - // Kill the file handles - imagedestroy($srcImg); - - $this->resource = $dest; - - return $this; - } - - /** - * Flips an image along it's vertical or horizontal axis. - * - * @return $this - */ - protected function _flip(string $direction) - { - $srcImg = $this->createImage(); - - $angle = $direction === 'horizontal' ? IMG_FLIP_HORIZONTAL : IMG_FLIP_VERTICAL; - - imageflip($srcImg, $angle); - - $this->resource = $srcImg; - - return $this; - } - - /** - * Get GD version - * - * @return mixed - */ - public function getVersion() - { - if (function_exists('gd_info')) { - $gdVersion = @gd_info(); - - return preg_replace('/\D/', '', $gdVersion['GD Version']); - } - - return false; - } - - /** - * Resizes the image. - * - * @return GDHandler - */ - public function _resize(bool $maintainRatio = false) - { - return $this->process('resize'); - } - - /** - * Crops the image. - * - * @return GDHandler - */ - public function _crop() - { - return $this->process('crop'); - } - - /** - * Handles all of the grunt work of resizing, etc. - * - * @return $this - */ - protected function process(string $action) - { - $origWidth = $this->image()->origWidth; - $origHeight = $this->image()->origHeight; - - if ($action === 'crop') { - // Reassign the source width/height if cropping - $origWidth = $this->width; - $origHeight = $this->height; - - // Modify the "original" width/height to the new - // values so that methods that come after have the - // correct size to work with. - $this->image()->origHeight = $this->height; - $this->image()->origWidth = $this->width; - } - - // Create the image handle - $src = $this->createImage(); - - if (function_exists('imagecreatetruecolor')) { - $create = 'imagecreatetruecolor'; - $copy = 'imagecopyresampled'; - } else { - $create = 'imagecreate'; - $copy = 'imagecopyresized'; - } - - $dest = $create($this->width, $this->height); - - // for png and webp we can actually preserve transparency - if (in_array($this->image()->imageType, $this->supportTransparency, true)) { - imagealphablending($dest, false); - imagesavealpha($dest, true); - } - - $copy($dest, $src, 0, 0, (int) $this->xAxis, (int) $this->yAxis, $this->width, $this->height, $origWidth, $origHeight); - - imagedestroy($src); - $this->resource = $dest; - - return $this; - } - - /** - * Saves any changes that have been made to file. If no new filename is - * provided, the existing image is overwritten, otherwise a copy of the - * file is made at $target. - * - * Example: - * $image->resize(100, 200, true) - * ->save(); - * - * @param non-empty-string|null $target - */ - public function save(?string $target = null, int $quality = 90): bool - { - $original = $target; - $target = ($target === null || $target === '') ? $this->image()->getPathname() : $target; - - // If no new resource has been created, then we're - // simply copy the existing one. - if (empty($this->resource) && $quality === 100) { - if ($original === null) { - return true; - } - - $name = basename($target); - $path = pathinfo($target, PATHINFO_DIRNAME); - - return $this->image()->copy($path, $name); - } - - $this->ensureResource(); - - // for png and webp we can actually preserve transparency - if (in_array($this->image()->imageType, $this->supportTransparency, true)) { - imagepalettetotruecolor($this->resource); - imagealphablending($this->resource, false); - imagesavealpha($this->resource, true); - } - - switch ($this->image()->imageType) { - case IMAGETYPE_GIF: - if (! function_exists('imagegif')) { - throw ImageException::forInvalidImageCreate(lang('Images.gifNotSupported')); - } - - if (! @imagegif($this->resource, $target)) { - throw ImageException::forSaveFailed(); - } - break; - - case IMAGETYPE_JPEG: - if (! function_exists('imagejpeg')) { - throw ImageException::forInvalidImageCreate(lang('Images.jpgNotSupported')); - } - - if (! @imagejpeg($this->resource, $target, $quality)) { - throw ImageException::forSaveFailed(); - } - break; - - case IMAGETYPE_PNG: - if (! function_exists('imagepng')) { - throw ImageException::forInvalidImageCreate(lang('Images.pngNotSupported')); - } - - if (! @imagepng($this->resource, $target)) { - throw ImageException::forSaveFailed(); - } - break; - - case IMAGETYPE_WEBP: - if (! function_exists('imagewebp')) { - throw ImageException::forInvalidImageCreate(lang('Images.webpNotSupported')); - } - - if (! @imagewebp($this->resource, $target, $quality)) { - throw ImageException::forSaveFailed(); - } - break; - - default: - throw ImageException::forInvalidImageCreate(); - } - - imagedestroy($this->resource); - - chmod($target, $this->filePermissions); - - return true; - } - - /** - * Create Image Resource - * - * This simply creates an image resource handle - * based on the type of image being processed - * - * @return bool|resource - */ - protected function createImage(string $path = '', string $imageType = '') - { - if ($this->resource !== null) { - return $this->resource; - } - - if ($path === '') { - $path = $this->image()->getPathname(); - } - - if ($imageType === '') { - $imageType = $this->image()->imageType; - } - - return $this->getImageResource($path, $imageType); - } - - /** - * Make the image resource object if needed - */ - protected function ensureResource() - { - if ($this->resource === null) { - // if valid image type, make corresponding image resource - $this->resource = $this->getImageResource( - $this->image()->getPathname(), - $this->image()->imageType - ); - } - } - - /** - * Check if image type is supported and return image resource - * - * @param string $path Image path - * @param int $imageType Image type - * - * @return bool|resource - * - * @throws ImageException - */ - protected function getImageResource(string $path, int $imageType) - { - switch ($imageType) { - case IMAGETYPE_GIF: - if (! function_exists('imagecreatefromgif')) { - throw ImageException::forInvalidImageCreate(lang('Images.gifNotSupported')); - } - - return imagecreatefromgif($path); - - case IMAGETYPE_JPEG: - if (! function_exists('imagecreatefromjpeg')) { - throw ImageException::forInvalidImageCreate(lang('Images.jpgNotSupported')); - } - - return imagecreatefromjpeg($path); - - case IMAGETYPE_PNG: - if (! function_exists('imagecreatefrompng')) { - throw ImageException::forInvalidImageCreate(lang('Images.pngNotSupported')); - } - - return @imagecreatefrompng($path); - - case IMAGETYPE_WEBP: - if (! function_exists('imagecreatefromwebp')) { - throw ImageException::forInvalidImageCreate(lang('Images.webpNotSupported')); - } - - return imagecreatefromwebp($path); - - default: - throw ImageException::forInvalidImageCreate('Ima'); - } - } - - /** - * Add text overlay to an image. - */ - protected function _text(string $text, array $options = []) - { - // Reverse the vertical offset - // When the image is positioned at the bottom - // we don't want the vertical offset to push it - // further down. We want the reverse, so we'll - // invert the offset. Note: The horizontal - // offset flips itself automatically - - if ($options['vAlign'] === 'bottom') { - $options['vOffset'] *= -1; - } - - if ($options['hAlign'] === 'right') { - $options['hOffset'] *= -1; - } - - // Set font width and height - // These are calculated differently depending on - // whether we are using the true type font or not - if (! empty($options['fontPath'])) { - if (function_exists('imagettfbbox')) { - $temp = imagettfbbox($options['fontSize'], 0, $options['fontPath'], $text); - $temp = $temp[2] - $temp[0]; - - $fontwidth = $temp / strlen($text); - } else { - $fontwidth = $options['fontSize'] - ($options['fontSize'] / 4); - } - - $fontheight = $options['fontSize']; - } else { - $fontwidth = imagefontwidth($options['fontSize']); - $fontheight = imagefontheight($options['fontSize']); - } - - $options['fontheight'] = $fontheight; - $options['fontwidth'] = $fontwidth; - - // Set base X and Y axis values - $xAxis = $options['hOffset'] + $options['padding']; - $yAxis = $options['vOffset'] + $options['padding']; - - // Set vertical alignment - if ($options['vAlign'] === 'middle') { - // Don't apply padding when you're in the middle of the image. - $yAxis += ($this->image()->origHeight / 2) + ($fontheight / 2) - $options['padding'] - $fontheight - $options['shadowOffset']; - } elseif ($options['vAlign'] === 'bottom') { - $yAxis = ($this->image()->origHeight - $fontheight - $options['shadowOffset'] - ($fontheight / 2)) - $yAxis; - } - - // Set horizontal alignment - if ($options['hAlign'] === 'right') { - $xAxis += ($this->image()->origWidth - ($fontwidth * strlen($text)) - $options['shadowOffset']) - (2 * $options['padding']); - } elseif ($options['hAlign'] === 'center') { - $xAxis += floor(($this->image()->origWidth - ($fontwidth * strlen($text))) / 2); - } - - $options['xAxis'] = $xAxis; - $options['yAxis'] = $yAxis; - - if ($options['withShadow']) { - // Offset from text - $options['xShadow'] = $xAxis + $options['shadowOffset']; - $options['yShadow'] = $yAxis + $options['shadowOffset']; - - $this->textOverlay($text, $options, true); - } - - $this->textOverlay($text, $options); - } - - /** - * Handler-specific method for overlaying text on an image. - * - * @param bool $isShadow Whether we are drawing the dropshadow or actual text - */ - protected function textOverlay(string $text, array $options = [], bool $isShadow = false) - { - $src = $this->createImage(); - - /* Set RGB values for shadow - * - * Get the rest of the string and split it into 2-length - * hex values: - */ - $opacity = (int) ($options['opacity'] * 127); - - // Allow opacity to be applied to the text - imagealphablending($src, true); - - $color = $isShadow ? $options['shadowColor'] : $options['color']; - - // shorthand hex, #f00 - if (strlen($color) === 3) { - $color = implode('', array_map('str_repeat', str_split($color), [2, 2, 2])); - } - - $color = str_split(substr($color, 0, 6), 2); - $color = imagecolorclosestalpha($src, hexdec($color[0]), hexdec($color[1]), hexdec($color[2]), $opacity); - - $xAxis = $isShadow ? $options['xShadow'] : $options['xAxis']; - $yAxis = $isShadow ? $options['yShadow'] : $options['yAxis']; - - // Add the shadow to the source image - if (! empty($options['fontPath'])) { - // We have to add fontheight because imagettftext locates the bottom left corner, not top-left corner. - imagettftext($src, $options['fontSize'], 0, (int) $xAxis, (int) ($yAxis + $options['fontheight']), $color, $options['fontPath'], $text); - } else { - imagestring($src, (int) $options['fontSize'], (int) $xAxis, (int) $yAxis, $text, $color); - } - - $this->resource = $src; - } - - /** - * Return image width. - * - * @return int - */ - public function _getWidth() - { - return imagesx($this->resource); - } - - /** - * Return image height. - * - * @return int - */ - public function _getHeight() - { - return imagesy($this->resource); - } -} diff --git a/system4.4.6/Images/Handlers/ImageMagickHandler.php b/system4.4.6/Images/Handlers/ImageMagickHandler.php deleted file mode 100644 index cb8ce9ba..00000000 --- a/system4.4.6/Images/Handlers/ImageMagickHandler.php +++ /dev/null @@ -1,479 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Images\Handlers; - -use CodeIgniter\I18n\Time; -use CodeIgniter\Images\Exceptions\ImageException; -use Config\Images; -use Exception; -use Imagick; - -/** - * Class ImageMagickHandler - * - * FIXME - This needs conversion & unit testing, to use the imagick extension - */ -class ImageMagickHandler extends BaseHandler -{ - /** - * Stores image resource in memory. - * - * @var string|null - */ - protected $resource; - - /** - * Constructor. - * - * @param Images $config - * - * @throws ImageException - */ - public function __construct($config = null) - { - parent::__construct($config); - - if (! (extension_loaded('imagick') || class_exists(Imagick::class))) { - throw ImageException::forMissingExtension('IMAGICK'); // @codeCoverageIgnore - } - } - - /** - * Handles the actual resizing of the image. - * - * @return ImageMagickHandler - * - * @throws Exception - */ - public function _resize(bool $maintainRatio = false) - { - $source = ! empty($this->resource) ? $this->resource : $this->image()->getPathname(); - $destination = $this->getResourcePath(); - - $escape = '\\'; - - if (PHP_OS_FAMILY === 'Windows') { - $escape = ''; - } - - $action = $maintainRatio === true - ? ' -resize ' . ($this->width ?? 0) . 'x' . ($this->height ?? 0) . ' "' . $source . '" "' . $destination . '"' - : ' -resize ' . ($this->width ?? 0) . 'x' . ($this->height ?? 0) . "{$escape}! \"" . $source . '" "' . $destination . '"'; - - $this->process($action); - - return $this; - } - - /** - * Crops the image. - * - * @return bool|ImageMagickHandler - * - * @throws Exception - */ - public function _crop() - { - $source = ! empty($this->resource) ? $this->resource : $this->image()->getPathname(); - $destination = $this->getResourcePath(); - - $extent = ' '; - if ($this->xAxis >= $this->width || $this->yAxis > $this->height) { - $extent = ' -background transparent -extent ' . ($this->width ?? 0) . 'x' . ($this->height ?? 0) . ' '; - } - - $action = ' -crop ' . ($this->width ?? 0) . 'x' . ($this->height ?? 0) . '+' . ($this->xAxis ?? 0) . '+' . ($this->yAxis ?? 0) . $extent . escapeshellarg($source) . ' ' . escapeshellarg($destination); - - $this->process($action); - - return $this; - } - - /** - * Handles the rotation of an image resource. - * Doesn't save the image, but replaces the current resource. - * - * @return $this - * - * @throws Exception - */ - protected function _rotate(int $angle) - { - $angle = '-rotate ' . $angle; - - $source = ! empty($this->resource) ? $this->resource : $this->image()->getPathname(); - $destination = $this->getResourcePath(); - - $action = ' ' . $angle . ' ' . escapeshellarg($source) . ' ' . escapeshellarg($destination); - - $this->process($action); - - return $this; - } - - /** - * Flattens transparencies, default white background - * - * @return $this - * - * @throws Exception - */ - protected function _flatten(int $red = 255, int $green = 255, int $blue = 255) - { - $flatten = "-background 'rgb({$red},{$green},{$blue})' -flatten"; - - $source = ! empty($this->resource) ? $this->resource : $this->image()->getPathname(); - $destination = $this->getResourcePath(); - - $action = ' ' . $flatten . ' ' . escapeshellarg($source) . ' ' . escapeshellarg($destination); - - $this->process($action); - - return $this; - } - - /** - * Flips an image along it's vertical or horizontal axis. - * - * @return $this - * - * @throws Exception - */ - protected function _flip(string $direction) - { - $angle = $direction === 'horizontal' ? '-flop' : '-flip'; - - $source = ! empty($this->resource) ? $this->resource : $this->image()->getPathname(); - $destination = $this->getResourcePath(); - - $action = ' ' . $angle . ' ' . escapeshellarg($source) . ' ' . escapeshellarg($destination); - - $this->process($action); - - return $this; - } - - /** - * Get driver version - */ - public function getVersion(): string - { - $result = $this->process('-version'); - - // The first line has the version in it... - preg_match('/(ImageMagick\s[\S]+)/', $result[0], $matches); - - return str_replace('ImageMagick ', '', $matches[0]); - } - - /** - * Handles all of the grunt work of resizing, etc. - * - * @return array Lines of output from shell command - * - * @throws Exception - */ - protected function process(string $action, int $quality = 100): array - { - // Do we have a vaild library path? - if (empty($this->config->libraryPath)) { - throw ImageException::forInvalidImageLibraryPath($this->config->libraryPath); - } - - if ($action !== '-version') { - $this->supportedFormatCheck(); - } - - if (! preg_match('/convert$/i', $this->config->libraryPath)) { - $this->config->libraryPath = rtrim($this->config->libraryPath, '/') . '/convert'; - } - - $cmd = $this->config->libraryPath; - $cmd .= $action === '-version' ? ' ' . $action : ' -quality ' . $quality . ' ' . $action; - - $retval = 1; - $output = []; - // exec() might be disabled - if (function_usable('exec')) { - @exec($cmd, $output, $retval); - } - - // Did it work? - if ($retval > 0) { - throw ImageException::forImageProcessFailed(); - } - - return $output; - } - - /** - * Saves any changes that have been made to file. If no new filename is - * provided, the existing image is overwritten, otherwise a copy of the - * file is made at $target. - * - * Example: - * $image->resize(100, 200, true) - * ->save(); - * - * @param non-empty-string|null $target - */ - public function save(?string $target = null, int $quality = 90): bool - { - $original = $target; - $target = ($target === null || $target === '') ? $this->image()->getPathname() : $target; - - // If no new resource has been created, then we're - // simply copy the existing one. - if (empty($this->resource) && $quality === 100) { - if ($original === null) { - return true; - } - - $name = basename($target); - $path = pathinfo($target, PATHINFO_DIRNAME); - - return $this->image()->copy($path, $name); - } - - $this->ensureResource(); - - // Copy the file through ImageMagick so that it has - // a chance to convert file format. - $action = escapeshellarg($this->resource) . ' ' . escapeshellarg($target); - - $this->process($action, $quality); - - unlink($this->resource); - - return true; - } - - /** - * Get Image Resource - * - * This simply creates an image resource handle - * based on the type of image being processed. - * Since ImageMagick is used on the cli, we need to - * ensure we have a temporary file on the server - * that we can use. - * - * To ensure we can use all features, like transparency, - * during the process, we'll use a PNG as the temp file type. - * - * @return string - * - * @throws Exception - */ - protected function getResourcePath() - { - if ($this->resource !== null) { - return $this->resource; - } - - $this->resource = WRITEPATH . 'cache/' . Time::now()->getTimestamp() . '_' . bin2hex(random_bytes(10)) . '.png'; - - $name = basename($this->resource); - $path = pathinfo($this->resource, PATHINFO_DIRNAME); - - $this->image()->copy($path, $name); - - return $this->resource; - } - - /** - * Make the image resource object if needed - * - * @return void - * - * @throws Exception - */ - protected function ensureResource() - { - $this->getResourcePath(); - - $this->supportedFormatCheck(); - } - - /** - * Check if given image format is supported - * - * @return void - * - * @throws ImageException - */ - protected function supportedFormatCheck() - { - switch ($this->image()->imageType) { - case IMAGETYPE_WEBP: - if (! in_array('WEBP', Imagick::queryFormats(), true)) { - throw ImageException::forInvalidImageCreate(lang('images.webpNotSupported')); - } - break; - } - } - - /** - * Handler-specific method for overlaying text on an image. - * - * @return void - * - * @throws Exception - */ - protected function _text(string $text, array $options = []) - { - $xAxis = 0; - $yAxis = 0; - $gravity = ''; - $cmd = ''; - - // Reverse the vertical offset - // When the image is positioned at the bottom - // we don't want the vertical offset to push it - // further down. We want the reverse, so we'll - // invert the offset. Note: The horizontal - // offset flips itself automatically - if ($options['vAlign'] === 'bottom') { - $options['vOffset'] *= -1; - } - - if ($options['hAlign'] === 'right') { - $options['hOffset'] *= -1; - } - - // Font - if (! empty($options['fontPath'])) { - $cmd .= " -font '{$options['fontPath']}'"; - } - - if (isset($options['hAlign'], $options['vAlign'])) { - switch ($options['hAlign']) { - case 'left': - $xAxis = $options['hOffset'] + $options['padding']; - $yAxis = $options['vOffset'] + $options['padding']; - $gravity = $options['vAlign'] === 'top' ? 'NorthWest' : 'West'; - if ($options['vAlign'] === 'bottom') { - $gravity = 'SouthWest'; - $yAxis = $options['vOffset'] - $options['padding']; - } - break; - - case 'center': - $xAxis = $options['hOffset'] + $options['padding']; - $yAxis = $options['vOffset'] + $options['padding']; - $gravity = $options['vAlign'] === 'top' ? 'North' : 'Center'; - if ($options['vAlign'] === 'bottom') { - $yAxis = $options['vOffset'] - $options['padding']; - $gravity = 'South'; - } - break; - - case 'right': - $xAxis = $options['hOffset'] - $options['padding']; - $yAxis = $options['vOffset'] + $options['padding']; - $gravity = $options['vAlign'] === 'top' ? 'NorthEast' : 'East'; - if ($options['vAlign'] === 'bottom') { - $gravity = 'SouthEast'; - $yAxis = $options['vOffset'] - $options['padding']; - } - break; - } - - $xAxis = $xAxis >= 0 ? '+' . $xAxis : $xAxis; - $yAxis = $yAxis >= 0 ? '+' . $yAxis : $yAxis; - - $cmd .= " -gravity {$gravity} -geometry {$xAxis}{$yAxis}"; - } - - // Color - if (isset($options['color'])) { - [$r, $g, $b] = sscanf("#{$options['color']}", '#%02x%02x%02x'); - - $cmd .= " -fill 'rgba({$r},{$g},{$b},{$options['opacity']})'"; - } - - // Font Size - use points.... - if (isset($options['fontSize'])) { - $cmd .= " -pointsize {$options['fontSize']}"; - } - - // Text - $cmd .= " -annotate 0 '{$text}'"; - - $source = ! empty($this->resource) ? $this->resource : $this->image()->getPathname(); - $destination = $this->getResourcePath(); - - $cmd = " '{$source}' {$cmd} '{$destination}'"; - - $this->process($cmd); - } - - /** - * Return the width of an image. - * - * @return int - */ - public function _getWidth() - { - return imagesx(imagecreatefromstring(file_get_contents($this->resource))); - } - - /** - * Return the height of an image. - * - * @return int - */ - public function _getHeight() - { - return imagesy(imagecreatefromstring(file_get_contents($this->resource))); - } - - /** - * Reads the EXIF information from the image and modifies the orientation - * so that displays correctly in the browser. This is especially an issue - * with images taken by smartphones who always store the image up-right, - * but set the orientation flag to display it correctly. - * - * @param bool $silent If true, will ignore exceptions when PHP doesn't support EXIF. - * - * @return $this - */ - public function reorient(bool $silent = false) - { - $orientation = $this->getEXIF('Orientation', $silent); - - switch ($orientation) { - case 2: - return $this->flip('horizontal'); - - case 3: - return $this->rotate(180); - - case 4: - return $this->rotate(180)->flip('horizontal'); - - case 5: - return $this->rotate(90)->flip('horizontal'); - - case 6: - return $this->rotate(90); - - case 7: - return $this->rotate(270)->flip('horizontal'); - - case 8: - return $this->rotate(270); - - default: - return $this; - } - } -} diff --git a/system4.4.6/Images/Image.php b/system4.4.6/Images/Image.php deleted file mode 100644 index 291ad002..00000000 --- a/system4.4.6/Images/Image.php +++ /dev/null @@ -1,135 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Images; - -use CodeIgniter\Files\File; -use CodeIgniter\Images\Exceptions\ImageException; - -/** - * Encapsulation of an Image file - * - * @see \CodeIgniter\Images\ImageTest - */ -class Image extends File -{ - /** - * The original image width in pixels. - * - * @var float|int - */ - public $origWidth; - - /** - * The original image height in pixels. - * - * @var float|int - */ - public $origHeight; - - /** - * The image type constant. - * - * @see http://php.net/manual/en/image.constants.php - * - * @var int - */ - public $imageType; - - /** - * attributes string with size info: - * 'height="100" width="200"' - * - * @var string - */ - public $sizeStr; - - /** - * The image's mime type, i.e. image/jpeg - * - * @var string - */ - public $mime; - - /** - * Makes a copy of itself to the new location. If no filename is provided - * it will use the existing filename. - * - * @param string $targetPath The directory to store the file in - * @param string|null $targetName The new name of the copied file. - * @param int $perms File permissions to be applied after copy. - */ - public function copy(string $targetPath, ?string $targetName = null, int $perms = 0644): bool - { - $targetPath = rtrim($targetPath, '/ ') . '/'; - - $targetName ??= $this->getFilename(); - - if (empty($targetName)) { - throw ImageException::forInvalidFile($targetName); - } - - if (! is_dir($targetPath)) { - mkdir($targetPath, 0755, true); - } - - if (! copy($this->getPathname(), "{$targetPath}{$targetName}")) { - throw ImageException::forCopyError($targetPath); - } - - chmod("{$targetPath}/{$targetName}", $perms); - - return true; - } - - /** - * Get image properties - * - * A helper function that gets info about the file - * - * @return array|bool - */ - public function getProperties(bool $return = false) - { - $path = $this->getPathname(); - - if (! $vals = getimagesize($path)) { - throw ImageException::forFileNotSupported(); - } - - $types = [ - IMAGETYPE_GIF => 'gif', - IMAGETYPE_JPEG => 'jpeg', - IMAGETYPE_PNG => 'png', - IMAGETYPE_WEBP => 'webp', - ]; - - $mime = 'image/' . ($types[$vals[2]] ?? 'jpg'); - - if ($return === true) { - return [ - 'width' => $vals[0], - 'height' => $vals[1], - 'image_type' => $vals[2], - 'size_str' => $vals[3], - 'mime_type' => $mime, - ]; - } - - $this->origWidth = $vals[0]; - $this->origHeight = $vals[1]; - $this->imageType = $vals[2]; - $this->sizeStr = $vals[3]; - $this->mime = $mime; - - return true; - } -} diff --git a/system4.4.6/Images/ImageHandlerInterface.php b/system4.4.6/Images/ImageHandlerInterface.php deleted file mode 100644 index 76a016b0..00000000 --- a/system4.4.6/Images/ImageHandlerInterface.php +++ /dev/null @@ -1,140 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Images; - -/** - * Expected behavior of an Image handler - */ -interface ImageHandlerInterface -{ - /** - * Resize the image - * - * @param bool $maintainRatio If true, will get the closest match possible while keeping aspect ratio true. - * - * @return $this - */ - public function resize(int $width, int $height, bool $maintainRatio = false, string $masterDim = 'auto'); - - /** - * Crops the image to the desired height and width. If one of the height/width values - * is not provided, that value will be set the appropriate value based on offsets and - * image dimensions. - * - * @param int|null $x X-axis coord to start cropping from the left of image - * @param int|null $y Y-axis coord to start cropping from the top of image - * - * @return $this - */ - public function crop(?int $width = null, ?int $height = null, ?int $x = null, ?int $y = null, bool $maintainRatio = false, string $masterDim = 'auto'); - - /** - * Changes the stored image type to indicate the new file format to use when saving. - * Does not touch the actual resource. - * - * @param int $imageType A PHP imagetype constant, e.g. https://www.php.net/manual/en/function.image-type-to-mime-type.php - * - * @return $this - */ - public function convert(int $imageType); - - /** - * Rotates the image on the current canvas. - * - * @return $this - */ - public function rotate(float $angle); - - /** - * Flattens transparencies, default white background - * - * @return $this - */ - public function flatten(int $red = 255, int $green = 255, int $blue = 255); - - /** - * Reads the EXIF information from the image and modifies the orientation - * so that displays correctly in the browser. - * - * @return ImageHandlerInterface - */ - public function reorient(); - - /** - * Retrieve the EXIF information from the image, if possible. Returns - * an array of the information, or null if nothing can be found. - * - * @param string|null $key If specified, will only return this piece of EXIF data. - * - * @return mixed - */ - public function getEXIF(?string $key = null); - - /** - * Flip an image horizontally or vertically - * - * @param string $dir Direction to flip, either 'vertical' or 'horizontal' - * - * @return $this - */ - public function flip(string $dir = 'vertical'); - - /** - * Combine cropping and resizing into a single command. - * - * Supported positions: - * - top-left - * - top - * - top-right - * - left - * - center - * - right - * - bottom-left - * - bottom - * - bottom-right - * - * @return $this - */ - public function fit(int $width, int $height, string $position); - - /** - * Overlays a string of text over the image. - * - * Valid options: - * - * - color Text Color (hex number) - * - shadowColor Color of the shadow (hex number) - * - hAlign Horizontal alignment: left, center, right - * - vAlign Vertical alignment: top, middle, bottom - * - hOffset - * - vOffset - * - fontPath - * - fontSize - * - shadowOffset - * - * @return $this - */ - public function text(string $text, array $options = []); - - /** - * Saves any changes that have been made to file. - * - * Example: - * $image->resize(100, 200, true) - * ->save($target); - * - * @param non-empty-string|null $target The path to save the file to. - * - * @return bool - */ - public function save(?string $target = null, int $quality = 90); -} diff --git a/system4.4.6/Language/Language.php b/system4.4.6/Language/Language.php deleted file mode 100644 index 8633f8a2..00000000 --- a/system4.4.6/Language/Language.php +++ /dev/null @@ -1,274 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Language; - -use Config\Services; -use InvalidArgumentException; -use MessageFormatter; - -/** - * Handle system messages and localization. - * - * Locale-based, built on top of PHP internationalization. - * - * @see \CodeIgniter\Language\LanguageTest - */ -class Language -{ - /** - * Stores the retrieved language lines - * from files for faster retrieval on - * second use. - * - * @var array - */ - protected $language = []; - - /** - * The current language/locale to work with. - * - * @var string - */ - protected $locale; - - /** - * Boolean value whether the intl - * libraries exist on the system. - * - * @var bool - */ - protected $intlSupport = false; - - /** - * Stores filenames that have been - * loaded so that we don't load them again. - * - * @var array - */ - protected $loadedFiles = []; - - public function __construct(string $locale) - { - $this->locale = $locale; - - if (class_exists(MessageFormatter::class)) { - $this->intlSupport = true; - } - } - - /** - * Sets the current locale to use when performing string lookups. - * - * @return $this - */ - public function setLocale(?string $locale = null) - { - if ($locale !== null) { - $this->locale = $locale; - } - - return $this; - } - - public function getLocale(): string - { - return $this->locale; - } - - /** - * Parses the language string for a file, loads the file, if necessary, - * getting the line. - * - * @return list<string>|string - */ - public function getLine(string $line, array $args = []) - { - // if no file is given, just parse the line - if (strpos($line, '.') === false) { - return $this->formatMessage($line, $args); - } - - // Parse out the file name and the actual alias. - // Will load the language file and strings. - [$file, $parsedLine] = $this->parseLine($line, $this->locale); - - $output = $this->getTranslationOutput($this->locale, $file, $parsedLine); - - if ($output === null && strpos($this->locale, '-')) { - [$locale] = explode('-', $this->locale, 2); - - [$file, $parsedLine] = $this->parseLine($line, $locale); - - $output = $this->getTranslationOutput($locale, $file, $parsedLine); - } - - // if still not found, try English - if ($output === null) { - [$file, $parsedLine] = $this->parseLine($line, 'en'); - - $output = $this->getTranslationOutput('en', $file, $parsedLine); - } - - $output ??= $line; - - return $this->formatMessage($output, $args); - } - - /** - * @return array|string|null - */ - protected function getTranslationOutput(string $locale, string $file, string $parsedLine) - { - $output = $this->language[$locale][$file][$parsedLine] ?? null; - if ($output !== null) { - return $output; - } - - foreach (explode('.', $parsedLine) as $row) { - if (! isset($current)) { - $current = $this->language[$locale][$file] ?? null; - } - - $output = $current[$row] ?? null; - if (is_array($output)) { - $current = $output; - } - } - - if ($output !== null) { - return $output; - } - - $row = current(explode('.', $parsedLine)); - $key = substr($parsedLine, strlen($row) + 1); - - return $this->language[$locale][$file][$row][$key] ?? null; - } - - /** - * Parses the language string which should include the - * filename as the first segment (separated by period). - */ - protected function parseLine(string $line, string $locale): array - { - $file = substr($line, 0, strpos($line, '.')); - $line = substr($line, strlen($file) + 1); - - if (! isset($this->language[$locale][$file]) || ! array_key_exists($line, $this->language[$locale][$file])) { - $this->load($file, $locale); - } - - return [$file, $line]; - } - - /** - * Advanced message formatting. - * - * @param array|string $message - * @param string[] $args - * - * @return array|string - */ - protected function formatMessage($message, array $args = []) - { - if (! $this->intlSupport || $args === []) { - return $message; - } - - if (is_array($message)) { - foreach ($message as $index => $value) { - $message[$index] = $this->formatMessage($value, $args); - } - - return $message; - } - - $formatted = MessageFormatter::formatMessage($this->locale, $message, $args); - if ($formatted === false) { - throw new InvalidArgumentException( - lang('Language.invalidMessageFormat', [$message, implode(',', $args)]) - ); - } - - return $formatted; - } - - /** - * Loads a language file in the current locale. If $return is true, - * will return the file's contents, otherwise will merge with - * the existing language lines. - * - * @return array|void - */ - protected function load(string $file, string $locale, bool $return = false) - { - if (! array_key_exists($locale, $this->loadedFiles)) { - $this->loadedFiles[$locale] = []; - } - - if (in_array($file, $this->loadedFiles[$locale], true)) { - // Don't load it more than once. - return []; - } - - if (! array_key_exists($locale, $this->language)) { - $this->language[$locale] = []; - } - - if (! array_key_exists($file, $this->language[$locale])) { - $this->language[$locale][$file] = []; - } - - $path = "Language/{$locale}/{$file}.php"; - - $lang = $this->requireFile($path); - - if ($return) { - return $lang; - } - - $this->loadedFiles[$locale][] = $file; - - // Merge our string - $this->language[$locale][$file] = $lang; - } - - /** - * A simple method for including files that can be - * overridden during testing. - */ - protected function requireFile(string $path): array - { - $files = Services::locator()->search($path, 'php', false); - $strings = []; - - foreach ($files as $file) { - // On some OS's we were seeing failures - // on this command returning boolean instead - // of array during testing, so we've removed - // the require_once for now. - if (is_file($file)) { - $strings[] = require $file; - } - } - - if (isset($strings[1])) { - $string = array_shift($strings); - - $strings = array_replace_recursive($string, ...$strings); - } elseif (isset($strings[0])) { - $strings = $strings[0]; - } - - return $strings; - } -} diff --git a/system4.4.6/Language/en/CLI.php b/system4.4.6/Language/en/CLI.php deleted file mode 100644 index edef33a7..00000000 --- a/system4.4.6/Language/en/CLI.php +++ /dev/null @@ -1,52 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// CLI language settings -return [ - 'altCommandPlural' => 'Did you mean one of these?', - 'altCommandSingular' => 'Did you mean this?', - 'commandNotFound' => 'Command "{0}" not found.', - 'generator' => [ - 'cancelOperation' => 'Operation has been cancelled.', - 'className' => [ - 'cell' => 'Cell class name', - 'command' => 'Command class name', - 'config' => 'Config class name', - 'controller' => 'Controller class name', - 'default' => 'Class name', - 'entity' => 'Entity class name', - 'filter' => 'Filter class name', - 'migration' => 'Migration class name', - 'model' => 'Model class name', - 'seeder' => 'Seeder class name', - 'validation' => 'Validation class name', - ], - 'commandType' => 'Command type', - 'databaseGroup' => 'Database group', - 'fileCreate' => 'File created: {0}', - 'fileError' => 'Error while creating file: "{0}"', - 'fileExist' => 'File exists: "{0}"', - 'fileOverwrite' => 'File overwritten: "{0}"', - 'parentClass' => 'Parent class', - 'returnType' => 'Return type', - 'tableName' => 'Table name', - 'usingCINamespace' => 'Warning: Using the "CodeIgniter" namespace will generate the file in the system directory.', - 'viewName' => [ - 'cell' => 'Cell view name', - ], - ], - 'helpArguments' => 'Arguments:', - 'helpDescription' => 'Description:', - 'helpOptions' => 'Options:', - 'helpUsage' => 'Usage:', - 'invalidColor' => 'Invalid "{0}" color: "{1}".', - 'namespaceNotDefined' => 'Namespace "{0}" is not defined.', -]; diff --git a/system4.4.6/Language/en/Cache.php b/system4.4.6/Language/en/Cache.php deleted file mode 100644 index d2abc9be..00000000 --- a/system4.4.6/Language/en/Cache.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// Cache language settings -return [ - 'unableToWrite' => 'Cache unable to write to "{0}".', - 'invalidHandlers' => 'Cache config must have an array of $validHandlers.', - 'noBackup' => 'Cache config must have a handler and backupHandler set.', - 'handlerNotFound' => 'Cache config has an invalid handler or backup handler specified.', -]; diff --git a/system4.4.6/Language/en/Cast.php b/system4.4.6/Language/en/Cast.php deleted file mode 100644 index 46132b0e..00000000 --- a/system4.4.6/Language/en/Cast.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// Cast language settings -return [ - 'baseCastMissing' => 'The "{0}" class must inherit the "CodeIgniter\Entity\Cast\BaseCast" class.', - 'invalidCastMethod' => 'The "{0}" is invalid cast method, valid methods are: ["get", "set"].', - 'invalidTimestamp' => 'Type casting "timestamp" expects a correct timestamp.', - 'jsonErrorCtrlChar' => 'Unexpected control character found.', - 'jsonErrorDepth' => 'Maximum stack depth exceeded.', - 'jsonErrorStateMismatch' => 'Underflow or the modes mismatch.', - 'jsonErrorSyntax' => 'Syntax error, malformed JSON.', - 'jsonErrorUnknown' => 'Unknown error.', - 'jsonErrorUtf8' => 'Malformed UTF-8 characters, possibly incorrectly encoded.', -]; diff --git a/system4.4.6/Language/en/Cookie.php b/system4.4.6/Language/en/Cookie.php deleted file mode 100644 index 3de21a0f..00000000 --- a/system4.4.6/Language/en/Cookie.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// Cookie language settings -return [ - 'invalidExpiresTime' => 'Invalid "{0}" type for "Expires" attribute. Expected: string, integer, DateTimeInterface object.', - 'invalidExpiresValue' => 'The cookie expiration time is not valid.', - 'invalidCookieName' => 'The cookie name "{0}" contains invalid characters.', - 'emptyCookieName' => 'The cookie name cannot be empty.', - 'invalidSecurePrefix' => 'Using the "__Secure-" prefix requires setting the "Secure" attribute.', - 'invalidHostPrefix' => 'Using the "__Host-" prefix must be set with the "Secure" flag, must not have a "Domain" attribute, and the "Path" is set to "/".', - 'invalidSameSite' => 'The SameSite value must be None, Lax, Strict or a blank string, {0} given.', - 'invalidSameSiteNone' => 'Using the "SameSite=None" attribute requires setting the "Secure" attribute.', - 'invalidCookieInstance' => '"{0}" class expected cookies array to be instances of "{1}" but got "{2}" at index {3}.', - 'unknownCookieInstance' => 'Cookie object with name "{0}" and prefix "{1}" was not found in the collection.', -]; diff --git a/system4.4.6/Language/en/Core.php b/system4.4.6/Language/en/Core.php deleted file mode 100644 index 1adfbe44..00000000 --- a/system4.4.6/Language/en/Core.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// Core language settings -return [ - 'copyError' => 'An error was encountered while attempting to replace the file "{0}". Please make sure your file directory is writable.', - 'enabledZlibOutputCompression' => 'Your zlib.output_compression ini directive is turned on. This will not work well with output buffers.', - 'invalidFile' => 'Invalid file: "{0}"', - 'invalidDirectory' => 'Directory does not exist: "{0}"', - 'invalidPhpVersion' => 'Your PHP version must be {0} or higher to run CodeIgniter. Current version: {1}', - 'missingExtension' => 'The framework needs the following extension(s) installed and loaded: "{0}".', - 'noHandlers' => '"{0}" must provide at least one Handler.', -]; diff --git a/system4.4.6/Language/en/Database.php b/system4.4.6/Language/en/Database.php deleted file mode 100644 index f0410e74..00000000 --- a/system4.4.6/Language/en/Database.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// Database language settings -return [ - 'invalidEvent' => '"{0}" is not a valid Model Event callback.', - 'invalidArgument' => 'You must provide a valid "{0}".', - 'invalidAllowedFields' => 'Allowed fields must be specified for model: "{0}"', - 'emptyDataset' => 'There is no data to {0}.', - 'emptyPrimaryKey' => 'There is no primary key defined when trying to make {0}.', - 'failGetFieldData' => 'Failed to get field data from database.', - 'failGetIndexData' => 'Failed to get index data from database.', - 'failGetForeignKeyData' => 'Failed to get foreign key data from database.', - 'parseStringFail' => 'Parsing key string failed.', - 'featureUnavailable' => 'This feature is not available for the database you are using.', - 'tableNotFound' => 'Table "{0}" was not found in the current database.', - 'noPrimaryKey' => '"{0}" model class does not specify a Primary Key.', - 'noDateFormat' => '"{0}" model class does not have a valid dateFormat.', - 'fieldNotExists' => 'Field "{0}" not found.', - 'forEmptyInputGiven' => 'Empty statement is given for the field "{0}"', - 'forFindColumnHaveMultipleColumns' => 'Only single column allowed in Column name.', - 'methodNotAvailable' => 'You cannot use "{1}" in "{0}". This is a method of the Query Builder Class.', -]; diff --git a/system4.4.6/Language/en/Email.php b/system4.4.6/Language/en/Email.php deleted file mode 100644 index 6938b16b..00000000 --- a/system4.4.6/Language/en/Email.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// Email language settings -return [ - 'mustBeArray' => 'The email validation method must be passed an array.', - 'invalidAddress' => 'Invalid email address: "{0}"', - 'attachmentMissing' => 'Unable to locate the following email attachment: "{0}"', - 'attachmentUnreadable' => 'Unable to open this attachment: "{0}"', - 'noFrom' => 'Cannot send mail with no "From" header.', - 'noRecipients' => 'You must include recipients: To, Cc, or Bcc', - 'sendFailurePHPMail' => 'Unable to send email using PHP mail(). Your server might not be configured to send mail using this method.', - 'sendFailureSendmail' => 'Unable to send email using Sendmail. Your server might not be configured to send mail using this method.', - 'sendFailureSmtp' => 'Unable to send email using SMTP. Your server might not be configured to send mail using this method.', - 'sent' => 'Your message has been successfully sent using the following protocol: {0}', - 'noSocket' => 'Unable to open a socket to Sendmail. Please check settings.', - 'noHostname' => 'You did not specify a SMTP hostname.', - 'SMTPError' => 'The following SMTP error was encountered: {0}', - 'noSMTPAuth' => 'Error: You must assign an SMTP username and password.', - 'failedSMTPLogin' => 'Failed to send AUTH LOGIN command. Error: {0}', - 'SMTPAuthUsername' => 'Failed to authenticate username. Error: {0}', - 'SMTPAuthPassword' => 'Failed to authenticate password. Error: {0}', - 'SMTPDataFailure' => 'Unable to send data: {0}', - 'exitStatus' => 'Exit status code: {0}', -]; diff --git a/system4.4.6/Language/en/Encryption.php b/system4.4.6/Language/en/Encryption.php deleted file mode 100644 index c0e7cb82..00000000 --- a/system4.4.6/Language/en/Encryption.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// Encryption language settings -return [ - 'noDriverRequested' => 'No driver requested; Miss Daisy will be so upset!', - 'noHandlerAvailable' => 'Unable to find an available "{0}" encryption handler.', - 'unKnownHandler' => '"{0}" cannot be configured.', - 'starterKeyNeeded' => 'Encrypter needs a starter key.', - 'authenticationFailed' => 'Decrypting: authentication failed.', - 'encryptionFailed' => 'Encryption failed.', -]; diff --git a/system4.4.6/Language/en/Errors.php b/system4.4.6/Language/en/Errors.php deleted file mode 100644 index 55a130a9..00000000 --- a/system4.4.6/Language/en/Errors.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// Errors language settings -return [ - 'pageNotFound' => '404 - Page Not Found', - 'sorryCannotFind' => 'Sorry! Cannot seem to find the page you were looking for.', - 'whoops' => 'Whoops!', - 'weHitASnag' => 'We seem to have hit a snag. Please try again later...', -]; diff --git a/system4.4.6/Language/en/Fabricator.php b/system4.4.6/Language/en/Fabricator.php deleted file mode 100644 index bfedec74..00000000 --- a/system4.4.6/Language/en/Fabricator.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// Fabricator language settings -return [ - 'invalidModel' => 'Invalid model supplied for fabrication.', - 'missingFormatters' => 'No valid formatters defined.', - 'createFailed' => 'Fabricator failed to insert on table "{0}": {1}', -]; diff --git a/system4.4.6/Language/en/Files.php b/system4.4.6/Language/en/Files.php deleted file mode 100644 index 4506abe6..00000000 --- a/system4.4.6/Language/en/Files.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// Files language settings -return [ - 'fileNotFound' => 'File not found: "{0}"', - 'cannotMove' => 'Could not move file "{0}" to "{1}". Reason: {2}', - 'expectedDirectory' => '{0} expects a valid directory.', - 'expectedFile' => '{0} expects a valid file.', -]; diff --git a/system4.4.6/Language/en/Filters.php b/system4.4.6/Language/en/Filters.php deleted file mode 100644 index aca478ce..00000000 --- a/system4.4.6/Language/en/Filters.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// Filters language settings -return [ - 'noFilter' => '"{0}" filter must have a matching alias defined.', - 'incorrectInterface' => '"{0}" must implement CodeIgniter\Filters\FilterInterface.', -]; diff --git a/system4.4.6/Language/en/Format.php b/system4.4.6/Language/en/Format.php deleted file mode 100644 index 7c545342..00000000 --- a/system4.4.6/Language/en/Format.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// Format language settings -return [ - 'invalidFormatter' => '"{0}" is not a valid Formatter class.', - 'invalidJSON' => 'Failed to parse JSON string. Error: {0}', - 'invalidMime' => 'No Formatter defined for mime type: "{0}".', - 'missingExtension' => 'The SimpleXML extension is required to format XML.', -]; diff --git a/system4.4.6/Language/en/HTTP.php b/system4.4.6/Language/en/HTTP.php deleted file mode 100644 index ee5ca4f8..00000000 --- a/system4.4.6/Language/en/HTTP.php +++ /dev/null @@ -1,81 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// HTTP language settings -return [ - // CurlRequest - 'missingCurl' => 'CURL must be enabled to use the CURLRequest class.', - 'invalidSSLKey' => 'Cannot set SSL Key. "{0}" is not a valid file.', - 'sslCertNotFound' => 'SSL certificate not found at: "{0}"', - 'curlError' => '{0} : {1}', - - // IncomingRequest - 'invalidNegotiationType' => '"{0}" is not a valid negotiation type. Must be one of: media, charset, encoding, language.', - 'invalidJSON' => 'Failed to parse JSON string. Error: {0}', - 'unsupportedJSONFormat' => 'The provided JSON format is not supported.', - - // Message - 'invalidHTTPProtocol' => 'Invalid HTTP Protocol Version: {0}', - - // Negotiate - 'emptySupportedNegotiations' => 'You must provide an array of supported values to all Negotiations.', - - // RedirectResponse - 'invalidRoute' => 'The route for "{0}" cannot be found.', - - // DownloadResponse - 'cannotSetBinary' => 'When setting filepath cannot set binary.', - 'cannotSetFilepath' => 'When setting binary cannot set filepath: "{0}"', - 'notFoundDownloadSource' => 'Not found download body source.', - 'cannotSetCache' => 'It does not support caching for downloading.', - 'cannotSetStatusCode' => 'It does not support change status code for downloading. code: {0}, reason: {1}', - - // Response - 'missingResponseStatus' => 'HTTP Response is missing a status code', - 'invalidStatusCode' => '{0} is not a valid HTTP return status code', - 'unknownStatusCode' => 'Unknown HTTP status code provided with no message: {0}', - - // URI - 'cannotParseURI' => 'Unable to parse URI: "{0}"', - 'segmentOutOfRange' => 'Request URI segment is out of range: "{0}"', - 'invalidPort' => 'Ports must be between 0 and 65535. Given: {0}', - 'malformedQueryString' => 'Query strings may not include URI fragments.', - - // Page Not Found - 'pageNotFound' => 'Page Not Found', - 'emptyController' => 'No Controller specified.', - 'controllerNotFound' => 'Controller or its method is not found: {0}::{1}', - 'methodNotFound' => 'Controller method is not found: "{0}"', - 'localeNotSupported' => 'Locale is not supported: {0}', - - // CSRF - // @deprecated use 'Security.disallowedAction' - 'disallowedAction' => 'The action you requested is not allowed.', - - // Uploaded file moving - 'alreadyMoved' => 'The uploaded file has already been moved.', - 'invalidFile' => 'The original file is not a valid file.', - 'moveFailed' => 'Could not move file "{0}" to "{1}". Reason: {2}', - - 'uploadErrOk' => 'The file uploaded with success.', - 'uploadErrIniSize' => 'The file "%s" exceeds your upload_max_filesize ini directive.', - 'uploadErrFormSize' => 'The file "%s" exceeds the upload limit defined in your form.', - 'uploadErrPartial' => 'The file "%s" was only partially uploaded.', - 'uploadErrNoFile' => 'No file was uploaded.', - 'uploadErrCantWrite' => 'The file "%s" could not be written on disk.', - 'uploadErrNoTmpDir' => 'File could not be uploaded: missing temporary directory.', - 'uploadErrExtension' => 'File upload was stopped by a PHP extension.', - 'uploadErrUnknown' => 'The file "%s" was not uploaded due to an unknown error.', - - // SameSite setting - // @deprecated - 'invalidSameSiteSetting' => 'The SameSite setting must be None, Lax, Strict, or a blank string. Given: {0}', -]; diff --git a/system4.4.6/Language/en/Images.php b/system4.4.6/Language/en/Images.php deleted file mode 100644 index be4d5290..00000000 --- a/system4.4.6/Language/en/Images.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// Images language settings -return [ - 'sourceImageRequired' => 'You must specify a source image in your preferences.', - 'gdRequired' => 'The GD image library is required to use this feature.', - 'gdRequiredForProps' => 'Your server must support the GD image library in order to determine the image properties.', - 'gifNotSupported' => 'GIF images are often not supported due to licensing restrictions. You may have to use JPG or PNG images instead.', - 'jpgNotSupported' => 'JPG images are not supported.', - 'pngNotSupported' => 'PNG images are not supported.', - 'webpNotSupported' => 'WEBP images are not supported.', - 'fileNotSupported' => 'The supplied file is not a supported image type.', - 'unsupportedImageCreate' => 'Your server does not support the GD function required to process this type of image.', - 'jpgOrPngRequired' => 'The image resize protocol specified in your preferences only works with JPEG or PNG image types.', - 'rotateUnsupported' => 'Image rotation does not appear to be supported by your server.', - 'libPathInvalid' => 'The path to your image library is not correct. Please set the correct path in your image preferences. "{0}"', - 'imageProcessFailed' => 'Image processing failed. Please verify that your server supports the chosen protocol and that the path to your image library is correct.', - 'rotationAngleRequired' => 'An angle of rotation is required to rotate the image.', - 'invalidPath' => 'The path to the image is not correct.', - 'copyFailed' => 'The image copy routine failed.', - 'missingFont' => 'Unable to find a font to use.', - 'saveFailed' => 'Unable to save the image. Please make sure the image and file directory are writable.', - 'invalidDirection' => 'Flip direction can be only "vertical" or "horizontal". Given: "{0}"', - 'exifNotSupported' => 'Reading EXIF data is not supported by this PHP installation.', -]; diff --git a/system4.4.6/Language/en/Language.php b/system4.4.6/Language/en/Language.php deleted file mode 100644 index 80920b2f..00000000 --- a/system4.4.6/Language/en/Language.php +++ /dev/null @@ -1,15 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// "Language" language settings -return [ - 'invalidMessageFormat' => 'Invalid message format: "{0}", args: "{1}"', -]; diff --git a/system4.4.6/Language/en/Log.php b/system4.4.6/Language/en/Log.php deleted file mode 100644 index d6ee779a..00000000 --- a/system4.4.6/Language/en/Log.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// Log language settings -return [ - 'invalidLogLevel' => '"{0}" is an invalid log level.', - 'invalidMessageType' => 'The given message type "{0}" is not supported.', -]; diff --git a/system4.4.6/Language/en/Migrations.php b/system4.4.6/Language/en/Migrations.php deleted file mode 100644 index 9bfb5c60..00000000 --- a/system4.4.6/Language/en/Migrations.php +++ /dev/null @@ -1,58 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// Migration language settings -return [ - // Migration Runner - 'missingTable' => 'Migrations table must be set.', - 'disabled' => 'Migrations have been loaded but are disabled or setup incorrectly.', - 'notFound' => 'Migration file not found: ', - 'batchNotFound' => 'Target batch not found: ', - 'empty' => 'No Migration files found', - 'gap' => 'There is a gap in the migration sequence near version number: ', - 'classNotFound' => 'The migration class "%s" could not be found.', - 'missingMethod' => 'The migration class is missing an "%s" method.', - - // Migration Command - 'migHelpLatest' => "\t\tMigrates database to latest available migration.", - 'migHelpCurrent' => "\t\tMigrates database to version set as 'current' in configuration.", - 'migHelpVersion' => "\tMigrates database to version {v}.", - 'migHelpRollback' => "\tRuns all migrations 'down' to version 0.", - 'migHelpRefresh' => "\t\tUninstalls and re-runs all migrations to freshen database.", - 'migHelpSeed' => "\tRuns the seeder named [name].", - 'migCreate' => "\tCreates a new migration named [name]", - 'nameMigration' => 'Name the migration file', - 'migNumberError' => 'Migration number must be three digits, and there must not be any gaps in the sequence.', - 'rollBackConfirm' => 'Are you sure you want to rollback?', - 'refreshConfirm' => 'Are you sure you want to refresh?', - - 'latest' => 'Running all new migrations...', - 'generalFault' => 'Migration failed!', - 'migrated' => 'Migrations complete.', - 'migInvalidVersion' => 'Invalid version number provided.', - 'toVersionPH' => 'Migrating to version %s...', - 'toVersion' => 'Migrating to current version...', - 'rollingBack' => 'Rolling back migrations to batch: ', - 'noneFound' => 'No migrations were found.', - 'migSeeder' => 'Seeder name', - 'migMissingSeeder' => 'You must provide a seeder name.', - 'nameSeeder' => 'Name the seeder file', - 'removed' => 'Rolling back: ', - 'added' => 'Running: ', - - // Migrate Status - 'namespace' => 'Namespace', - 'filename' => 'Filename', - 'version' => 'Version', - 'group' => 'Group', - 'on' => 'Migrated On: ', - 'batch' => 'Batch', -]; diff --git a/system4.4.6/Language/en/Number.php b/system4.4.6/Language/en/Number.php deleted file mode 100644 index c1660fdd..00000000 --- a/system4.4.6/Language/en/Number.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// Number language settings -return [ - 'terabyteAbbr' => 'TB', - 'gigabyteAbbr' => 'GB', - 'megabyteAbbr' => 'MB', - 'kilobyteAbbr' => 'KB', - 'bytes' => 'Bytes', - - // don't forget the space in front of these! - 'thousand' => ' thousand', - 'million' => ' million', - 'billion' => ' billion', - 'trillion' => ' trillion', - 'quadrillion' => ' quadrillion', -]; diff --git a/system4.4.6/Language/en/Pager.php b/system4.4.6/Language/en/Pager.php deleted file mode 100644 index 884ea8e0..00000000 --- a/system4.4.6/Language/en/Pager.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// Pager language settings -return [ - 'pageNavigation' => 'Page navigation', - 'first' => 'First', - 'previous' => 'Previous', - 'next' => 'Next', - 'last' => 'Last', - 'older' => 'Older', - 'newer' => 'Newer', - 'invalidTemplate' => '"{0}" is not a valid Pager template.', - 'invalidPaginationGroup' => '"{0}" is not a valid Pagination group.', -]; diff --git a/system4.4.6/Language/en/Publisher.php b/system4.4.6/Language/en/Publisher.php deleted file mode 100644 index 3eb74a3f..00000000 --- a/system4.4.6/Language/en/Publisher.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// Publisher language settings -return [ - 'collision' => 'Publisher encountered an unexpected "{0}" while copying "{1}" to "{2}".', - 'destinationNotAllowed' => 'Destination is not on the allowed list of Publisher directories: "{0}"', - 'fileNotAllowed' => '"{0}" fails the following restriction for "{1}": {2}', - - // Publish Command - 'publishMissing' => 'No Publisher classes detected in {0} across all namespaces.', - 'publishSuccess' => '"{0}" published {1} file(s) to "{2}".', - 'publishFailure' => '"{0}" failed to publish to "{1}".', -]; diff --git a/system4.4.6/Language/en/RESTful.php b/system4.4.6/Language/en/RESTful.php deleted file mode 100644 index b3ac05e8..00000000 --- a/system4.4.6/Language/en/RESTful.php +++ /dev/null @@ -1,15 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// RESTful language settings -return [ - 'notImplemented' => '"{0}" action not implemented.', -]; diff --git a/system4.4.6/Language/en/Router.php b/system4.4.6/Language/en/Router.php deleted file mode 100644 index cb90612a..00000000 --- a/system4.4.6/Language/en/Router.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// Router language settings -return [ - 'invalidParameter' => 'A parameter does not match the expected type.', - 'missingDefaultRoute' => 'Unable to determine what should be displayed. A default route has not been specified in the routing file.', - 'invalidDynamicController' => 'A dynamic controller is not allowed for security reasons. Route handler: "{0}"', - 'invalidControllerName' => 'The namespace delimiter is a backslash (\), not a slash (/). Route handler: "{0}"', -]; diff --git a/system4.4.6/Language/en/Security.php b/system4.4.6/Language/en/Security.php deleted file mode 100644 index d7f8a652..00000000 --- a/system4.4.6/Language/en/Security.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// Security language settings -return [ - 'disallowedAction' => 'The action you requested is not allowed.', - - // @deprecated - 'invalidSameSite' => 'The SameSite value must be None, Lax, Strict, or a blank string. Given: "{0}"', -]; diff --git a/system4.4.6/Language/en/Session.php b/system4.4.6/Language/en/Session.php deleted file mode 100644 index 2eff09e6..00000000 --- a/system4.4.6/Language/en/Session.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// Session language settings -return [ - 'missingDatabaseTable' => '"sessionSavePath" must have the table name for the Database Session Handler to work.', - 'invalidSavePath' => 'Session: Configured save path "{0}" is not a directory, does not exist or cannot be created.', - 'writeProtectedSavePath' => 'Session: Configured save path "{0}" is not writable by the PHP process.', - 'emptySavePath' => 'Session: No save path configured.', - 'invalidSavePathFormat' => 'Session: Invalid Redis save path format: "{0}"', - - // @deprecated - 'invalidSameSiteSetting' => 'Session: The SameSite setting must be None, Lax, Strict, or a blank string. Given: "{0}"', -]; diff --git a/system4.4.6/Language/en/Test.php b/system4.4.6/Language/en/Test.php deleted file mode 100644 index d54b9188..00000000 --- a/system4.4.6/Language/en/Test.php +++ /dev/null @@ -1,15 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// Testing language settings -return [ - 'invalidMockClass' => '"{0}" is not a valid Mock class', -]; diff --git a/system4.4.6/Language/en/Time.php b/system4.4.6/Language/en/Time.php deleted file mode 100644 index decee74f..00000000 --- a/system4.4.6/Language/en/Time.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// Time language settings -return [ - 'invalidFormat' => '"{0}" is not a valid datetime format', - 'invalidMonth' => 'Months must be between 1 and 12. Given: {0}', - 'invalidDay' => 'Days must be between 1 and 31. Given: {0}', - 'invalidOverDay' => 'Days must be between 1 and {0}. Given: {1}', - 'invalidHours' => 'Hours must be between 0 and 23. Given: {0}', - 'invalidMinutes' => 'Minutes must be between 0 and 59. Given: {0}', - 'invalidSeconds' => 'Seconds must be between 0 and 59. Given: {0}', - 'years' => '{0, plural, =1{# year} other{# years}}', - 'months' => '{0, plural, =1{# month} other{# months}}', - 'weeks' => '{0, plural, =1{# week} other{# weeks}}', - 'days' => '{0, plural, =1{# day} other{# days}}', - 'hours' => '{0, plural, =1{# hour} other{# hours}}', - 'minutes' => '{0, plural, =1{# minute} other{# minutes}}', - 'seconds' => '{0, plural, =1{# second} other{# seconds}}', - 'ago' => '{0} ago', - 'inFuture' => 'in {0}', - 'yesterday' => 'Yesterday', - 'tomorrow' => 'Tomorrow', - 'now' => 'Just now', -]; diff --git a/system4.4.6/Language/en/Validation.php b/system4.4.6/Language/en/Validation.php deleted file mode 100644 index c78099de..00000000 --- a/system4.4.6/Language/en/Validation.php +++ /dev/null @@ -1,74 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// Validation language settings -return [ - // Core Messages - 'noRuleSets' => 'No rule sets specified in Validation configuration.', - 'ruleNotFound' => '"{0}" is not a valid rule.', - 'groupNotFound' => '"{0}" is not a validation rules group.', - 'groupNotArray' => '"{0}" rule group must be an array.', - 'invalidTemplate' => '"{0}" is not a valid Validation template.', - - // Rule Messages - 'alpha' => 'The {field} field may only contain alphabetical characters.', - 'alpha_dash' => 'The {field} field may only contain alphanumeric, underscore, and dash characters.', - 'alpha_numeric' => 'The {field} field may only contain alphanumeric characters.', - 'alpha_numeric_punct' => 'The {field} field may contain only alphanumeric characters, spaces, and ~ ! # $ % & * - _ + = | : . characters.', - 'alpha_numeric_space' => 'The {field} field may only contain alphanumeric and space characters.', - 'alpha_space' => 'The {field} field may only contain alphabetical characters and spaces.', - 'decimal' => 'The {field} field must contain a decimal number.', - 'differs' => 'The {field} field must differ from the {param} field.', - 'equals' => 'The {field} field must be exactly: {param}.', - 'exact_length' => 'The {field} field must be exactly {param} characters in length.', - 'greater_than' => 'The {field} field must contain a number greater than {param}.', - 'greater_than_equal_to' => 'The {field} field must contain a number greater than or equal to {param}.', - 'hex' => 'The {field} field may only contain hexadecimal characters.', - 'in_list' => 'The {field} field must be one of: {param}.', - 'integer' => 'The {field} field must contain an integer.', - 'is_natural' => 'The {field} field must only contain digits.', - 'is_natural_no_zero' => 'The {field} field must only contain digits and must be greater than zero.', - 'is_not_unique' => 'The {field} field must contain a previously existing value in the database.', - 'is_unique' => 'The {field} field must contain a unique value.', - 'less_than' => 'The {field} field must contain a number less than {param}.', - 'less_than_equal_to' => 'The {field} field must contain a number less than or equal to {param}.', - 'matches' => 'The {field} field does not match the {param} field.', - 'max_length' => 'The {field} field cannot exceed {param} characters in length.', - 'min_length' => 'The {field} field must be at least {param} characters in length.', - 'not_equals' => 'The {field} field cannot be: {param}.', - 'not_in_list' => 'The {field} field must not be one of: {param}.', - 'numeric' => 'The {field} field must contain only numbers.', - 'regex_match' => 'The {field} field is not in the correct format.', - 'required' => 'The {field} field is required.', - 'required_with' => 'The {field} field is required when {param} is present.', - 'required_without' => 'The {field} field is required when {param} is not present.', - 'string' => 'The {field} field must be a valid string.', - 'timezone' => 'The {field} field must be a valid timezone.', - 'valid_base64' => 'The {field} field must be a valid base64 string.', - 'valid_email' => 'The {field} field must contain a valid email address.', - 'valid_emails' => 'The {field} field must contain all valid email addresses.', - 'valid_ip' => 'The {field} field must contain a valid IP.', - 'valid_url' => 'The {field} field must contain a valid URL.', - 'valid_url_strict' => 'The {field} field must contain a valid URL.', - 'valid_date' => 'The {field} field must contain a valid date.', - 'valid_json' => 'The {field} field must contain a valid json.', - - // Credit Cards - 'valid_cc_num' => '{field} does not appear to be a valid credit card number.', - - // Files - 'uploaded' => '{field} is not a valid uploaded file.', - 'max_size' => '{field} is too large of a file.', - 'is_image' => '{field} is not a valid, uploaded image file.', - 'mime_in' => '{field} does not have a valid mime type.', - 'ext_in' => '{field} does not have a valid file extension.', - 'max_dims' => '{field} is either not an image, or it is too wide or tall.', -]; diff --git a/system4.4.6/Language/en/View.php b/system4.4.6/Language/en/View.php deleted file mode 100644 index cd6b6c29..00000000 --- a/system4.4.6/Language/en/View.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -// View language settings -return [ - 'invalidCellMethod' => '{class}::{method} is not a valid method.', - 'missingCellParameters' => '{class}::{method} has no params.', - 'invalidCellParameter' => '"{0}" is not a valid param name.', - 'noCellClass' => 'No view cell class provided.', - 'invalidCellClass' => 'Unable to locate view cell class: "{0}".', - 'tagSyntaxError' => 'You have a syntax error in your Parser tags: "{0}"', - 'invalidDecoratorClass' => '"{0}" is not a valid View Decorator.', -]; diff --git a/system4.4.6/Log/Exceptions/LogException.php b/system4.4.6/Log/Exceptions/LogException.php deleted file mode 100644 index c5f8b979..00000000 --- a/system4.4.6/Log/Exceptions/LogException.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Log\Exceptions; - -use CodeIgniter\Exceptions\FrameworkException; - -class LogException extends FrameworkException -{ - /** - * @return static - */ - public static function forInvalidLogLevel(string $level) - { - return new static(lang('Log.invalidLogLevel', [$level])); - } - - /** - * @return static - */ - public static function forInvalidMessageType(string $messageType) - { - return new static(lang('Log.invalidMessageType', [$messageType])); - } -} diff --git a/system4.4.6/Log/Handlers/BaseHandler.php b/system4.4.6/Log/Handlers/BaseHandler.php deleted file mode 100644 index c19ecb0b..00000000 --- a/system4.4.6/Log/Handlers/BaseHandler.php +++ /dev/null @@ -1,59 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Log\Handlers; - -/** - * Base class for logging - */ -abstract class BaseHandler implements HandlerInterface -{ - /** - * Handles - * - * @var array - */ - protected $handles; - - /** - * Date format for logging - * - * @var string - */ - protected $dateFormat = 'Y-m-d H:i:s'; - - /** - * Constructor - */ - public function __construct(array $config) - { - $this->handles = $config['handles'] ?? []; - } - - /** - * Checks whether the Handler will handle logging items of this - * log Level. - */ - public function canHandle(string $level): bool - { - return in_array($level, $this->handles, true); - } - - /** - * Stores the date format to use while logging messages. - */ - public function setDateFormat(string $format): HandlerInterface - { - $this->dateFormat = $format; - - return $this; - } -} diff --git a/system4.4.6/Log/Handlers/ChromeLoggerHandler.php b/system4.4.6/Log/Handlers/ChromeLoggerHandler.php deleted file mode 100644 index b04d6f69..00000000 --- a/system4.4.6/Log/Handlers/ChromeLoggerHandler.php +++ /dev/null @@ -1,167 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Log\Handlers; - -use CodeIgniter\HTTP\ResponseInterface; -use Config\Services; - -/** - * Class ChromeLoggerHandler - * - * Allows for logging items to the Chrome console for debugging. - * Requires the ChromeLogger extension installed in your browser. - * - * @see https://craig.is/writing/chrome-logger - * @see \CodeIgniter\Log\Handlers\ChromeLoggerHandlerTest - */ -class ChromeLoggerHandler extends BaseHandler -{ - /** - * Version of this library - for ChromeLogger use. - */ - public const VERSION = 1.0; - - /** - * The number of track frames returned from the backtrace. - * - * @var int - */ - protected $backtraceLevel = 0; - - /** - * The final data that is sent to the browser. - * - * @var array - */ - protected $json = [ - 'version' => self::VERSION, - 'columns' => [ - 'log', - 'backtrace', - 'type', - ], - 'rows' => [], - ]; - - /** - * The header used to pass the data. - * - * @var string - */ - protected $header = 'X-ChromeLogger-Data'; - - /** - * Maps the log levels to the ChromeLogger types. - * - * @var array - */ - protected $levels = [ - 'emergency' => 'error', - 'alert' => 'error', - 'critical' => 'error', - 'error' => 'error', - 'warning' => 'warn', - 'notice' => 'warn', - 'info' => 'info', - 'debug' => 'info', - ]; - - /** - * Constructor - */ - public function __construct(array $config = []) - { - parent::__construct($config); - - $this->json['request_uri'] = current_url(); - } - - /** - * Handles logging the message. - * If the handler returns false, then execution of handlers - * will stop. Any handlers that have not run, yet, will not - * be run. - * - * @param string $level - * @param string $message - */ - public function handle($level, $message): bool - { - // Format our message - $message = $this->format($message); - - // Generate Backtrace info - $backtrace = debug_backtrace(0, $this->backtraceLevel); - $backtrace = end($backtrace); - - $backtraceMessage = 'unknown'; - if (isset($backtrace['file'], $backtrace['line'])) { - $backtraceMessage = $backtrace['file'] . ':' . $backtrace['line']; - } - - // Default to 'log' type. - $type = ''; - - if (array_key_exists($level, $this->levels)) { - $type = $this->levels[$level]; - } - - $this->json['rows'][] = [ - [$message], - $backtraceMessage, - $type, - ]; - - $this->sendLogs(); - - return true; - } - - /** - * Converts the object to display nicely in the Chrome Logger UI. - * - * @param array|int|object|string $object - * - * @return array - */ - protected function format($object) - { - if (! is_object($object)) { - return $object; - } - - // @todo Modify formatting of objects once we can view them in browser. - $objectArray = (array) $object; - - $objectArray['___class_name'] = get_class($object); - - return $objectArray; - } - - /** - * Attaches the header and the content to the passed in request object. - * - * @return void - */ - public function sendLogs(?ResponseInterface &$response = null) - { - if ($response === null) { - $response = Services::response(null, true); - } - - $data = base64_encode( - mb_convert_encoding(json_encode($this->json), 'UTF-8', mb_list_encodings()) - ); - - $response->setHeader($this->header, $data); - } -} diff --git a/system4.4.6/Log/Handlers/ErrorlogHandler.php b/system4.4.6/Log/Handlers/ErrorlogHandler.php deleted file mode 100644 index d9f3fc4e..00000000 --- a/system4.4.6/Log/Handlers/ErrorlogHandler.php +++ /dev/null @@ -1,86 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Log\Handlers; - -use CodeIgniter\Log\Exceptions\LogException; - -/** - * Log handler that writes to PHP's `error_log()` - * - * @see \CodeIgniter\Log\Handlers\ErrorlogHandlerTest - */ -class ErrorlogHandler extends BaseHandler -{ - /** - * Message is sent to PHP's system logger, using the Operating System's - * system logging mechanism or a file, depending on what the error_log - * configuration directive is set to. - */ - public const TYPE_OS = 0; - - /** - * Message is sent directly to the SAPI logging handler. - */ - public const TYPE_SAPI = 4; - - /** - * Says where the error should go. Currently supported are - * 0 (`TYPE_OS`) and 4 (`TYPE_SAPI`). - * - * @var int - */ - protected $messageType = 0; - - /** - * Constructor. - * - * @param mixed[] $config - */ - public function __construct(array $config = []) - { - parent::__construct($config); - - $messageType = $config['messageType'] ?? self::TYPE_OS; - - if (! is_int($messageType) || ! in_array($messageType, [self::TYPE_OS, self::TYPE_SAPI], true)) { - throw LogException::forInvalidMessageType(print_r($messageType, true)); - } - - $this->messageType = $messageType; - } - - /** - * Handles logging the message. - * If the handler returns false, then execution of handlers - * will stop. Any handlers that have not run, yet, will not - * be run. - * - * @param string $level - * @param string $message - */ - public function handle($level, $message): bool - { - $message = strtoupper($level) . ' --> ' . $message . "\n"; - - return $this->errorLog($message, $this->messageType); - } - - /** - * Extracted call to `error_log()` in order to be tested. - * - * @codeCoverageIgnore - */ - protected function errorLog(string $message, int $messageType): bool - { - return error_log($message, $messageType); - } -} diff --git a/system4.4.6/Log/Handlers/FileHandler.php b/system4.4.6/Log/Handlers/FileHandler.php deleted file mode 100644 index 88e38478..00000000 --- a/system4.4.6/Log/Handlers/FileHandler.php +++ /dev/null @@ -1,124 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Log\Handlers; - -use DateTime; -use Exception; - -/** - * Log error messages to file system - * - * @see \CodeIgniter\Log\Handlers\FileHandlerTest - */ -class FileHandler extends BaseHandler -{ - /** - * Folder to hold logs - * - * @var string - */ - protected $path; - - /** - * Extension to use for log files - * - * @var string - */ - protected $fileExtension; - - /** - * Permissions for new log files - * - * @var int - */ - protected $filePermissions; - - /** - * Constructor - */ - public function __construct(array $config = []) - { - parent::__construct($config); - - $this->path = empty($config['path']) ? WRITEPATH . 'logs/' : $config['path']; - - $this->fileExtension = empty($config['fileExtension']) ? 'log' : $config['fileExtension']; - $this->fileExtension = ltrim($this->fileExtension, '.'); - - $this->filePermissions = $config['filePermissions'] ?? 0644; - } - - /** - * Handles logging the message. - * If the handler returns false, then execution of handlers - * will stop. Any handlers that have not run, yet, will not - * be run. - * - * @param string $level - * @param string $message - * - * @throws Exception - */ - public function handle($level, $message): bool - { - $filepath = $this->path . 'log-' . date('Y-m-d') . '.' . $this->fileExtension; - - $msg = ''; - - if (! is_file($filepath)) { - $newfile = true; - - // Only add protection to php files - if ($this->fileExtension === 'php') { - $msg .= "<?php defined('SYSTEMPATH') || exit('No direct script access allowed'); ?>\n\n"; - } - } - - if (! $fp = @fopen($filepath, 'ab')) { - return false; - } - - // Instantiating DateTime with microseconds appended to initial date is needed for proper support of this format - if (strpos($this->dateFormat, 'u') !== false) { - $microtimeFull = microtime(true); - $microtimeShort = sprintf('%06d', ($microtimeFull - floor($microtimeFull)) * 1_000_000); - $date = new DateTime(date('Y-m-d H:i:s.' . $microtimeShort, (int) $microtimeFull)); - $date = $date->format($this->dateFormat); - } else { - $date = date($this->dateFormat); - } - - $msg .= strtoupper($level) . ' - ' . $date . ' --> ' . $message . "\n"; - - flock($fp, LOCK_EX); - - $result = null; - - for ($written = 0, $length = strlen($msg); $written < $length; $written += $result) { - if (($result = fwrite($fp, substr($msg, $written))) === false) { - // if we get this far, we'll never see this during travis-ci - // @codeCoverageIgnoreStart - break; - // @codeCoverageIgnoreEnd - } - } - - flock($fp, LOCK_UN); - fclose($fp); - - if (isset($newfile) && $newfile === true) { - chmod($filepath, $this->filePermissions); - } - - return is_int($result); - } -} diff --git a/system4.4.6/Log/Handlers/HandlerInterface.php b/system4.4.6/Log/Handlers/HandlerInterface.php deleted file mode 100644 index 7b809a32..00000000 --- a/system4.4.6/Log/Handlers/HandlerInterface.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Log\Handlers; - -/** - * Expected behavior for a Log handler - */ -interface HandlerInterface -{ - /** - * Handles logging the message. - * If the handler returns false, then execution of handlers - * will stop. Any handlers that have not run, yet, will not - * be run. - * - * @param string $level - * @param string $message - */ - public function handle($level, $message): bool; - - /** - * Checks whether the Handler will handle logging items of this - * log Level. - */ - public function canHandle(string $level): bool; - - /** - * Sets the preferred date format to use when logging. - * - * @return HandlerInterface - */ - public function setDateFormat(string $format); -} diff --git a/system4.4.6/Log/Logger.php b/system4.4.6/Log/Logger.php deleted file mode 100644 index 2246fc8c..00000000 --- a/system4.4.6/Log/Logger.php +++ /dev/null @@ -1,427 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Log; - -use CodeIgniter\Log\Exceptions\LogException; -use CodeIgniter\Log\Handlers\HandlerInterface; -use Psr\Log\LoggerInterface; -use RuntimeException; -use Throwable; - -/** - * The CodeIgntier Logger - * - * The message MUST be a string or object implementing __toString(). - * - * The message MAY contain placeholders in the form: {foo} where foo - * will be replaced by the context data in key "foo". - * - * The context array can contain arbitrary data, the only assumption that - * can be made by implementors is that if an Exception instance is given - * to produce a stack trace, it MUST be in a key named "exception". - * - * @see \CodeIgniter\Log\LoggerTest - */ -class Logger implements LoggerInterface -{ - /** - * Used by the logThreshold Config setting to define - * which errors to show. - * - * @var array<string, int> - */ - protected $logLevels = [ - 'emergency' => 1, - 'alert' => 2, - 'critical' => 3, - 'error' => 4, - 'warning' => 5, - 'notice' => 6, - 'info' => 7, - 'debug' => 8, - ]; - - /** - * Array of levels to be logged. - * The rest will be ignored. - * Set in Config/logger.php - * - * @var array - */ - protected $loggableLevels = []; - - /** - * File permissions - * - * @var int - */ - protected $filePermissions = 0644; - - /** - * Format of the timestamp for log files. - * - * @var string - */ - protected $dateFormat = 'Y-m-d H:i:s'; - - /** - * Filename Extension - * - * @var string - */ - protected $fileExt; - - /** - * Caches instances of the handlers. - * - * @var array - */ - protected $handlers = []; - - /** - * Holds the configuration for each handler. - * The key is the handler's class name. The - * value is an associative array of configuration - * items. - * - * @var array<class-string, array<string, int|list<string>|string>> - */ - protected $handlerConfig = []; - - /** - * Caches logging calls for debugbar. - * - * @var array - */ - public $logCache; - - /** - * Should we cache our logged items? - * - * @var bool - */ - protected $cacheLogs = false; - - /** - * Constructor. - * - * @param \Config\Logger $config - * - * @throws RuntimeException - */ - public function __construct($config, bool $debug = CI_DEBUG) - { - $this->loggableLevels = is_array($config->threshold) ? $config->threshold : range(1, (int) $config->threshold); - - // Now convert loggable levels to strings. - // We only use numbers to make the threshold setting convenient for users. - if ($this->loggableLevels !== []) { - $temp = []; - - foreach ($this->loggableLevels as $level) { - $temp[] = array_search((int) $level, $this->logLevels, true); - } - - $this->loggableLevels = $temp; - unset($temp); - } - - $this->dateFormat = $config->dateFormat ?? $this->dateFormat; - - if (! is_array($config->handlers) || $config->handlers === []) { - throw LogException::forNoHandlers('LoggerConfig'); - } - - // Save the handler configuration for later. - // Instances will be created on demand. - $this->handlerConfig = $config->handlers; - - $this->cacheLogs = $debug; - if ($this->cacheLogs) { - $this->logCache = []; - } - } - - /** - * System is unusable. - * - * @param string $message - */ - public function emergency($message, array $context = []): bool - { - return $this->log('emergency', $message, $context); - } - - /** - * Action must be taken immediately. - * - * Example: Entire website down, database unavailable, etc. This should - * trigger the SMS alerts and wake you up. - * - * @param string $message - */ - public function alert($message, array $context = []): bool - { - return $this->log('alert', $message, $context); - } - - /** - * Critical conditions. - * - * Example: Application component unavailable, unexpected exception. - * - * @param string $message - */ - public function critical($message, array $context = []): bool - { - return $this->log('critical', $message, $context); - } - - /** - * Runtime errors that do not require immediate action but should typically - * be logged and monitored. - * - * @param string $message - */ - public function error($message, array $context = []): bool - { - return $this->log('error', $message, $context); - } - - /** - * Exceptional occurrences that are not errors. - * - * Example: Use of deprecated APIs, poor use of an API, undesirable things - * that are not necessarily wrong. - * - * @param string $message - */ - public function warning($message, array $context = []): bool - { - return $this->log('warning', $message, $context); - } - - /** - * Normal but significant events. - * - * @param string $message - */ - public function notice($message, array $context = []): bool - { - return $this->log('notice', $message, $context); - } - - /** - * Interesting events. - * - * Example: User logs in, SQL logs. - * - * @param string $message - */ - public function info($message, array $context = []): bool - { - return $this->log('info', $message, $context); - } - - /** - * Detailed debug information. - * - * @param string $message - */ - public function debug($message, array $context = []): bool - { - return $this->log('debug', $message, $context); - } - - /** - * Logs with an arbitrary level. - * - * @param string $level - * @param string $message - */ - public function log($level, $message, array $context = []): bool - { - if (is_numeric($level)) { - $level = array_search((int) $level, $this->logLevels, true); - } - - // Is the level a valid level? - if (! array_key_exists($level, $this->logLevels)) { - throw LogException::forInvalidLogLevel($level); - } - - // Does the app want to log this right now? - if (! in_array($level, $this->loggableLevels, true)) { - return false; - } - - // Parse our placeholders - $message = $this->interpolate($message, $context); - - if ($this->cacheLogs) { - $this->logCache[] = [ - 'level' => $level, - 'msg' => $message, - ]; - } - - foreach ($this->handlerConfig as $className => $config) { - if (! array_key_exists($className, $this->handlers)) { - $this->handlers[$className] = new $className($config); - } - - /** - * @var HandlerInterface $handler - */ - $handler = $this->handlers[$className]; - - if (! $handler->canHandle($level)) { - continue; - } - - // If the handler returns false, then we - // don't execute any other handlers. - if (! $handler->setDateFormat($this->dateFormat)->handle($level, $message)) { - break; - } - } - - return true; - } - - /** - * Replaces any placeholders in the message with variables - * from the context, as well as a few special items like: - * - * {session_vars} - * {post_vars} - * {get_vars} - * {env} - * {env:foo} - * {file} - * {line} - * - * @param string $message - * - * @return string - */ - protected function interpolate($message, array $context = []) - { - if (! is_string($message)) { - return print_r($message, true); - } - - // build a replacement array with braces around the context keys - $replace = []; - - foreach ($context as $key => $val) { - // Verify that the 'exception' key is actually an exception - // or error, both of which implement the 'Throwable' interface. - if ($key === 'exception' && $val instanceof Throwable) { - $val = $val->getMessage() . ' ' . clean_path($val->getFile()) . ':' . $val->getLine(); - } - - // todo - sanitize input before writing to file? - $replace['{' . $key . '}'] = $val; - } - - // Add special placeholders - $replace['{post_vars}'] = '$_POST: ' . print_r($_POST, true); - $replace['{get_vars}'] = '$_GET: ' . print_r($_GET, true); - $replace['{env}'] = ENVIRONMENT; - - // Allow us to log the file/line that we are logging from - if (strpos($message, '{file}') !== false) { - [$file, $line] = $this->determineFile(); - - $replace['{file}'] = $file; - $replace['{line}'] = $line; - } - - // Match up environment variables in {env:foo} tags. - if (strpos($message, 'env:') !== false) { - preg_match('/env:[^}]+/', $message, $matches); - - foreach ($matches as $str) { - $key = str_replace('env:', '', $str); - $replace["{{$str}}"] = $_ENV[$key] ?? 'n/a'; - } - } - - if (isset($_SESSION)) { - $replace['{session_vars}'] = '$_SESSION: ' . print_r($_SESSION, true); - } - - // interpolate replacement values into the message and return - return strtr($message, $replace); - } - - /** - * Determines the file and line that the logging call - * was made from by analyzing the backtrace. - * Find the earliest stack frame that is part of our logging system. - */ - public function determineFile(): array - { - $logFunctions = [ - 'log_message', - 'log', - 'error', - 'debug', - 'info', - 'warning', - 'critical', - 'emergency', - 'alert', - 'notice', - ]; - - // Generate Backtrace info - $trace = \debug_backtrace(0); - - // So we search from the bottom (earliest) of the stack frames - $stackFrames = \array_reverse($trace); - - // Find the first reference to a Logger class method - foreach ($stackFrames as $frame) { - if (\in_array($frame['function'], $logFunctions, true)) { - $file = isset($frame['file']) ? clean_path($frame['file']) : 'unknown'; - $line = $frame['line'] ?? 'unknown'; - - return [ - $file, - $line, - ]; - } - } - - return [ - 'unknown', - 'unknown', - ]; - } - - /** - * Cleans the paths of filenames by replacing APPPATH, SYSTEMPATH, FCPATH - * with the actual var. i.e. - * - * /var/www/site/app/Controllers/Home.php - * becomes: - * APPPATH/Controllers/Home.php - * - * @deprecated Use dedicated `clean_path()` function. - */ - protected function cleanFileNames(string $file): string - { - return clean_path($file); - } -} diff --git a/system4.4.6/Model.php b/system4.4.6/Model.php deleted file mode 100644 index 2596417c..00000000 --- a/system4.4.6/Model.php +++ /dev/null @@ -1,959 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter; - -use BadMethodCallException; -use Closure; -use CodeIgniter\Database\BaseBuilder; -use CodeIgniter\Database\BaseConnection; -use CodeIgniter\Database\BaseResult; -use CodeIgniter\Database\ConnectionInterface; -use CodeIgniter\Database\Exceptions\DatabaseException; -use CodeIgniter\Database\Exceptions\DataException; -use CodeIgniter\Database\Query; -use CodeIgniter\Entity\Entity; -use CodeIgniter\Exceptions\ModelException; -use CodeIgniter\I18n\Time; -use CodeIgniter\Validation\ValidationInterface; -use Config\Database; -use ReflectionClass; -use ReflectionException; -use ReflectionProperty; - -/** - * The Model class extends BaseModel and provides additional - * convenient features that makes working with a SQL database - * table less painful. - * - * It will: - * - automatically connect to database - * - allow intermingling calls to the builder - * - removes the need to use Result object directly in most cases - * - * @property BaseConnection $db - * - * @method $this groupBy($by, ?bool $escape = null) - * @method $this groupEnd() - * @method $this groupStart() - * @method $this having($key, $value = null, ?bool $escape = null) - * @method $this havingGroupEnd() - * @method $this havingGroupStart() - * @method $this havingIn(?string $key = null, $values = null, ?bool $escape = null) - * @method $this havingLike($field, string $match = '', string $side = 'both', ?bool $escape = null, bool $insensitiveSearch = false) - * @method $this havingNotIn(?string $key = null, $values = null, ?bool $escape = null) - * @method $this join(string $table, string $cond, string $type = '', ?bool $escape = null) - * @method $this like($field, string $match = '', string $side = 'both', ?bool $escape = null, bool $insensitiveSearch = false) - * @method $this limit(?int $value = null, ?int $offset = 0) - * @method $this notGroupStart() - * @method $this notHavingGroupStart() - * @method $this notHavingLike($field, string $match = '', string $side = 'both', ?bool $escape = null, bool $insensitiveSearch = false) - * @method $this notLike($field, string $match = '', string $side = 'both', ?bool $escape = null, bool $insensitiveSearch = false) - * @method $this offset(int $offset) - * @method $this orderBy(string $orderBy, string $direction = '', ?bool $escape = null) - * @method $this orGroupStart() - * @method $this orHaving($key, $value = null, ?bool $escape = null) - * @method $this orHavingGroupStart() - * @method $this orHavingIn(?string $key = null, $values = null, ?bool $escape = null) - * @method $this orHavingLike($field, string $match = '', string $side = 'both', ?bool $escape = null, bool $insensitiveSearch = false) - * @method $this orHavingNotIn(?string $key = null, $values = null, ?bool $escape = null) - * @method $this orLike($field, string $match = '', string $side = 'both', ?bool $escape = null, bool $insensitiveSearch = false) - * @method $this orNotGroupStart() - * @method $this orNotHavingGroupStart() - * @method $this orNotHavingLike($field, string $match = '', string $side = 'both', ?bool $escape = null, bool $insensitiveSearch = false) - * @method $this orNotLike($field, string $match = '', string $side = 'both', ?bool $escape = null, bool $insensitiveSearch = false) - * @method $this orWhere($key, $value = null, ?bool $escape = null) - * @method $this orWhereIn(?string $key = null, $values = null, ?bool $escape = null) - * @method $this orWhereNotIn(?string $key = null, $values = null, ?bool $escape = null) - * @method $this select($select = '*', ?bool $escape = null) - * @method $this selectAvg(string $select = '', string $alias = '') - * @method $this selectCount(string $select = '', string $alias = '') - * @method $this selectMax(string $select = '', string $alias = '') - * @method $this selectMin(string $select = '', string $alias = '') - * @method $this selectSum(string $select = '', string $alias = '') - * @method $this when($condition, callable $callback, ?callable $defaultCallback = null) - * @method $this whenNot($condition, callable $callback, ?callable $defaultCallback = null) - * @method $this where($key, $value = null, ?bool $escape = null) - * @method $this whereIn(?string $key = null, $values = null, ?bool $escape = null) - * @method $this whereNotIn(?string $key = null, $values = null, ?bool $escape = null) - * - * @phpstan-import-type row_array from BaseModel - */ -class Model extends BaseModel -{ - /** - * Name of database table - * - * @var string - */ - protected $table; - - /** - * The table's primary key. - * - * @var string - */ - protected $primaryKey = 'id'; - - /** - * Whether primary key uses auto increment. - * - * @var bool - */ - protected $useAutoIncrement = true; - - /** - * Query Builder object - * - * @var BaseBuilder|null - */ - protected $builder; - - /** - * Holds information passed in via 'set' - * so that we can capture it (not the builder) - * and ensure it gets validated first. - * - * @var array - */ - protected $tempData = []; - - /** - * Escape array that maps usage of escape - * flag for every parameter. - * - * @var array - */ - protected $escape = []; - - /** - * Builder method names that should not be used in the Model. - * - * @var string[] method name - */ - private array $builderMethodsNotAvailable = [ - 'getCompiledInsert', - 'getCompiledSelect', - 'getCompiledUpdate', - ]; - - public function __construct(?ConnectionInterface $db = null, ?ValidationInterface $validation = null) - { - /** - * @var BaseConnection|null $db - */ - $db ??= Database::connect($this->DBGroup); - - $this->db = $db; - - parent::__construct($validation); - } - - /** - * Specify the table associated with a model - * - * @param string $table Table - * - * @return $this - */ - public function setTable(string $table) - { - $this->table = $table; - - return $this; - } - - /** - * Fetches the row of database from $this->table with a primary key - * matching $id. - * This method works only with dbCalls. - * - * @param bool $singleton Single or multiple results - * @param array|int|string|null $id One primary key or an array of primary keys - * - * @return array|object|null The resulting row of data, or null. - * @phpstan-return ($singleton is true ? row_array|null|object : list<row_array|object>) - */ - protected function doFind(bool $singleton, $id = null) - { - $builder = $this->builder(); - - if ($this->tempUseSoftDeletes) { - $builder->where($this->table . '.' . $this->deletedField, null); - } - - if (is_array($id)) { - $row = $builder->whereIn($this->table . '.' . $this->primaryKey, $id) - ->get() - ->getResult($this->tempReturnType); - } elseif ($singleton) { - $row = $builder->where($this->table . '.' . $this->primaryKey, $id) - ->get() - ->getFirstRow($this->tempReturnType); - } else { - $row = $builder->get()->getResult($this->tempReturnType); - } - - return $row; - } - - /** - * Fetches the column of database from $this->table. - * This method works only with dbCalls. - * - * @param string $columnName Column Name - * - * @return array|null The resulting row of data, or null if no data found. - * @phpstan-return list<row_array>|null - */ - protected function doFindColumn(string $columnName) - { - return $this->select($columnName)->asArray()->find(); - } - - /** - * Works with the current Query Builder instance to return - * all results, while optionally limiting them. - * This method works only with dbCalls. - * - * @param int $limit Limit - * @param int $offset Offset - * - * @return array - * @phpstan-return list<row_array|object> - */ - protected function doFindAll(int $limit = 0, int $offset = 0) - { - $builder = $this->builder(); - - if ($this->tempUseSoftDeletes) { - $builder->where($this->table . '.' . $this->deletedField, null); - } - - return $builder->limit($limit, $offset) - ->get() - ->getResult($this->tempReturnType); - } - - /** - * Returns the first row of the result set. Will take any previous - * Query Builder calls into account when determining the result set. - * This method works only with dbCalls. - * - * @return array|object|null - * @phpstan-return row_array|object|null - */ - protected function doFirst() - { - $builder = $this->builder(); - - if ($this->tempUseSoftDeletes) { - $builder->where($this->table . '.' . $this->deletedField, null); - } elseif ($this->useSoftDeletes && ($builder->QBGroupBy === []) && $this->primaryKey) { - $builder->groupBy($this->table . '.' . $this->primaryKey); - } - - // Some databases, like PostgreSQL, need order - // information to consistently return correct results. - if ($builder->QBGroupBy && ($builder->QBOrderBy === []) && $this->primaryKey) { - $builder->orderBy($this->table . '.' . $this->primaryKey, 'asc'); - } - - return $builder->limit(1, 0)->get()->getFirstRow($this->tempReturnType); - } - - /** - * Inserts data into the current table. - * This method works only with dbCalls. - * - * @param array $row Row data - * @phpstan-param row_array $row - * - * @return bool - */ - protected function doInsert(array $row) - { - $escape = $this->escape; - $this->escape = []; - - // Require non-empty primaryKey when - // not using auto-increment feature - if (! $this->useAutoIncrement && ! isset($row[$this->primaryKey])) { - throw DataException::forEmptyPrimaryKey('insert'); - } - - $builder = $this->builder(); - - // Must use the set() method to ensure to set the correct escape flag - foreach ($row as $key => $val) { - $builder->set($key, $val, $escape[$key] ?? null); - } - - if ($this->allowEmptyInserts && $row === []) { - $table = $this->db->protectIdentifiers($this->table, true, null, false); - if ($this->db->getPlatform() === 'MySQLi') { - $sql = 'INSERT INTO ' . $table . ' VALUES ()'; - } elseif ($this->db->getPlatform() === 'OCI8') { - $allFields = $this->db->protectIdentifiers( - array_map( - static fn ($row) => $row->name, - $this->db->getFieldData($this->table) - ), - false, - true - ); - - $sql = sprintf( - 'INSERT INTO %s (%s) VALUES (%s)', - $table, - implode(',', $allFields), - substr(str_repeat(',DEFAULT', count($allFields)), 1) - ); - } else { - $sql = 'INSERT INTO ' . $table . ' DEFAULT VALUES'; - } - - $result = $this->db->query($sql); - } else { - $result = $builder->insert(); - } - - // If insertion succeeded then save the insert ID - if ($result) { - $this->insertID = ! $this->useAutoIncrement ? $row[$this->primaryKey] : $this->db->insertID(); - } - - return $result; - } - - /** - * Compiles batch insert strings and runs the queries, validating each row prior. - * This method works only with dbCalls. - * - * @param array|null $set An associative array of insert values - * @param bool|null $escape Whether to escape values - * @param int $batchSize The size of the batch to run - * @param bool $testing True means only number of records is returned, false will execute the query - * - * @return bool|int Number of rows inserted or FALSE on failure - */ - protected function doInsertBatch(?array $set = null, ?bool $escape = null, int $batchSize = 100, bool $testing = false) - { - if (is_array($set)) { - foreach ($set as $row) { - // Require non-empty primaryKey when - // not using auto-increment feature - if (! $this->useAutoIncrement && ! isset($row[$this->primaryKey])) { - throw DataException::forEmptyPrimaryKey('insertBatch'); - } - } - } - - return $this->builder()->testMode($testing)->insertBatch($set, $escape, $batchSize); - } - - /** - * Updates a single record in $this->table. - * This method works only with dbCalls. - * - * @param array|int|string|null $id - * @param array|null $row Row data - * @phpstan-param row_array|null $row - */ - protected function doUpdate($id = null, $row = null): bool - { - $escape = $this->escape; - $this->escape = []; - - $builder = $this->builder(); - - if ($id) { - $builder = $builder->whereIn($this->table . '.' . $this->primaryKey, $id); - } - - // Must use the set() method to ensure to set the correct escape flag - foreach ($row as $key => $val) { - $builder->set($key, $val, $escape[$key] ?? null); - } - - if ($builder->getCompiledQBWhere() === []) { - throw new DatabaseException( - 'Updates are not allowed unless they contain a "where" or "like" clause.' - ); - } - - return $builder->update(); - } - - /** - * Compiles an update string and runs the query - * This method works only with dbCalls. - * - * @param array|null $set An associative array of update values - * @param string|null $index The where key - * @param int $batchSize The size of the batch to run - * @param bool $returnSQL True means SQL is returned, false will execute the query - * - * @return false|int|string[] Number of rows affected or FALSE on failure, SQL array when testMode - * - * @throws DatabaseException - */ - protected function doUpdateBatch(?array $set = null, ?string $index = null, int $batchSize = 100, bool $returnSQL = false) - { - return $this->builder()->testMode($returnSQL)->updateBatch($set, $index, $batchSize); - } - - /** - * Deletes a single record from $this->table where $id matches - * the table's primaryKey - * This method works only with dbCalls. - * - * @param array|int|string|null $id The rows primary key(s) - * @param bool $purge Allows overriding the soft deletes setting. - * - * @return bool|string SQL string when testMode - * - * @throws DatabaseException - */ - protected function doDelete($id = null, bool $purge = false) - { - $set = []; - $builder = $this->builder(); - - if ($id) { - $builder = $builder->whereIn($this->primaryKey, $id); - } - - if ($this->useSoftDeletes && ! $purge) { - if ($builder->getCompiledQBWhere() === []) { - throw new DatabaseException( - 'Deletes are not allowed unless they contain a "where" or "like" clause.' - ); - } - - $builder->where($this->deletedField); - - $set[$this->deletedField] = $this->setDate(); - - if ($this->useTimestamps && $this->updatedField !== '') { - $set[$this->updatedField] = $this->setDate(); - } - - return $builder->update($set); - } - - return $builder->delete(); - } - - /** - * Permanently deletes all rows that have been marked as deleted - * through soft deletes (deleted = 1) - * This method works only with dbCalls. - * - * @return bool|string Returns a SQL string if in test mode. - */ - protected function doPurgeDeleted() - { - return $this->builder() - ->where($this->table . '.' . $this->deletedField . ' IS NOT NULL') - ->delete(); - } - - /** - * Works with the find* methods to return only the rows that - * have been deleted. - * This method works only with dbCalls. - * - * @return void - */ - protected function doOnlyDeleted() - { - $this->builder()->where($this->table . '.' . $this->deletedField . ' IS NOT NULL'); - } - - /** - * Compiles a replace into string and runs the query - * This method works only with dbCalls. - * - * @param array|null $row Data - * @phpstan-param row_array|null $row - * @param bool $returnSQL Set to true to return Query String - * - * @return BaseResult|false|Query|string - */ - protected function doReplace(?array $row = null, bool $returnSQL = false) - { - return $this->builder()->testMode($returnSQL)->replace($row); - } - - /** - * Grabs the last error(s) that occurred from the Database connection. - * The return array should be in the following format: - * ['source' => 'message'] - * This method works only with dbCalls. - * - * @return array<string, string> - */ - protected function doErrors() - { - // $error is always ['code' => string|int, 'message' => string] - $error = $this->db->error(); - - if ((int) $error['code'] === 0) { - return []; - } - - return [get_class($this->db) => $error['message']]; - } - - /** - * Returns the id value for the data array or object - * - * @param array|object $data Data - * - * @return array|int|string|null - * - * @deprecated Use getIdValue() instead. Will be removed in version 5.0. - */ - protected function idValue($data) - { - return $this->getIdValue($data); - } - - /** - * Returns the id value for the data array or object - * - * @param array|object $row Row data - * @phpstan-param row_array|object $row - * - * @return array|int|string|null - */ - public function getIdValue($row) - { - if (is_object($row) && isset($row->{$this->primaryKey})) { - // Get the raw primary key value of the Entity. - if ($row instanceof Entity) { - $cast = $row->cast(); - - // Disable Entity casting, because raw primary key value is needed for database. - $row->cast(false); - - $primaryKey = $row->{$this->primaryKey}; - - // Restore Entity casting setting. - $row->cast($cast); - - return $primaryKey; - } - - return $row->{$this->primaryKey}; - } - - if (is_array($row) && isset($row[$this->primaryKey])) { - return $row[$this->primaryKey]; - } - - return null; - } - - /** - * Loops over records in batches, allowing you to operate on them. - * Works with $this->builder to get the Compiled select to - * determine the rows to operate on. - * This method works only with dbCalls. - * - * @return void - * - * @throws DataException - */ - public function chunk(int $size, Closure $userFunc) - { - $total = $this->builder()->countAllResults(false); - $offset = 0; - - while ($offset <= $total) { - $builder = clone $this->builder(); - $rows = $builder->get($size, $offset); - - if (! $rows) { - throw DataException::forEmptyDataset('chunk'); - } - - $rows = $rows->getResult($this->tempReturnType); - - $offset += $size; - - if ($rows === []) { - continue; - } - - foreach ($rows as $row) { - if ($userFunc($row) === false) { - return; - } - } - } - } - - /** - * Override countAllResults to account for soft deleted accounts. - * - * @return int|string - */ - public function countAllResults(bool $reset = true, bool $test = false) - { - if ($this->tempUseSoftDeletes) { - $this->builder()->where($this->table . '.' . $this->deletedField, null); - } - - // When $reset === false, the $tempUseSoftDeletes will be - // dependent on $useSoftDeletes value because we don't - // want to add the same "where" condition for the second time - $this->tempUseSoftDeletes = $reset - ? $this->useSoftDeletes - : ($this->useSoftDeletes ? false : $this->useSoftDeletes); - - return $this->builder()->testMode($test)->countAllResults($reset); - } - - /** - * Provides a shared instance of the Query Builder. - * - * @param non-empty-string|null $table - * - * @return BaseBuilder - * - * @throws ModelException - */ - public function builder(?string $table = null) - { - // Check for an existing Builder - if ($this->builder instanceof BaseBuilder) { - // Make sure the requested table matches the builder - if ($table && $this->builder->getTable() !== $table) { - return $this->db->table($table); - } - - return $this->builder; - } - - // We're going to force a primary key to exist - // so we don't have overly convoluted code, - // and future features are likely to require them. - if ($this->primaryKey === '') { - throw ModelException::forNoPrimaryKey(static::class); - } - - $table = ($table === null || $table === '') ? $this->table : $table; - - // Ensure we have a good db connection - if (! $this->db instanceof BaseConnection) { - $this->db = Database::connect($this->DBGroup); - } - - $builder = $this->db->table($table); - - // Only consider it "shared" if the table is correct - if ($table === $this->table) { - $this->builder = $builder; - } - - return $builder; - } - - /** - * Captures the builder's set() method so that we can validate the - * data here. This allows it to be used with any of the other - * builder methods and still get validated data, like replace. - * - * @param array|object|string $key Field name, or an array of field/value pairs - * @param bool|float|int|object|string|null $value Field value, if $key is a single field - * @param bool|null $escape Whether to escape values - * - * @return $this - */ - public function set($key, $value = '', ?bool $escape = null) - { - $data = is_array($key) ? $key : [$key => $value]; - - foreach (array_keys($data) as $k) { - $this->tempData['escape'][$k] = $escape; - } - - $this->tempData['data'] = array_merge($this->tempData['data'] ?? [], $data); - - return $this; - } - - /** - * This method is called on save to determine if entry have to be updated - * If this method return false insert operation will be executed - * - * @param array|object $row Data - */ - protected function shouldUpdate($row): bool - { - if (parent::shouldUpdate($row) === false) { - return false; - } - - if ($this->useAutoIncrement === true) { - return true; - } - - // When useAutoIncrement feature is disabled, check - // in the database if given record already exists - return $this->where($this->primaryKey, $this->getIdValue($row))->countAllResults() === 1; - } - - /** - * Inserts data into the database. If an object is provided, - * it will attempt to convert it to an array. - * - * @param array|object|null $row - * @phpstan-param row_array|object|null $row - * @param bool $returnID Whether insert ID should be returned or not. - * - * @return bool|int|string - * @phpstan-return ($returnID is true ? int|string|false : bool) - * - * @throws ReflectionException - */ - public function insert($row = null, bool $returnID = true) - { - if (isset($this->tempData['data'])) { - if ($row === null) { - $row = $this->tempData['data']; - } else { - $row = $this->transformDataToArray($row, 'insert'); - $row = array_merge($this->tempData['data'], $row); - } - } - - $this->escape = $this->tempData['escape'] ?? []; - $this->tempData = []; - - return parent::insert($row, $returnID); - } - - /** - * Ensures that only the fields that are allowed to be inserted are in - * the data array. - * - * @used-by insert() to protect against mass assignment vulnerabilities. - * @used-by insertBatch() to protect against mass assignment vulnerabilities. - * - * @param array $row Row data - * @phpstan-param row_array $row - * - * @throws DataException - */ - protected function doProtectFieldsForInsert(array $row): array - { - if (! $this->protectFields) { - return $row; - } - - if ($this->allowedFields === []) { - throw DataException::forInvalidAllowedFields(static::class); - } - - foreach (array_keys($row) as $key) { - // Do not remove the non-auto-incrementing primary key data. - if ($this->useAutoIncrement === false && $key === $this->primaryKey) { - continue; - } - - if (! in_array($key, $this->allowedFields, true)) { - unset($row[$key]); - } - } - - return $row; - } - - /** - * Updates a single record in the database. If an object is provided, - * it will attempt to convert it into an array. - * - * @param array|int|string|null $id - * @param array|object|null $row - * @phpstan-param row_array|object|null $row - * - * @throws ReflectionException - */ - public function update($id = null, $row = null): bool - { - if (isset($this->tempData['data'])) { - if ($row === null) { - $row = $this->tempData['data']; - } else { - $row = $this->transformDataToArray($row, 'update'); - $row = array_merge($this->tempData['data'], $row); - } - } - - $this->escape = $this->tempData['escape'] ?? []; - $this->tempData = []; - - return parent::update($id, $row); - } - - /** - * Takes a class and returns an array of its public and protected - * properties as an array with raw values. - * - * @param object $object Object - * @param bool $recursive If true, inner entities will be cast as array as well - * - * @return array<string, mixed> - * - * @throws ReflectionException - */ - protected function objectToRawArray($object, bool $onlyChanged = true, bool $recursive = false): array - { - return parent::objectToRawArray($object, $onlyChanged); - } - - /** - * Provides/instantiates the builder/db connection and model's table/primary key names and return type. - * - * @param string $name Name - * - * @return array|BaseBuilder|bool|float|int|object|string|null - */ - public function __get(string $name) - { - if (parent::__isset($name)) { - return parent::__get($name); - } - - return $this->builder()->{$name} ?? null; - } - - /** - * Checks for the existence of properties across this model, builder, and db connection. - * - * @param string $name Name - */ - public function __isset(string $name): bool - { - if (parent::__isset($name)) { - return true; - } - - return isset($this->builder()->{$name}); - } - - /** - * Provides direct access to method in the builder (if available) - * and the database connection. - * - * @return $this|array|BaseBuilder|bool|float|int|object|string|null - */ - public function __call(string $name, array $params) - { - $builder = $this->builder(); - $result = null; - - if (method_exists($this->db, $name)) { - $result = $this->db->{$name}(...$params); - } elseif (method_exists($builder, $name)) { - $this->checkBuilderMethod($name); - - $result = $builder->{$name}(...$params); - } else { - throw new BadMethodCallException('Call to undefined method ' . static::class . '::' . $name); - } - - if ($result instanceof BaseBuilder) { - return $this; - } - - return $result; - } - - /** - * Checks the Builder method name that should not be used in the Model. - */ - private function checkBuilderMethod(string $name): void - { - if (in_array($name, $this->builderMethodsNotAvailable, true)) { - throw ModelException::forMethodNotAvailable(static::class, $name . '()'); - } - } - - /** - * Takes a class an returns an array of it's public and protected - * properties as an array suitable for use in creates and updates. - * - * @param object|string $data - * @param string|null $primaryKey - * - * @throws ReflectionException - * - * @codeCoverageIgnore - * - * @deprecated 4.1.0 - */ - public static function classToArray($data, $primaryKey = null, string $dateFormat = 'datetime', bool $onlyChanged = true): array - { - if (method_exists($data, 'toRawArray')) { - $properties = $data->toRawArray($onlyChanged); - - // Always grab the primary key otherwise updates will fail. - if ($properties !== [] && isset($primaryKey) && ! in_array($primaryKey, $properties, true) && isset($data->{$primaryKey})) { - $properties[$primaryKey] = $data->{$primaryKey}; - } - } else { - $mirror = new ReflectionClass($data); - $props = $mirror->getProperties(ReflectionProperty::IS_PUBLIC | ReflectionProperty::IS_PROTECTED); - - $properties = []; - - // Loop over each property, - // saving the name/value in a new array we can return. - foreach ($props as $prop) { - // Must make protected values accessible. - $prop->setAccessible(true); - $properties[$prop->getName()] = $prop->getValue($data); - } - } - - // Convert any Time instances to appropriate $dateFormat - if ($properties) { - foreach ($properties as $key => $value) { - if ($value instanceof Time) { - switch ($dateFormat) { - case 'datetime': - $converted = $value->format('Y-m-d H:i:s'); - break; - - case 'date': - $converted = $value->format('Y-m-d'); - break; - - case 'int': - $converted = $value->getTimestamp(); - break; - - default: - $converted = (string) $value; - } - - $properties[$key] = $converted; - } - } - } - - return $properties; - } -} diff --git a/system4.4.6/Modules/Modules.php b/system4.4.6/Modules/Modules.php deleted file mode 100644 index e17b9f3c..00000000 --- a/system4.4.6/Modules/Modules.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Modules; - -/** - * Modules Class - * - * @see https://codeigniter.com/user_guide/general/modules.html - * - * @phpstan-consistent-constructor - */ -class Modules -{ - /** - * Auto-Discover - * - * @var bool - */ - public $enabled = true; - - /** - * Auto-Discovery Within Composer Packages - * - * @var bool - */ - public $discoverInComposer = true; - - /** - * Auto-Discover Rules Handler - * - * @var list<string> - */ - public $aliases = []; - - public function __construct() - { - // For @phpstan-consistent-constructor - } - - /** - * Should the application auto-discover the requested resource. - */ - public function shouldDiscover(string $alias): bool - { - if (! $this->enabled) { - return false; - } - - return in_array(strtolower($alias), $this->aliases, true); - } - - public static function __set_state(array $array) - { - $obj = new static(); - - $properties = array_keys(get_object_vars($obj)); - - foreach ($properties as $property) { - $obj->{$property} = $array[$property]; - } - - return $obj; - } -} diff --git a/system4.4.6/Pager/Exceptions/PagerException.php b/system4.4.6/Pager/Exceptions/PagerException.php deleted file mode 100644 index 6f1032f7..00000000 --- a/system4.4.6/Pager/Exceptions/PagerException.php +++ /dev/null @@ -1,37 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Pager\Exceptions; - -use CodeIgniter\Exceptions\FrameworkException; - -class PagerException extends FrameworkException -{ - /** - * Throws when the template is invalid. - * - * @return static - */ - public static function forInvalidTemplate(?string $template = null) - { - return new static(lang('Pager.invalidTemplate', [$template])); - } - - /** - * Throws when the group is invalid. - * - * @return static - */ - public static function forInvalidPaginationGroup(?string $group = null) - { - return new static(lang('Pager.invalidPaginationGroup', [$group])); - } -} diff --git a/system4.4.6/Pager/Pager.php b/system4.4.6/Pager/Pager.php deleted file mode 100644 index d9de5faa..00000000 --- a/system4.4.6/Pager/Pager.php +++ /dev/null @@ -1,439 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Pager; - -use CodeIgniter\HTTP\Exceptions\HTTPException; -use CodeIgniter\HTTP\URI; -use CodeIgniter\Pager\Exceptions\PagerException; -use CodeIgniter\View\RendererInterface; -use Config\Pager as PagerConfig; - -/** - * Class Pager - * - * The Pager class provides semi-automatic and manual methods for creating - * pagination links and reading the current url's query variable, "page" - * to determine the current page. This class can support multiple - * paginations on a single page. - * - * @see \CodeIgniter\Pager\PagerTest - */ -class Pager implements PagerInterface -{ - /** - * The group data. - * - * @var array - */ - protected $groups = []; - - /** - * URI segment for groups if provided. - * - * @var array - */ - protected $segment = []; - - /** - * Our configuration instance. - * - * @var PagerConfig - */ - protected $config; - - /** - * The view engine to render the links with. - * - * @var RendererInterface - */ - protected $view; - - /** - * List of only permitted queries - * - * @var array - */ - protected $only = []; - - /** - * Constructor. - */ - public function __construct(PagerConfig $config, RendererInterface $view) - { - $this->config = $config; - $this->view = $view; - } - - /** - * Handles creating and displaying the - * - * @param string $template The output template alias to render. - */ - public function links(string $group = 'default', string $template = 'default_full'): string - { - $this->ensureGroup($group); - - return $this->displayLinks($group, $template); - } - - /** - * Creates simple Next/Previous links, instead of full pagination. - */ - public function simpleLinks(string $group = 'default', string $template = 'default_simple'): string - { - $this->ensureGroup($group); - - return $this->displayLinks($group, $template); - } - - /** - * Allows for a simple, manual, form of pagination where all of the data - * is provided by the user. The URL is the current URI. - * - * @param string $template The output template alias to render. - * @param int $segment (whether page number is provided by URI segment) - * @param string|null $group optional group (i.e. if we'd like to define custom path) - */ - public function makeLinks(int $page, ?int $perPage, int $total, string $template = 'default_full', int $segment = 0, ?string $group = 'default'): string - { - $group = $group === '' ? 'default' : $group; - - $this->store($group, $page, $perPage ?? $this->config->perPage, $total, $segment); - - return $this->displayLinks($group, $template); - } - - /** - * Does the actual work of displaying the view file. Used internally - * by links(), simpleLinks(), and makeLinks(). - */ - protected function displayLinks(string $group, string $template): string - { - if (! array_key_exists($template, $this->config->templates)) { - throw PagerException::forInvalidTemplate($template); - } - - $pager = new PagerRenderer($this->getDetails($group)); - - return $this->view->setVar('pager', $pager) - ->render($this->config->templates[$template]); - } - - /** - * Stores a set of pagination data for later display. Most commonly used - * by the model to automate the process. - * - * @return $this - */ - public function store(string $group, int $page, ?int $perPage, int $total, int $segment = 0) - { - if ($segment !== 0) { - $this->setSegment($segment, $group); - } - - $this->ensureGroup($group, $perPage); - - if ($segment > 0 && $this->groups[$group]['currentPage'] > 0) { - $page = $this->groups[$group]['currentPage']; - } - - $perPage ??= $this->config->perPage; - $pageCount = (int) ceil($total / $perPage); - - $this->groups[$group]['currentPage'] = $page > $pageCount ? $pageCount : $page; - $this->groups[$group]['perPage'] = $perPage; - $this->groups[$group]['total'] = $total; - $this->groups[$group]['pageCount'] = $pageCount; - - return $this; - } - - /** - * Sets segment for a group. - * - * @return $this - */ - public function setSegment(int $number, string $group = 'default') - { - $this->segment[$group] = $number; - - // Recalculate current page - $this->ensureGroup($group); - $this->calculateCurrentPage($group); - - return $this; - } - - /** - * Sets the path that an aliased group of links will use. - * - * @return $this - */ - public function setPath(string $path, string $group = 'default') - { - $this->ensureGroup($group); - - $this->groups[$group]['uri']->setPath($path); - - return $this; - } - - /** - * Returns the total number of items in data store. - */ - public function getTotal(string $group = 'default'): int - { - $this->ensureGroup($group); - - return $this->groups[$group]['total']; - } - - /** - * Returns the total number of pages. - */ - public function getPageCount(string $group = 'default'): int - { - $this->ensureGroup($group); - - return $this->groups[$group]['pageCount']; - } - - /** - * Returns the number of the current page of results. - */ - public function getCurrentPage(string $group = 'default'): int - { - $this->ensureGroup($group); - - return $this->groups[$group]['currentPage'] ?: 1; - } - - /** - * Tells whether this group of results has any more pages of results. - */ - public function hasMore(string $group = 'default'): bool - { - $this->ensureGroup($group); - - return ($this->groups[$group]['currentPage'] * $this->groups[$group]['perPage']) < $this->groups[$group]['total']; - } - - /** - * Returns the last page, if we have a total that we can calculate with. - * - * @return int|null - */ - public function getLastPage(string $group = 'default') - { - $this->ensureGroup($group); - - if (! is_numeric($this->groups[$group]['total']) || ! is_numeric($this->groups[$group]['perPage'])) { - return null; - } - - return (int) ceil($this->groups[$group]['total'] / $this->groups[$group]['perPage']); - } - - /** - * Determines the first page # that should be shown. - */ - public function getFirstPage(string $group = 'default'): int - { - $this->ensureGroup($group); - - // @todo determine based on a 'surroundCount' value - return 1; - } - - /** - * Returns the URI for a specific page for the specified group. - * - * @return string|URI - */ - public function getPageURI(?int $page = null, string $group = 'default', bool $returnObject = false) - { - $this->ensureGroup($group); - - /** - * @var URI $uri - */ - $uri = $this->groups[$group]['uri']; - - $segment = $this->segment[$group] ?? 0; - - if ($segment) { - $uri->setSegment($segment, $page); - } else { - $uri->addQuery($this->groups[$group]['pageSelector'], $page); - } - - if ($this->only) { - $query = array_intersect_key($_GET, array_flip($this->only)); - - if (! $segment) { - $query[$this->groups[$group]['pageSelector']] = $page; - } - - $uri->setQueryArray($query); - } - - return ($returnObject === true) - ? $uri - : URI::createURIString( - $uri->getScheme(), - $uri->getAuthority(), - $uri->getPath(), - $uri->getQuery(), - $uri->getFragment() - ); - } - - /** - * Returns the full URI to the next page of results, or null. - * - * @return string|null - */ - public function getNextPageURI(string $group = 'default', bool $returnObject = false) - { - $this->ensureGroup($group); - - $last = $this->getLastPage($group); - $curr = $this->getCurrentPage($group); - $page = null; - - if (! empty($last) && $curr !== 0 && $last === $curr) { - return null; - } - - if ($last > $curr) { - $page = $curr + 1; - } - - return $this->getPageURI($page, $group, $returnObject); - } - - /** - * Returns the full URL to the previous page of results, or null. - * - * @return string|null - */ - public function getPreviousPageURI(string $group = 'default', bool $returnObject = false) - { - $this->ensureGroup($group); - - $first = $this->getFirstPage($group); - $curr = $this->getCurrentPage($group); - $page = null; - - if ($first !== 0 && $curr !== 0 && $first === $curr) { - return null; - } - - if ($first < $curr) { - $page = $curr - 1; - } - - return $this->getPageURI($page, $group, $returnObject); - } - - /** - * Returns the number of results per page that should be shown. - */ - public function getPerPage(string $group = 'default'): int - { - $this->ensureGroup($group); - - return (int) $this->groups[$group]['perPage']; - } - - /** - * Returns an array with details about the results, including - * total, per_page, current_page, last_page, next_url, prev_url, from, to. - * Does not include the actual data. This data is suitable for adding - * a 'data' object to with the result set and converting to JSON. - */ - public function getDetails(string $group = 'default'): array - { - if (! array_key_exists($group, $this->groups)) { - throw PagerException::forInvalidPaginationGroup($group); - } - - $newGroup = $this->groups[$group]; - - $newGroup['next'] = $this->getNextPageURI($group); - $newGroup['previous'] = $this->getPreviousPageURI($group); - $newGroup['segment'] = $this->segment[$group] ?? 0; - - return $newGroup; - } - - /** - * Sets only allowed queries on pagination links. - */ - public function only(array $queries): self - { - $this->only = $queries; - - return $this; - } - - /** - * Ensures that an array exists for the group specified. - * - * @return void - */ - protected function ensureGroup(string $group, ?int $perPage = null) - { - if (array_key_exists($group, $this->groups)) { - return; - } - - $this->groups[$group] = [ - 'currentUri' => clone current_url(true), - 'uri' => clone current_url(true), - 'hasMore' => false, - 'total' => null, - 'perPage' => $perPage ?? $this->config->perPage, - 'pageCount' => 1, - 'pageSelector' => $group === 'default' ? 'page' : 'page_' . $group, - ]; - - $this->calculateCurrentPage($group); - - if ($_GET !== []) { - $this->groups[$group]['uri'] = $this->groups[$group]['uri']->setQueryArray($_GET); - } - } - - /** - * Calculating the current page - * - * @return void - */ - protected function calculateCurrentPage(string $group) - { - if (array_key_exists($group, $this->segment)) { - try { - $this->groups[$group]['currentPage'] = (int) $this->groups[$group]['currentUri'] - ->setSilent(false)->getSegment($this->segment[$group]); - } catch (HTTPException $e) { - $this->groups[$group]['currentPage'] = 1; - } - } else { - $pageSelector = $this->groups[$group]['pageSelector']; - - $page = (int) ($_GET[$pageSelector] ?? 1); - - $this->groups[$group]['currentPage'] = $page < 1 ? 1 : $page; - } - } -} diff --git a/system4.4.6/Pager/PagerInterface.php b/system4.4.6/Pager/PagerInterface.php deleted file mode 100644 index 84018d7a..00000000 --- a/system4.4.6/Pager/PagerInterface.php +++ /dev/null @@ -1,118 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Pager; - -use CodeIgniter\HTTP\URI; - -/** - * Expected behavior for a Pager - */ -interface PagerInterface -{ - /** - * Handles creating and displaying the - * - * @param string $template The output template alias to render. - */ - public function links(string $group = 'default', string $template = 'default'): string; - - /** - * Creates simple Next/Previous links, instead of full pagination. - */ - public function simpleLinks(string $group = 'default', string $template = 'default'): string; - - /** - * Allows for a simple, manual, form of pagination where all of the data - * is provided by the user. The URL is the current URI. - * - * @param string $template The output template alias to render. - */ - public function makeLinks(int $page, int $perPage, int $total, string $template = 'default'): string; - - /** - * Stores a set of pagination data for later display. Most commonly used - * by the model to automate the process. - * - * @return $this - */ - public function store(string $group, int $page, int $perPage, int $total); - - /** - * Sets the path that an aliased group of links will use. - * - * @return $this - */ - public function setPath(string $path, string $group = 'default'); - - /** - * Returns the total number of pages. - */ - public function getPageCount(string $group = 'default'): int; - - /** - * Returns the number of the current page of results. - */ - public function getCurrentPage(string $group = 'default'): int; - - /** - * Returns the URI for a specific page for the specified group. - * - * @return string|URI - */ - public function getPageURI(?int $page = null, string $group = 'default', bool $returnObject = false); - - /** - * Tells whether this group of results has any more pages of results. - */ - public function hasMore(string $group = 'default'): bool; - - /** - * Returns the first page. - * - * @return int - */ - public function getFirstPage(string $group = 'default'); - - /** - * Returns the last page, if we have a total that we can calculate with. - * - * @return int|null - */ - public function getLastPage(string $group = 'default'); - - /** - * Returns the full URI to the next page of results, or null. - * - * @return string|null - */ - public function getNextPageURI(string $group = 'default'); - - /** - * Returns the full URL to the previous page of results, or null. - * - * @return string|null - */ - public function getPreviousPageURI(string $group = 'default'); - - /** - * Returns the number of results per page that should be shown. - */ - public function getPerPage(string $group = 'default'): int; - - /** - * Returns an array with details about the results, including - * total, per_page, current_page, last_page, next_url, prev_url, from, to. - * Does not include the actual data. This data is suitable for adding - * a 'data' object to with the result set and converting to JSON. - */ - public function getDetails(string $group = 'default'): array; -} diff --git a/system4.4.6/Pager/PagerRenderer.php b/system4.4.6/Pager/PagerRenderer.php deleted file mode 100644 index 9e6d2950..00000000 --- a/system4.4.6/Pager/PagerRenderer.php +++ /dev/null @@ -1,431 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Pager; - -use CodeIgniter\HTTP\URI; - -/** - * Class PagerRenderer - * - * This class is passed to the view that describes the pagination, - * and is used to get the link information and provide utility - * methods needed to work with pagination. - * - * @see \CodeIgniter\Pager\PagerRendererTest - */ -class PagerRenderer -{ - /** - * First page number in the set of links to be displayed. - * - * @var int - */ - protected $first; - - /** - * Last page number in the set of links to be displayed. - * - * @var int - */ - protected $last; - - /** - * Current page number. - * - * @var int - */ - protected $current; - - /** - * Total number of items. - * - * @var int - */ - protected $total; - - /** - * Total number of pages. - * - * @var int - */ - protected $pageCount; - - /** - * URI base for pagination links - * - * @var URI - */ - protected $uri; - - /** - * Segment number used for pagination. - * - * @var int - */ - protected $segment; - - /** - * Name of $_GET parameter - * - * @var string - */ - protected $pageSelector; - - /** - * Constructor. - */ - public function __construct(array $details) - { - // `first` and `last` will be updated by `setSurroundCount()`. - // You must call `setSurroundCount()` after instantiation. - $this->first = 1; - $this->last = $details['pageCount']; - - $this->current = $details['currentPage']; - $this->total = $details['total']; - $this->uri = $details['uri']; - $this->pageCount = $details['pageCount']; - $this->segment = $details['segment'] ?? 0; - $this->pageSelector = $details['pageSelector'] ?? 'page'; - } - - /** - * Sets the total number of links that should appear on either - * side of the current page. Adjusts the first and last counts - * to reflect it. - * - * @return PagerRenderer - */ - public function setSurroundCount(?int $count = null) - { - $this->updatePages($count); - - return $this; - } - - /** - * Checks to see if there is a "previous" page before our "first" page. - */ - public function hasPrevious(): bool - { - return $this->first > 1; - } - - /** - * Returns a URL to the "previous" page. The previous page is NOT the - * page before the current page, but is the page just before the - * "first" page. - * - * @return string|null - */ - public function getPrevious() - { - if (! $this->hasPrevious()) { - return null; - } - - $uri = clone $this->uri; - - if ($this->segment === 0) { - $uri->addQuery($this->pageSelector, $this->first - 1); - } else { - $uri->setSegment($this->segment, $this->first - 1); - } - - return URI::createURIString( - $uri->getScheme(), - $uri->getAuthority(), - $uri->getPath(), - $uri->getQuery(), - $uri->getFragment() - ); - } - - /** - * Checks to see if there is a "next" page after our "last" page. - */ - public function hasNext(): bool - { - return $this->pageCount > $this->last; - } - - /** - * Returns a URL to the "next" page. The next page is NOT, the - * page after the current page, but is the page that follows the - * "last" page. - * - * @return string|null - */ - public function getNext() - { - if (! $this->hasNext()) { - return null; - } - - $uri = clone $this->uri; - - if ($this->segment === 0) { - $uri->addQuery($this->pageSelector, $this->last + 1); - } else { - $uri->setSegment($this->segment, $this->last + 1); - } - - return URI::createURIString( - $uri->getScheme(), - $uri->getAuthority(), - $uri->getPath(), - $uri->getQuery(), - $uri->getFragment() - ); - } - - /** - * Returns the URI of the first page. - */ - public function getFirst(): string - { - $uri = clone $this->uri; - - if ($this->segment === 0) { - $uri->addQuery($this->pageSelector, 1); - } else { - $uri->setSegment($this->segment, 1); - } - - return URI::createURIString( - $uri->getScheme(), - $uri->getAuthority(), - $uri->getPath(), - $uri->getQuery(), - $uri->getFragment() - ); - } - - /** - * Returns the URI of the last page. - */ - public function getLast(): string - { - $uri = clone $this->uri; - - if ($this->segment === 0) { - $uri->addQuery($this->pageSelector, $this->pageCount); - } else { - $uri->setSegment($this->segment, $this->pageCount); - } - - return URI::createURIString( - $uri->getScheme(), - $uri->getAuthority(), - $uri->getPath(), - $uri->getQuery(), - $uri->getFragment() - ); - } - - /** - * Returns the URI of the current page. - */ - public function getCurrent(): string - { - $uri = clone $this->uri; - - if ($this->segment === 0) { - $uri->addQuery($this->pageSelector, $this->current); - } else { - $uri->setSegment($this->segment, $this->current); - } - - return URI::createURIString( - $uri->getScheme(), - $uri->getAuthority(), - $uri->getPath(), - $uri->getQuery(), - $uri->getFragment() - ); - } - - /** - * Returns an array of links that should be displayed. Each link - * is represented by another array containing of the URI the link - * should go to, the title (number) of the link, and a boolean - * value representing whether this link is active or not. - * - * @return list<array{uri:string, title:int, active:bool}> - */ - public function links(): array - { - $links = []; - - $uri = clone $this->uri; - - for ($i = $this->first; $i <= $this->last; $i++) { - $uri = $this->segment === 0 ? $uri->addQuery($this->pageSelector, $i) : $uri->setSegment($this->segment, $i); - $links[] = [ - 'uri' => URI::createURIString( - $uri->getScheme(), - $uri->getAuthority(), - $uri->getPath(), - $uri->getQuery(), - $uri->getFragment() - ), - 'title' => $i, - 'active' => ($i === $this->current), - ]; - } - - return $links; - } - - /** - * Updates the first and last pages based on $surroundCount, - * which is the number of links surrounding the active page - * to show. - * - * @param int|null $count The new "surroundCount" - * - * @return void - */ - protected function updatePages(?int $count = null) - { - if ($count === null) { - return; - } - - $this->first = $this->current - $count > 0 ? $this->current - $count : 1; - $this->last = $this->current + $count <= $this->pageCount ? $this->current + $count : (int) $this->pageCount; - } - - /** - * Checks to see if there is a "previous" page before our "first" page. - */ - public function hasPreviousPage(): bool - { - return $this->current > 1; - } - - /** - * Returns a URL to the "previous" page. - * - * You MUST call hasPreviousPage() first, or this value may be invalid. - * - * @return string|null - */ - public function getPreviousPage() - { - if (! $this->hasPreviousPage()) { - return null; - } - - $uri = clone $this->uri; - - if ($this->segment === 0) { - $uri->addQuery($this->pageSelector, $this->current - 1); - } else { - $uri->setSegment($this->segment, $this->current - 1); - } - - return URI::createURIString( - $uri->getScheme(), - $uri->getAuthority(), - $uri->getPath(), - $uri->getQuery(), - $uri->getFragment() - ); - } - - /** - * Checks to see if there is a "next" page after our "last" page. - */ - public function hasNextPage(): bool - { - return $this->current < $this->last; - } - - /** - * Returns a URL to the "next" page. - * - * You MUST call hasNextPage() first, or this value may be invalid. - * - * @return string|null - */ - public function getNextPage() - { - if (! $this->hasNextPage()) { - return null; - } - - $uri = clone $this->uri; - - if ($this->segment === 0) { - $uri->addQuery($this->pageSelector, $this->current + 1); - } else { - $uri->setSegment($this->segment, $this->current + 1); - } - - return URI::createURIString( - $uri->getScheme(), - $uri->getAuthority(), - $uri->getPath(), - $uri->getQuery(), - $uri->getFragment() - ); - } - - /** - * Returns the page number of the first page in the set of links to be displayed. - */ - public function getFirstPageNumber(): int - { - return $this->first; - } - - /** - * Returns the page number of the current page. - */ - public function getCurrentPageNumber(): int - { - return $this->current; - } - - /** - * Returns the page number of the last page in the set of links to be displayed. - */ - public function getLastPageNumber(): int - { - return $this->last; - } - - /** - * Returns total number of pages. - */ - public function getPageCount(): int - { - return $this->pageCount; - } - - /** - * Returns the previous page number. - */ - public function getPreviousPageNumber(): ?int - { - return ($this->current === 1) ? null : $this->current - 1; - } - - /** - * Returns the next page number. - */ - public function getNextPageNumber(): ?int - { - return ($this->current === $this->pageCount) ? null : $this->current + 1; - } -} diff --git a/system4.4.6/Pager/Views/default_full.php b/system4.4.6/Pager/Views/default_full.php deleted file mode 100644 index 0001143c..00000000 --- a/system4.4.6/Pager/Views/default_full.php +++ /dev/null @@ -1,47 +0,0 @@ -<?php - -use CodeIgniter\Pager\PagerRenderer; - -/** - * @var PagerRenderer $pager - */ -$pager->setSurroundCount(2); -?> - -<nav aria-label="<?= lang('Pager.pageNavigation') ?>"> - <ul class="pagination"> - <?php if ($pager->hasPrevious()) : ?> - <li> - <a href="<?= $pager->getFirst() ?>" aria-label="<?= lang('Pager.first') ?>"> - <span aria-hidden="true"><?= lang('Pager.first') ?></span> - </a> - </li> - <li> - <a href="<?= $pager->getPrevious() ?>" aria-label="<?= lang('Pager.previous') ?>"> - <span aria-hidden="true"><?= lang('Pager.previous') ?></span> - </a> - </li> - <?php endif ?> - - <?php foreach ($pager->links() as $link) : ?> - <li <?= $link['active'] ? 'class="active"' : '' ?>> - <a href="<?= $link['uri'] ?>"> - <?= $link['title'] ?> - </a> - </li> - <?php endforeach ?> - - <?php if ($pager->hasNext()) : ?> - <li> - <a href="<?= $pager->getNext() ?>" aria-label="<?= lang('Pager.next') ?>"> - <span aria-hidden="true"><?= lang('Pager.next') ?></span> - </a> - </li> - <li> - <a href="<?= $pager->getLast() ?>" aria-label="<?= lang('Pager.last') ?>"> - <span aria-hidden="true"><?= lang('Pager.last') ?></span> - </a> - </li> - <?php endif ?> - </ul> -</nav> diff --git a/system4.4.6/Pager/Views/default_head.php b/system4.4.6/Pager/Views/default_head.php deleted file mode 100644 index c233e5ea..00000000 --- a/system4.4.6/Pager/Views/default_head.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -use CodeIgniter\Pager\PagerRenderer; - -/** - * @var PagerRenderer $pager - */ -$pager->setSurroundCount(0); - -if ($pager->hasPrevious()) { - echo '<link rel="prev" href="' . $pager->getPrevious() . '">' . PHP_EOL; -} - -echo '<link rel="canonical" href="' . $pager->getCurrent() . '">' . PHP_EOL; - -if ($pager->hasNext()) { - echo '<link rel="next" href="' . $pager->getNext() . '">' . PHP_EOL; -} diff --git a/system4.4.6/Pager/Views/default_simple.php b/system4.4.6/Pager/Views/default_simple.php deleted file mode 100644 index df7f7e0e..00000000 --- a/system4.4.6/Pager/Views/default_simple.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php - -use CodeIgniter\Pager\PagerRenderer; - -/** - * @var PagerRenderer $pager - */ -$pager->setSurroundCount(0); -?> -<nav> - <ul class="pager"> - <li <?= $pager->hasPrevious() ? '' : 'class="disabled"' ?>> - <a href="<?= $pager->getPrevious() ?? '#' ?>" aria-label="<?= lang('Pager.previous') ?>"> - <span aria-hidden="true"><?= lang('Pager.newer') ?></span> - </a> - </li> - <li <?= $pager->hasNext() ? '' : 'class="disabled"' ?>> - <a href="<?= $pager->getNext() ?? '#' ?>" aria-label="<?= lang('Pager.next') ?>"> - <span aria-hidden="true"><?= lang('Pager.older') ?></span> - </a> - </li> - </ul> -</nav> diff --git a/system4.4.6/Publisher/ContentReplacer.php b/system4.4.6/Publisher/ContentReplacer.php deleted file mode 100644 index accfdd71..00000000 --- a/system4.4.6/Publisher/ContentReplacer.php +++ /dev/null @@ -1,99 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Publisher; - -use RuntimeException; - -/** - * Replace Text Content - * - * @see \CodeIgniter\Publisher\ContentReplacerTest - */ -class ContentReplacer -{ - /** - * Replace content - * - * @param array $replaces [search => replace] - */ - public function replace(string $content, array $replaces): string - { - return strtr($content, $replaces); - } - - /** - * Add text - * - * @param string $text Text to add. - * @param string $pattern Regexp search pattern. - * @param string $replace Regexp replacement including text to add. - * - * @return string|null Updated content, or null if not updated. - */ - private function add(string $content, string $text, string $pattern, string $replace): ?string - { - $return = preg_match('/' . preg_quote($text, '/') . '/u', $content); - - if ($return === false) { - // Regexp error. - throw new RuntimeException('Regex error. PCRE error code: ' . preg_last_error()); - } - - if ($return === 1) { - // It has already been updated. - return null; - } - - $return = preg_replace($pattern, $replace, $content); - - if ($return === null) { - // Regexp error. - throw new RuntimeException('Regex error. PCRE error code: ' . preg_last_error()); - } - - return $return; - } - - /** - * Add line after the line with the string - * - * @param string $content Whole content. - * @param string $line Line to add. - * @param string $after String to search. - * - * @return string|null Updated content, or null if not updated. - */ - public function addAfter(string $content, string $line, string $after): ?string - { - $pattern = '/(.*)(\n[^\n]*?' . preg_quote($after, '/') . '[^\n]*?\n)/su'; - $replace = '$1$2' . $line . "\n"; - - return $this->add($content, $line, $pattern, $replace); - } - - /** - * Add line before the line with the string - * - * @param string $content Whole content. - * @param string $line Line to add. - * @param string $before String to search. - * - * @return string|null Updated content, or null if not updated. - */ - public function addBefore(string $content, string $line, string $before): ?string - { - $pattern = '/(\n)([^\n]*?' . preg_quote($before, '/') . ')(.*)/su'; - $replace = '$1' . $line . "\n" . '$2$3'; - - return $this->add($content, $line, $pattern, $replace); - } -} diff --git a/system4.4.6/Publisher/Exceptions/PublisherException.php b/system4.4.6/Publisher/Exceptions/PublisherException.php deleted file mode 100644 index 5204897c..00000000 --- a/system4.4.6/Publisher/Exceptions/PublisherException.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Publisher\Exceptions; - -use CodeIgniter\Exceptions\FrameworkException; - -/** - * Publisher Exception Class - * - * Handles exceptions related to actions taken by a Publisher. - */ -class PublisherException extends FrameworkException -{ - /** - * Throws when a file should be overwritten yet cannot. - * - * @param string $from The source file - * @param string $to The destination file - * - * @return static - */ - public static function forCollision(string $from, string $to) - { - return new static(lang('Publisher.collision', [filetype($to), $from, $to])); - } - - /** - * Throws when given a destination that is not in the list of allowed directories. - * - * @return static - */ - public static function forDestinationNotAllowed(string $destination) - { - return new static(lang('Publisher.destinationNotAllowed', [$destination])); - } - - /** - * Throws when a file fails to match the allowed pattern for its destination. - * - * @return static - */ - public static function forFileNotAllowed(string $file, string $directory, string $pattern) - { - return new static(lang('Publisher.fileNotAllowed', [$file, $directory, $pattern])); - } -} diff --git a/system4.4.6/Publisher/Publisher.php b/system4.4.6/Publisher/Publisher.php deleted file mode 100644 index e40a14c8..00000000 --- a/system4.4.6/Publisher/Publisher.php +++ /dev/null @@ -1,514 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Publisher; - -use CodeIgniter\Autoloader\FileLocator; -use CodeIgniter\Files\FileCollection; -use CodeIgniter\HTTP\URI; -use CodeIgniter\Publisher\Exceptions\PublisherException; -use Config\Publisher as PublisherConfig; -use RuntimeException; -use Throwable; - -/** - * Publishers read in file paths from a variety of sources and copy - * the files out to different destinations. This class acts both as - * a base for individual publication directives as well as the mode - * of discovery for said instances. In this class a "file" is a full - * path to a verified file while a "path" is relative to its source - * or destination and may indicate either a file or directory of - * unconfirmed existence. - * - * Class failures throw the PublisherException, but some underlying - * methods may percolate different exceptions, like FileException, - * FileNotFoundException or InvalidArgumentException. - * - * Write operations will catch all errors in the file-specific - * $errors property to minimize impact of partial batch operations. - */ -class Publisher extends FileCollection -{ - /** - * Array of discovered Publishers. - * - * @var array<string, self[]|null> - */ - private static array $discovered = []; - - /** - * Directory to use for methods that need temporary storage. - * Created on-the-fly as needed. - */ - private ?string $scratch = null; - - /** - * Exceptions for specific files from the last write operation. - * - * @var array<string, Throwable> - */ - private array $errors = []; - - /** - * List of file published curing the last write operation. - * - * @var string[] - */ - private array $published = []; - - /** - * List of allowed directories and their allowed files regex. - * Restrictions are intentionally private to prevent overriding. - * - * @var array<string,string> - */ - private array $restrictions; - - private ContentReplacer $replacer; - - /** - * Base path to use for the source. - * - * @var string - */ - protected $source = ROOTPATH; - - /** - * Base path to use for the destination. - * - * @var string - */ - protected $destination = FCPATH; - - // -------------------------------------------------------------------- - // Support Methods - // -------------------------------------------------------------------- - - /** - * Discovers and returns all Publishers in the specified namespace directory. - * - * @return self[] - */ - final public static function discover(string $directory = 'Publishers'): array - { - if (isset(self::$discovered[$directory])) { - return self::$discovered[$directory]; - } - - self::$discovered[$directory] = []; - - /** @var FileLocator $locator */ - $locator = service('locator'); - - if ([] === $files = $locator->listFiles($directory)) { - return []; - } - - // Loop over each file checking to see if it is a Publisher - foreach (array_unique($files) as $file) { - $className = $locator->getClassname($file); - - if ($className !== '' && class_exists($className) && is_a($className, self::class, true)) { - self::$discovered[$directory][] = new $className(); - } - } - - sort(self::$discovered[$directory]); - - return self::$discovered[$directory]; - } - - /** - * Removes a directory and all its files and subdirectories. - */ - private static function wipeDirectory(string $directory): void - { - if (is_dir($directory)) { - // Try a few times in case of lingering locks - $attempts = 10; - - while ((bool) $attempts && ! delete_files($directory, true, false, true)) { - // @codeCoverageIgnoreStart - $attempts--; - usleep(100000); // .1s - // @codeCoverageIgnoreEnd - } - - @rmdir($directory); - } - } - - // -------------------------------------------------------------------- - // Class Core - // -------------------------------------------------------------------- - - /** - * Loads the helper and verifies the source and destination directories. - */ - public function __construct(?string $source = null, ?string $destination = null) - { - helper(['filesystem']); - - $this->source = self::resolveDirectory($source ?? $this->source); - $this->destination = self::resolveDirectory($destination ?? $this->destination); - - $this->replacer = new ContentReplacer(); - - // Restrictions are intentionally not injected to prevent overriding - $this->restrictions = config(PublisherConfig::class)->restrictions; - - // Make sure the destination is allowed - foreach (array_keys($this->restrictions) as $directory) { - if (strpos($this->destination, $directory) === 0) { - return; - } - } - - throw PublisherException::forDestinationNotAllowed($this->destination); - } - - /** - * Cleans up any temporary files in the scratch space. - */ - public function __destruct() - { - if (isset($this->scratch)) { - self::wipeDirectory($this->scratch); - - $this->scratch = null; - } - } - - /** - * Reads files from the sources and copies them out to their destinations. - * This method should be reimplemented by child classes intended for - * discovery. - * - * @throws RuntimeException - */ - public function publish(): bool - { - // Safeguard against accidental misuse - if ($this->source === ROOTPATH && $this->destination === FCPATH) { - throw new RuntimeException('Child classes of Publisher should provide their own publish method or a source and destination.'); - } - - return $this->addPath('/')->merge(true); - } - - // -------------------------------------------------------------------- - // Property Accessors - // -------------------------------------------------------------------- - - /** - * Returns the source directory. - */ - final public function getSource(): string - { - return $this->source; - } - - /** - * Returns the destination directory. - */ - final public function getDestination(): string - { - return $this->destination; - } - - /** - * Returns the temporary workspace, creating it if necessary. - */ - final public function getScratch(): string - { - if ($this->scratch === null) { - $this->scratch = rtrim(sys_get_temp_dir(), DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . bin2hex(random_bytes(6)) . DIRECTORY_SEPARATOR; - mkdir($this->scratch, 0700); - $this->scratch = realpath($this->scratch) ? realpath($this->scratch) . DIRECTORY_SEPARATOR - : $this->scratch; - } - - return $this->scratch; - } - - /** - * Returns errors from the last write operation if any. - * - * @return array<string,Throwable> - */ - final public function getErrors(): array - { - return $this->errors; - } - - /** - * Returns the files published by the last write operation. - * - * @return string[] - */ - final public function getPublished(): array - { - return $this->published; - } - - // -------------------------------------------------------------------- - // Additional Handlers - // -------------------------------------------------------------------- - - /** - * Verifies and adds paths to the list. - * - * @param string[] $paths - * - * @return $this - */ - final public function addPaths(array $paths, bool $recursive = true) - { - foreach ($paths as $path) { - $this->addPath($path, $recursive); - } - - return $this; - } - - /** - * Adds a single path to the file list. - * - * @return $this - */ - final public function addPath(string $path, bool $recursive = true) - { - $this->add($this->source . $path, $recursive); - - return $this; - } - - /** - * Downloads and stages files from an array of URIs. - * - * @param string[] $uris - * - * @return $this - */ - final public function addUris(array $uris) - { - foreach ($uris as $uri) { - $this->addUri($uri); - } - - return $this; - } - - /** - * Downloads a file from the URI, and adds it to the file list. - * - * @param string $uri Because HTTP\URI is stringable it will still be accepted - * - * @return $this - */ - final public function addUri(string $uri) - { - // Figure out a good filename (using URI strips queries and fragments) - $file = $this->getScratch() . basename((new URI($uri))->getPath()); - - // Get the content and write it to the scratch space - write_file($file, service('curlrequest')->get($uri)->getBody()); - - return $this->addFile($file); - } - - // -------------------------------------------------------------------- - // Write Methods - // -------------------------------------------------------------------- - - /** - * Removes the destination and all its files and folders. - * - * @return $this - */ - final public function wipe() - { - self::wipeDirectory($this->destination); - - return $this; - } - - /** - * Copies all files into the destination, does not create directory structure. - * - * @param bool $replace Whether to overwrite existing files. - * - * @return bool Whether all files were copied successfully - */ - final public function copy(bool $replace = true): bool - { - $this->errors = $this->published = []; - - foreach ($this->get() as $file) { - $to = $this->destination . basename($file); - - try { - $this->safeCopyFile($file, $to, $replace); - $this->published[] = $to; - } catch (Throwable $e) { - $this->errors[$file] = $e; - } - } - - return $this->errors === []; - } - - /** - * Merges all files into the destination. - * Creates a mirrored directory structure only for files from source. - * - * @param bool $replace Whether to overwrite existing files. - * - * @return bool Whether all files were copied successfully - */ - final public function merge(bool $replace = true): bool - { - $this->errors = $this->published = []; - - // Get the files from source for special handling - $sourced = self::filterFiles($this->get(), $this->source); - - // Handle everything else with a flat copy - $this->files = array_diff($this->files, $sourced); - $this->copy($replace); - - // Copy each sourced file to its relative destination - foreach ($sourced as $file) { - // Resolve the destination path - $to = $this->destination . substr($file, strlen($this->source)); - - try { - $this->safeCopyFile($file, $to, $replace); - $this->published[] = $to; - } catch (Throwable $e) { - $this->errors[$file] = $e; - } - } - - return $this->errors === []; - } - - /** - * Replace content - * - * @param array $replaces [search => replace] - */ - public function replace(string $file, array $replaces): bool - { - $this->verifyAllowed($file, $file); - - $content = file_get_contents($file); - - $newContent = $this->replacer->replace($content, $replaces); - - $return = file_put_contents($file, $newContent); - - return $return !== false; - } - - /** - * Add line after the line with the string - * - * @param string $after String to search. - */ - public function addLineAfter(string $file, string $line, string $after): bool - { - $this->verifyAllowed($file, $file); - - $content = file_get_contents($file); - - $result = $this->replacer->addAfter($content, $line, $after); - - if ($result !== null) { - $return = file_put_contents($file, $result); - - return $return !== false; - } - - return false; - } - - /** - * Add line before the line with the string - * - * @param string $before String to search. - */ - public function addLineBefore(string $file, string $line, string $before): bool - { - $this->verifyAllowed($file, $file); - - $content = file_get_contents($file); - - $result = $this->replacer->addBefore($content, $line, $before); - - if ($result !== null) { - $return = file_put_contents($file, $result); - - return $return !== false; - } - - return false; - } - - /** - * Verify this is an allowed file for its destination. - */ - private function verifyAllowed(string $from, string $to): void - { - // Verify this is an allowed file for its destination - foreach ($this->restrictions as $directory => $pattern) { - if (strpos($to, $directory) === 0 && self::matchFiles([$to], $pattern) === []) { - throw PublisherException::forFileNotAllowed($from, $directory, $pattern); - } - } - } - - /** - * Copies a file with directory creation and identical file awareness. - * Intentionally allows errors. - * - * @throws PublisherException For collisions and restriction violations - */ - private function safeCopyFile(string $from, string $to, bool $replace): void - { - // Verify this is an allowed file for its destination - $this->verifyAllowed($from, $to); - - // Check for an existing file - if (file_exists($to)) { - // If not replacing or if files are identical then consider successful - if (! $replace || same_file($from, $to)) { - return; - } - - // If it is a directory then do not try to remove it - if (is_dir($to)) { - throw PublisherException::forCollision($from, $to); - } - - // Try to remove anything else - unlink($to); - } - - // Make sure the directory exists - if (! is_dir($directory = pathinfo($to, PATHINFO_DIRNAME))) { - mkdir($directory, 0775, true); - } - - // Allow copy() to throw errors - copy($from, $to); - } -} diff --git a/system4.4.6/RESTful/BaseResource.php b/system4.4.6/RESTful/BaseResource.php deleted file mode 100644 index 1c21f65d..00000000 --- a/system4.4.6/RESTful/BaseResource.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\RESTful; - -use CodeIgniter\Controller; -use CodeIgniter\HTTP\CLIRequest; -use CodeIgniter\HTTP\IncomingRequest; -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\ResponseInterface; -use Psr\Log\LoggerInterface; - -abstract class BaseResource extends Controller -{ - /** - * Instance of the main Request object. - * - * @var CLIRequest|IncomingRequest - */ - protected $request; - - /** - * @var string|null The model that holding this resource's data - */ - protected $modelName; - - /** - * @var object|null The model that holding this resource's data - */ - protected $model; - - /** - * Constructor. - * - * @return void - */ - public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) - { - parent::initController($request, $response, $logger); - - $this->setModel($this->modelName); - } - - /** - * Set or change the model this controller is bound to. - * Given either the name or the object, determine the other. - * - * @param object|string|null $which - * - * @return void - */ - public function setModel($which = null) - { - if ($which) { - $this->model = is_object($which) ? $which : null; - $this->modelName = is_object($which) ? null : $which; - } - - if (empty($this->model) && ! empty($this->modelName) && class_exists($this->modelName)) { - $this->model = model($this->modelName); - } - - if (! empty($this->model) && empty($this->modelName)) { - $this->modelName = get_class($this->model); - } - } -} diff --git a/system4.4.6/RESTful/ResourceController.php b/system4.4.6/RESTful/ResourceController.php deleted file mode 100644 index bd035626..00000000 --- a/system4.4.6/RESTful/ResourceController.php +++ /dev/null @@ -1,118 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\RESTful; - -use CodeIgniter\API\ResponseTrait; -use CodeIgniter\HTTP\ResponseInterface; - -/** - * An extendable controller to provide a RESTful API for a resource. - * - * @see \CodeIgniter\RESTful\ResourceControllerTest - */ -class ResourceController extends BaseResource -{ - use ResponseTrait; - - /** - * Return an array of resource objects, themselves in array format - * - * @return ResponseInterface|string|void - */ - public function index() - { - return $this->fail(lang('RESTful.notImplemented', ['index']), 501); - } - - /** - * Return the properties of a resource object - * - * @param int|string|null $id - * - * @return ResponseInterface|string|void - */ - public function show($id = null) - { - return $this->fail(lang('RESTful.notImplemented', ['show']), 501); - } - - /** - * Return a new resource object, with default properties - * - * @return ResponseInterface|string|void - */ - public function new() - { - return $this->fail(lang('RESTful.notImplemented', ['new']), 501); - } - - /** - * Create a new resource object, from "posted" parameters - * - * @return ResponseInterface|string|void - */ - public function create() - { - return $this->fail(lang('RESTful.notImplemented', ['create']), 501); - } - - /** - * Return the editable properties of a resource object - * - * @param int|string|null $id - * - * @return ResponseInterface|string|void - */ - public function edit($id = null) - { - return $this->fail(lang('RESTful.notImplemented', ['edit']), 501); - } - - /** - * Add or update a model resource, from "posted" properties - * - * @param int|string|null $id - * - * @return ResponseInterface|string|void - */ - public function update($id = null) - { - return $this->fail(lang('RESTful.notImplemented', ['update']), 501); - } - - /** - * Delete the designated resource object from the model - * - * @param int|string|null $id - * - * @return ResponseInterface|string|void - */ - public function delete($id = null) - { - return $this->fail(lang('RESTful.notImplemented', ['delete']), 501); - } - - /** - * Set/change the expected response representation for returned objects - * - * @param string $format json/xml - * @phpstan-param 'json'|'xml' $format - * - * @return void - */ - public function setFormat(string $format = 'json') - { - if (in_array($format, ['json', 'xml'], true)) { - $this->format = $format; - } - } -} diff --git a/system4.4.6/RESTful/ResourcePresenter.php b/system4.4.6/RESTful/ResourcePresenter.php deleted file mode 100644 index 8c39bd8a..00000000 --- a/system4.4.6/RESTful/ResourcePresenter.php +++ /dev/null @@ -1,114 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\RESTful; - -use CodeIgniter\HTTP\ResponseInterface; - -/** - * An extendable controller to help provide a UI for a resource. - * - * @see \CodeIgniter\RESTful\ResourcePresenterTest - */ -class ResourcePresenter extends BaseResource -{ - /** - * Present a view of resource objects - * - * @return ResponseInterface|string|void - */ - public function index() - { - return lang('RESTful.notImplemented', ['index']); - } - - /** - * Present a view to present a specific resource object - * - * @param int|string|null $id - * - * @return ResponseInterface|string|void - */ - public function show($id = null) - { - return lang('RESTful.notImplemented', ['show']); - } - - /** - * Present a view to present a new single resource object - * - * @return ResponseInterface|string|void - */ - public function new() - { - return lang('RESTful.notImplemented', ['new']); - } - - /** - * Process the creation/insertion of a new resource object. - * This should be a POST. - * - * @return ResponseInterface|string|void - */ - public function create() - { - return lang('RESTful.notImplemented', ['create']); - } - - /** - * Present a view to edit the properties of a specific resource object - * - * @param int|string|null $id - * - * @return ResponseInterface|string|void - */ - public function edit($id = null) - { - return lang('RESTful.notImplemented', ['edit']); - } - - /** - * Process the updating, full or partial, of a specific resource object. - * This should be a POST. - * - * @param int|string|null $id - * - * @return ResponseInterface|string|void - */ - public function update($id = null) - { - return lang('RESTful.notImplemented', ['update']); - } - - /** - * Present a view to confirm the deletion of a specific resource object - * - * @param int|string|null $id - * - * @return ResponseInterface|string|void - */ - public function remove($id = null) - { - return lang('RESTful.notImplemented', ['remove']); - } - - /** - * Process the deletion of a specific resource object - * - * @param int|string|null $id - * - * @return ResponseInterface|string|void - */ - public function delete($id = null) - { - return lang('RESTful.notImplemented', ['delete']); - } -} diff --git a/system4.4.6/Router/AutoRouter.php b/system4.4.6/Router/AutoRouter.php deleted file mode 100644 index d7516afb..00000000 --- a/system4.4.6/Router/AutoRouter.php +++ /dev/null @@ -1,310 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Router; - -use Closure; -use CodeIgniter\Exceptions\PageNotFoundException; -use CodeIgniter\HTTP\ResponseInterface; - -/** - * Router for Auto-Routing - */ -final class AutoRouter implements AutoRouterInterface -{ - /** - * List of CLI routes that do not contain '*' routes. - * - * @var array<string, (Closure(mixed...): (ResponseInterface|string|void))|string> [routeKey => handler] - */ - private array $cliRoutes; - - /** - * Sub-directory that contains the requested controller class. - * Primarily used by 'autoRoute'. - */ - private ?string $directory = null; - - /** - * The name of the controller class. - */ - private string $controller; - - /** - * The name of the method to use. - */ - private string $method; - - /** - * Whether dashes in URI's should be converted - * to underscores when determining method names. - */ - private bool $translateURIDashes; - - /** - * HTTP verb for the request. - */ - private string $httpVerb; - - /** - * Default namespace for controllers. - */ - private string $defaultNamespace; - - public function __construct( - array $cliRoutes, - string $defaultNamespace, - string $defaultController, - string $defaultMethod, - bool $translateURIDashes, - string $httpVerb - ) { - $this->cliRoutes = $cliRoutes; - $this->defaultNamespace = $defaultNamespace; - $this->translateURIDashes = $translateURIDashes; - $this->httpVerb = $httpVerb; - - $this->controller = $defaultController; - $this->method = $defaultMethod; - } - - /** - * Attempts to match a URI path against Controllers and directories - * found in APPPATH/Controllers, to find a matching route. - * - * @return array [directory_name, controller_name, controller_method, params] - */ - public function getRoute(string $uri, string $httpVerb): array - { - $segments = explode('/', $uri); - - // WARNING: Directories get shifted out of the segments array. - $segments = $this->scanControllers($segments); - - // If we don't have any segments left - use the default controller; - // If not empty, then the first segment should be the controller - if ($segments !== []) { - $this->controller = ucfirst(array_shift($segments)); - } - - $controllerName = $this->controllerName(); - - if (! $this->isValidSegment($controllerName)) { - throw new PageNotFoundException($this->controller . ' is not a valid controller name'); - } - - // Use the method name if it exists. - // If it doesn't, no biggie - the default method name - // has already been set. - if ($segments !== []) { - $this->method = array_shift($segments) ?: $this->method; - } - - // Prevent access to initController method - if (strtolower($this->method) === 'initcontroller') { - throw PageNotFoundException::forPageNotFound(); - } - - /** @var array $params An array of params to the controller method. */ - $params = []; - - if ($segments !== []) { - $params = $segments; - } - - // Ensure routes registered via $routes->cli() are not accessible via web. - if ($this->httpVerb !== 'cli') { - $controller = '\\' . $this->defaultNamespace; - - $controller .= $this->directory ? str_replace('/', '\\', $this->directory) : ''; - $controller .= $controllerName; - - $controller = strtolower($controller); - $methodName = strtolower($this->methodName()); - - foreach ($this->cliRoutes as $handler) { - if (is_string($handler)) { - $handler = strtolower($handler); - - // Like $routes->cli('hello/(:segment)', 'Home::$1') - if (strpos($handler, '::$') !== false) { - throw new PageNotFoundException( - 'Cannot access CLI Route: ' . $uri - ); - } - - if (strpos($handler, $controller . '::' . $methodName) === 0) { - throw new PageNotFoundException( - 'Cannot access CLI Route: ' . $uri - ); - } - - if ($handler === $controller) { - throw new PageNotFoundException( - 'Cannot access CLI Route: ' . $uri - ); - } - } - } - } - - // Load the file so that it's available for CodeIgniter. - $file = APPPATH . 'Controllers/' . $this->directory . $controllerName . '.php'; - if (is_file($file)) { - include_once $file; - } - - // Ensure the controller stores the fully-qualified class name - // We have to check for a length over 1, since by default it will be '\' - if (strpos($this->controller, '\\') === false && strlen($this->defaultNamespace) > 1) { - $this->controller = '\\' . ltrim( - str_replace( - '/', - '\\', - $this->defaultNamespace . $this->directory . $controllerName - ), - '\\' - ); - } - - return [$this->directory, $this->controllerName(), $this->methodName(), $params]; - } - - /** - * Tells the system whether we should translate URI dashes or not - * in the URI from a dash to an underscore. - * - * @deprecated This method should be removed. - */ - public function setTranslateURIDashes(bool $val = false): self - { - $this->translateURIDashes = $val; - - return $this; - } - - /** - * Scans the controller directory, attempting to locate a controller matching the supplied uri $segments - * - * @param array $segments URI segments - * - * @return array returns an array of remaining uri segments that don't map onto a directory - */ - private function scanControllers(array $segments): array - { - $segments = array_filter($segments, static fn ($segment) => $segment !== ''); - // numerically reindex the array, removing gaps - $segments = array_values($segments); - - // if a prior directory value has been set, just return segments and get out of here - if (isset($this->directory)) { - return $segments; - } - - // Loop through our segments and return as soon as a controller - // is found or when such a directory doesn't exist - $c = count($segments); - - while ($c-- > 0) { - $segmentConvert = ucfirst( - $this->translateURIDashes ? str_replace('-', '_', $segments[0]) : $segments[0] - ); - // as soon as we encounter any segment that is not PSR-4 compliant, stop searching - if (! $this->isValidSegment($segmentConvert)) { - return $segments; - } - - $test = APPPATH . 'Controllers/' . $this->directory . $segmentConvert; - - // as long as each segment is *not* a controller file but does match a directory, add it to $this->directory - if (! is_file($test . '.php') && is_dir($test)) { - $this->setDirectory($segmentConvert, true, false); - array_shift($segments); - - continue; - } - - return $segments; - } - - // This means that all segments were actually directories - return $segments; - } - - /** - * Returns true if the supplied $segment string represents a valid PSR-4 compliant namespace/directory segment - * - * regex comes from https://www.php.net/manual/en/language.variables.basics.php - */ - private function isValidSegment(string $segment): bool - { - return (bool) preg_match('/^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$/', $segment); - } - - /** - * Sets the sub-directory that the controller is in. - * - * @param bool $validate if true, checks to make sure $dir consists of only PSR4 compliant segments - * - * @deprecated This method should be removed. - * - * @return void - */ - public function setDirectory(?string $dir = null, bool $append = false, bool $validate = true) - { - if ($dir === null || $dir === '') { - $this->directory = null; - - return; - } - - if ($validate) { - $segments = explode('/', trim($dir, '/')); - - foreach ($segments as $segment) { - if (! $this->isValidSegment($segment)) { - return; - } - } - } - - if ($append !== true || ($this->directory === null || $this->directory === '')) { - $this->directory = trim($dir, '/') . '/'; - } else { - $this->directory .= trim($dir, '/') . '/'; - } - } - - /** - * Returns the name of the sub-directory the controller is in, - * if any. Relative to APPPATH.'Controllers'. - * - * @deprecated This method should be removed. - */ - public function directory(): string - { - return ($this->directory !== null && $this->directory !== '') ? $this->directory : ''; - } - - private function controllerName(): string - { - return $this->translateURIDashes - ? str_replace('-', '_', $this->controller) - : $this->controller; - } - - private function methodName(): string - { - return $this->translateURIDashes - ? str_replace('-', '_', $this->method) - : $this->method; - } -} diff --git a/system4.4.6/Router/AutoRouterImproved.php b/system4.4.6/Router/AutoRouterImproved.php deleted file mode 100644 index a86e92f0..00000000 --- a/system4.4.6/Router/AutoRouterImproved.php +++ /dev/null @@ -1,491 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Router; - -use CodeIgniter\Exceptions\PageNotFoundException; -use CodeIgniter\Router\Exceptions\MethodNotFoundException; -use Config\Routing; -use ReflectionClass; -use ReflectionException; - -/** - * New Secure Router for Auto-Routing - * - * @see \CodeIgniter\Router\AutoRouterImprovedTest - */ -final class AutoRouterImproved implements AutoRouterInterface -{ - /** - * List of controllers in Defined Routes that should not be accessed via this Auto-Routing. - * - * @var class-string[] - */ - private array $protectedControllers; - - /** - * Sub-directory that contains the requested controller class. - */ - private ?string $directory = null; - - /** - * The name of the controller class. - */ - private string $controller; - - /** - * The name of the method to use. - */ - private string $method; - - /** - * An array of params to the controller method. - * - * @var list<string> - */ - private array $params = []; - - /** - * Whether dashes in URI's should be converted - * to underscores when determining method names. - */ - private bool $translateURIDashes; - - /** - * The namespace for controllers. - */ - private string $namespace; - - /** - * The name of the default controller class. - */ - private string $defaultController; - - /** - * The name of the default method without HTTP verb prefix. - */ - private string $defaultMethod; - - /** - * The URI segments. - * - * @var list<string> - */ - private array $segments = []; - - /** - * The position of the Controller in the URI segments. - * Null for the default controller. - */ - private ?int $controllerPos = null; - - /** - * The position of the Method in the URI segments. - * Null for the default method. - */ - private ?int $methodPos = null; - - /** - * The position of the first Parameter in the URI segments. - * Null for the no parameters. - */ - private ?int $paramPos = null; - - /** - * @param class-string[] $protectedControllers - * @param string $defaultController Short classname - * - * @deprecated $httpVerb is deprecated. No longer used. - */ - public function __construct(// @phpstan-ignore-line - array $protectedControllers, - string $namespace, - string $defaultController, - string $defaultMethod, - bool $translateURIDashes, - string $httpVerb - ) { - $this->protectedControllers = $protectedControllers; - $this->namespace = rtrim($namespace, '\\'); - $this->translateURIDashes = $translateURIDashes; - $this->defaultController = $defaultController; - $this->defaultMethod = $defaultMethod; - - // Set the default values - $this->controller = $this->defaultController; - } - - private function createSegments(string $uri): array - { - $segments = explode('/', $uri); - $segments = array_filter($segments, static fn ($segment) => $segment !== ''); - - // numerically reindex the array, removing gaps - return array_values($segments); - } - - /** - * Search for the first controller corresponding to the URI segment. - * - * If there is a controller corresponding to the first segment, the search - * ends there. The remaining segments are parameters to the controller. - * - * @return bool true if a controller class is found. - */ - private function searchFirstController(): bool - { - $segments = $this->segments; - - $controller = '\\' . $this->namespace; - - $controllerPos = -1; - - while ($segments !== []) { - $segment = array_shift($segments); - $controllerPos++; - - $class = $this->translateURIDashes(ucfirst($segment)); - - // as soon as we encounter any segment that is not PSR-4 compliant, stop searching - if (! $this->isValidSegment($class)) { - return false; - } - - $controller .= '\\' . $class; - - if (class_exists($controller)) { - $this->controller = $controller; - $this->controllerPos = $controllerPos; - - // The first item may be a method name. - $this->params = $segments; - if ($segments !== []) { - $this->paramPos = $this->controllerPos + 1; - } - - return true; - } - } - - return false; - } - - /** - * Search for the last default controller corresponding to the URI segments. - * - * @return bool true if a controller class is found. - */ - private function searchLastDefaultController(): bool - { - $segments = $this->segments; - - $segmentCount = count($this->segments); - $paramPos = null; - $params = []; - - while ($segments !== []) { - if ($segmentCount > count($segments)) { - $paramPos = count($segments); - } - - $namespaces = array_map( - fn ($segment) => $this->translateURIDashes(ucfirst($segment)), - $segments - ); - - $controller = '\\' . $this->namespace - . '\\' . implode('\\', $namespaces) - . '\\' . $this->defaultController; - - if (class_exists($controller)) { - $this->controller = $controller; - $this->params = $params; - - if ($params !== []) { - $this->paramPos = $paramPos; - } - - return true; - } - - // Prepend the last element in $segments to the beginning of $params. - array_unshift($params, array_pop($segments)); - } - - // Check for the default controller in Controllers directory. - $controller = '\\' . $this->namespace - . '\\' . $this->defaultController; - - if (class_exists($controller)) { - $this->controller = $controller; - $this->params = $params; - - if ($params !== []) { - $this->paramPos = 0; - } - - return true; - } - - return false; - } - - /** - * Finds controller, method and params from the URI. - * - * @return array [directory_name, controller_name, controller_method, params] - */ - public function getRoute(string $uri, string $httpVerb): array - { - $httpVerb = strtolower($httpVerb); - - // Reset Controller method params. - $this->params = []; - - $defaultMethod = $httpVerb . ucfirst($this->defaultMethod); - $this->method = $defaultMethod; - - $this->segments = $this->createSegments($uri); - - // Check for Module Routes. - if ( - $this->segments !== [] - && ($routingConfig = config(Routing::class)) - && array_key_exists($this->segments[0], $routingConfig->moduleRoutes) - ) { - $uriSegment = array_shift($this->segments); - $this->namespace = rtrim($routingConfig->moduleRoutes[$uriSegment], '\\'); - } - - if ($this->searchFirstController()) { - // Controller is found. - $baseControllerName = class_basename($this->controller); - - // Prevent access to default controller path - if ( - strtolower($baseControllerName) === strtolower($this->defaultController) - ) { - throw new PageNotFoundException( - 'Cannot access the default controller "' . $this->controller . '" with the controller name URI path.' - ); - } - } elseif ($this->searchLastDefaultController()) { - // The default Controller is found. - $baseControllerName = class_basename($this->controller); - } else { - // No Controller is found. - throw new PageNotFoundException('No controller is found for: ' . $uri); - } - - // The first item may be a method name. - /** @var list<string> $params */ - $params = $this->params; - - $methodParam = array_shift($params); - - $method = ''; - if ($methodParam !== null) { - $method = $httpVerb . ucfirst($this->translateURIDashes($methodParam)); - } - - if ($methodParam !== null && method_exists($this->controller, $method)) { - // Method is found. - $this->method = $method; - $this->params = $params; - - // Update the positions. - $this->methodPos = $this->paramPos; - if ($params === []) { - $this->paramPos = null; - } - if ($this->paramPos !== null) { - $this->paramPos++; - } - - // Prevent access to default controller's method - if (strtolower($baseControllerName) === strtolower($this->defaultController)) { - throw new PageNotFoundException( - 'Cannot access the default controller "' . $this->controller . '::' . $this->method . '"' - ); - } - - // Prevent access to default method path - if (strtolower($this->method) === strtolower($defaultMethod)) { - throw new PageNotFoundException( - 'Cannot access the default method "' . $this->method . '" with the method name URI path.' - ); - } - } elseif (method_exists($this->controller, $defaultMethod)) { - // The default method is found. - $this->method = $defaultMethod; - } else { - // No method is found. - throw PageNotFoundException::forControllerNotFound($this->controller, $method); - } - - // Ensure the controller is not defined in routes. - $this->protectDefinedRoutes(); - - // Ensure the controller does not have _remap() method. - $this->checkRemap(); - - // Ensure the URI segments for the controller and method do not contain - // underscores when $translateURIDashes is true. - $this->checkUnderscore($uri); - - // Check parameter count - try { - $this->checkParameters($uri); - } catch (MethodNotFoundException $e) { - throw PageNotFoundException::forControllerNotFound($this->controller, $this->method); - } - - $this->setDirectory(); - - return [$this->directory, $this->controller, $this->method, $this->params]; - } - - /** - * @internal For test purpose only. - * - * @return array<string, int|null> - */ - public function getPos(): array - { - return [ - 'controller' => $this->controllerPos, - 'method' => $this->methodPos, - 'params' => $this->paramPos, - ]; - } - - /** - * Get the directory path from the controller and set it to the property. - * - * @return void - */ - private function setDirectory() - { - $segments = explode('\\', trim($this->controller, '\\')); - - // Remove short classname. - array_pop($segments); - - $namespaces = implode('\\', $segments); - - $dir = str_replace( - '\\', - '/', - ltrim(substr($namespaces, strlen($this->namespace)), '\\') - ); - - if ($dir !== '') { - $this->directory = $dir . '/'; - } - } - - private function protectDefinedRoutes(): void - { - $controller = strtolower($this->controller); - - foreach ($this->protectedControllers as $controllerInRoutes) { - $routeLowerCase = strtolower($controllerInRoutes); - - if ($routeLowerCase === $controller) { - throw new PageNotFoundException( - 'Cannot access the controller in Defined Routes. Controller: ' . $controllerInRoutes - ); - } - } - } - - private function checkParameters(string $uri): void - { - try { - $refClass = new ReflectionClass($this->controller); - } catch (ReflectionException $e) { - throw PageNotFoundException::forControllerNotFound($this->controller, $this->method); - } - - try { - $refMethod = $refClass->getMethod($this->method); - $refParams = $refMethod->getParameters(); - } catch (ReflectionException $e) { - throw new MethodNotFoundException(); - } - - if (! $refMethod->isPublic()) { - throw new MethodNotFoundException(); - } - - if (count($refParams) < count($this->params)) { - throw new PageNotFoundException( - 'The param count in the URI are greater than the controller method params.' - . ' Handler:' . $this->controller . '::' . $this->method - . ', URI:' . $uri - ); - } - } - - private function checkRemap(): void - { - try { - $refClass = new ReflectionClass($this->controller); - $refClass->getMethod('_remap'); - - throw new PageNotFoundException( - 'AutoRouterImproved does not support `_remap()` method.' - . ' Controller:' . $this->controller - ); - } catch (ReflectionException $e) { - // Do nothing. - } - } - - private function checkUnderscore(string $uri): void - { - if ($this->translateURIDashes === false) { - return; - } - - $paramPos = $this->paramPos ?? count($this->segments); - - for ($i = 0; $i < $paramPos; $i++) { - if (strpos($this->segments[$i], '_') !== false) { - throw new PageNotFoundException( - 'AutoRouterImproved prohibits access to the URI' - . ' containing underscores ("' . $this->segments[$i] . '")' - . ' when $translateURIDashes is enabled.' - . ' Please use the dash.' - . ' Handler:' . $this->controller . '::' . $this->method - . ', URI:' . $uri - ); - } - } - } - - /** - * Returns true if the supplied $segment string represents a valid PSR-4 compliant namespace/directory segment - * - * regex comes from https://www.php.net/manual/en/language.variables.basics.php - */ - private function isValidSegment(string $segment): bool - { - return (bool) preg_match('/^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$/', $segment); - } - - private function translateURIDashes(string $segment): string - { - return $this->translateURIDashes - ? str_replace('-', '_', $segment) - : $segment; - } -} diff --git a/system4.4.6/Router/AutoRouterInterface.php b/system4.4.6/Router/AutoRouterInterface.php deleted file mode 100644 index 6d98aec4..00000000 --- a/system4.4.6/Router/AutoRouterInterface.php +++ /dev/null @@ -1,25 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Router; - -/** - * Expected behavior of a AutoRouter. - */ -interface AutoRouterInterface -{ - /** - * Returns controller, method and params from the URI. - * - * @return array [directory_name, controller_name, controller_method, params] - */ - public function getRoute(string $uri, string $httpVerb): array; -} diff --git a/system4.4.6/Router/DefinedRouteCollector.php b/system4.4.6/Router/DefinedRouteCollector.php deleted file mode 100644 index 4fdbbb02..00000000 --- a/system4.4.6/Router/DefinedRouteCollector.php +++ /dev/null @@ -1,72 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Router; - -use Closure; -use Generator; - -/** - * Collect all defined routes for display. - * - * @see \CodeIgniter\Router\DefinedRouteCollectorTest - */ -final class DefinedRouteCollector -{ - private RouteCollection $routeCollection; - - public function __construct(RouteCollection $routes) - { - $this->routeCollection = $routes; - } - - /** - * @return Generator<array{method: string, route: string, name: string, handler: string}> - */ - public function collect(): Generator - { - $methods = [ - 'get', - 'head', - 'post', - 'patch', - 'put', - 'delete', - 'options', - 'trace', - 'connect', - 'cli', - ]; - - foreach ($methods as $method) { - $routes = $this->routeCollection->getRoutes($method); - - foreach ($routes as $route => $handler) { - if (is_string($handler) || $handler instanceof Closure) { - if ($handler instanceof Closure) { - $view = $this->routeCollection->getRoutesOptions($route, $method)['view'] ?? false; - - $handler = $view ? '(View) ' . $view : '(Closure)'; - } - - $routeName = $this->routeCollection->getRoutesOptions($route, $method)['as'] ?? $route; - - yield [ - 'method' => $method, - 'route' => $route, - 'name' => $routeName, - 'handler' => $handler, - ]; - } - } - } - } -} diff --git a/system4.4.6/Router/Exceptions/MethodNotFoundException.php b/system4.4.6/Router/Exceptions/MethodNotFoundException.php deleted file mode 100644 index d9ad45a5..00000000 --- a/system4.4.6/Router/Exceptions/MethodNotFoundException.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Router\Exceptions; - -use RuntimeException; - -/** - * @internal - */ -final class MethodNotFoundException extends RuntimeException -{ -} diff --git a/system4.4.6/Router/Exceptions/RedirectException.php b/system4.4.6/Router/Exceptions/RedirectException.php deleted file mode 100644 index 5e19e2e9..00000000 --- a/system4.4.6/Router/Exceptions/RedirectException.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Router\Exceptions; - -use CodeIgniter\Exceptions\HTTPExceptionInterface; -use Exception; - -/** - * RedirectException - * - * @deprecated Use \CodeIgniter\HTTP\Exceptions\RedirectException instead - */ -class RedirectException extends Exception implements HTTPExceptionInterface -{ - /** - * HTTP status code for redirects - * - * @var int - */ - protected $code = 302; -} diff --git a/system4.4.6/Router/Exceptions/RouterException.php b/system4.4.6/Router/Exceptions/RouterException.php deleted file mode 100644 index 5a510e47..00000000 --- a/system4.4.6/Router/Exceptions/RouterException.php +++ /dev/null @@ -1,81 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Router\Exceptions; - -use CodeIgniter\Exceptions\FrameworkException; - -/** - * RouterException - */ -class RouterException extends FrameworkException -{ - /** - * Thrown when the actual parameter type does not match - * the expected types. - * - * @return RouterException - */ - public static function forInvalidParameterType() - { - return new static(lang('Router.invalidParameterType')); - } - - /** - * Thrown when a default route is not set. - * - * @return RouterException - */ - public static function forMissingDefaultRoute() - { - return new static(lang('Router.missingDefaultRoute')); - } - - /** - * Throw when controller or its method is not found. - * - * @return RouterException - */ - public static function forControllerNotFound(string $controller, string $method) - { - return new static(lang('HTTP.controllerNotFound', [$controller, $method])); - } - - /** - * Throw when route is not valid. - * - * @return RouterException - */ - public static function forInvalidRoute(string $route) - { - return new static(lang('HTTP.invalidRoute', [$route])); - } - - /** - * Throw when dynamic controller. - * - * @return RouterException - */ - public static function forDynamicController(string $handler) - { - return new static(lang('Router.invalidDynamicController', [$handler])); - } - - /** - * Throw when controller name has `/`. - * - * @return RouterException - */ - public static function forInvalidControllerName(string $handler) - { - return new static(lang('Router.invalidControllerName', [$handler])); - } -} diff --git a/system4.4.6/Router/RouteCollection.php b/system4.4.6/Router/RouteCollection.php deleted file mode 100644 index 8df31c90..00000000 --- a/system4.4.6/Router/RouteCollection.php +++ /dev/null @@ -1,1803 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Router; - -use Closure; -use CodeIgniter\Autoloader\FileLocator; -use CodeIgniter\HTTP\ResponseInterface; -use CodeIgniter\Router\Exceptions\RouterException; -use Config\App; -use Config\Modules; -use Config\Routing; -use Config\Services; -use InvalidArgumentException; - -/** - * @todo Implement nested resource routing (See CakePHP) - * @see \CodeIgniter\Router\RouteCollectionTest - */ -class RouteCollection implements RouteCollectionInterface -{ - /** - * The namespace to be added to any Controllers. - * Defaults to the global namespaces (\). - * - * This must have a trailing backslash (\). - * - * @var string - */ - protected $defaultNamespace = '\\'; - - /** - * The name of the default controller to use - * when no other controller is specified. - * - * Not used here. Pass-thru value for Router class. - * - * @var string - */ - protected $defaultController = 'Home'; - - /** - * The name of the default method to use - * when no other method has been specified. - * - * Not used here. Pass-thru value for Router class. - * - * @var string - */ - protected $defaultMethod = 'index'; - - /** - * The placeholder used when routing 'resources' - * when no other placeholder has been specified. - * - * @var string - */ - protected $defaultPlaceholder = 'any'; - - /** - * Whether to convert dashes to underscores in URI. - * - * Not used here. Pass-thru value for Router class. - * - * @var bool - */ - protected $translateURIDashes = false; - - /** - * Whether to match URI against Controllers - * when it doesn't match defined routes. - * - * Not used here. Pass-thru value for Router class. - * - * @var bool - */ - protected $autoRoute = false; - - /** - * A callable that will be shown - * when the route cannot be matched. - * - * @var (Closure(string): (ResponseInterface|string|void))|string - */ - protected $override404; - - /** - * An array of files that would contain route definitions. - */ - protected array $routeFiles = []; - - /** - * Defined placeholders that can be used - * within the - * - * @var array<string, string> - */ - protected $placeholders = [ - 'any' => '.*', - 'segment' => '[^/]+', - 'alphanum' => '[a-zA-Z0-9]+', - 'num' => '[0-9]+', - 'alpha' => '[a-zA-Z]+', - 'hash' => '[^/]+', - ]; - - /** - * An array of all routes and their mappings. - * - * @var array - * - * [ - * verb => [ - * routeKey(regex) => [ - * 'name' => routeName - * 'handler' => handler, - * 'from' => from, - * ], - * ], - * // redirect route - * '*' => [ - * routeKey(regex)(from) => [ - * 'name' => routeName - * 'handler' => [routeKey(regex)(to) => handler], - * 'from' => from, - * 'redirect' => statusCode, - * ], - * ], - * ] - */ - protected $routes = [ - '*' => [], - 'options' => [], - 'get' => [], - 'head' => [], - 'post' => [], - 'put' => [], - 'delete' => [], - 'trace' => [], - 'connect' => [], - 'cli' => [], - ]; - - /** - * Array of routes names - * - * @var array - * - * [ - * verb => [ - * routeName => routeKey(regex) - * ], - * ] - */ - protected $routesNames = [ - '*' => [], - 'options' => [], - 'get' => [], - 'head' => [], - 'post' => [], - 'put' => [], - 'delete' => [], - 'trace' => [], - 'connect' => [], - 'cli' => [], - ]; - - /** - * Array of routes options - * - * @var array - * - * [ - * verb => [ - * routeKey(regex) => [ - * key => value, - * ] - * ], - * ] - */ - protected $routesOptions = []; - - /** - * The current method that the script is being called by. - * - * @var string HTTP verb (lower case) like `get`,`post` or `*` - */ - protected $HTTPVerb = '*'; - - /** - * The default list of HTTP methods (and CLI for command line usage) - * that is allowed if no other method is provided. - * - * @var array - */ - protected $defaultHTTPMethods = [ - 'options', - 'get', - 'head', - 'post', - 'put', - 'delete', - 'trace', - 'connect', - 'cli', - ]; - - /** - * The name of the current group, if any. - * - * @var string|null - */ - protected $group; - - /** - * The current subdomain. - * - * @var string|null - */ - protected $currentSubdomain; - - /** - * Stores copy of current options being - * applied during creation. - * - * @var array|null - */ - protected $currentOptions; - - /** - * A little performance booster. - * - * @var bool - */ - protected $didDiscover = false; - - /** - * Handle to the file locator to use. - * - * @var FileLocator - */ - protected $fileLocator; - - /** - * Handle to the modules config. - * - * @var Modules - */ - protected $moduleConfig; - - /** - * Flag for sorting routes by priority. - * - * @var bool - */ - protected $prioritize = false; - - /** - * Route priority detection flag. - * - * @var bool - */ - protected $prioritizeDetected = false; - - /** - * The current hostname from $_SERVER['HTTP_HOST'] - */ - private ?string $httpHost = null; - - /** - * Flag to limit or not the routes with {locale} placeholder to App::$supportedLocales - */ - protected bool $useSupportedLocalesOnly = false; - - /** - * Constructor - */ - public function __construct(FileLocator $locator, Modules $moduleConfig, Routing $routing) - { - $this->fileLocator = $locator; - $this->moduleConfig = $moduleConfig; - - $this->httpHost = Services::request()->getServer('HTTP_HOST'); - - // Setup based on config file. Let routes file override. - $this->defaultNamespace = rtrim($routing->defaultNamespace, '\\') . '\\'; - $this->defaultController = $routing->defaultController; - $this->defaultMethod = $routing->defaultMethod; - $this->translateURIDashes = $routing->translateURIDashes; - $this->override404 = $routing->override404; - $this->autoRoute = $routing->autoRoute; - $this->routeFiles = $routing->routeFiles; - $this->prioritize = $routing->prioritize; - - // Normalize the path string in routeFiles array. - foreach ($this->routeFiles as $routeKey => $routesFile) { - $realpath = realpath($routesFile); - $this->routeFiles[$routeKey] = ($realpath === false) ? $routesFile : $realpath; - } - } - - /** - * Loads main routes file and discover routes. - * - * Loads only once unless reset. - * - * @return $this - */ - public function loadRoutes(string $routesFile = APPPATH . 'Config/Routes.php') - { - if ($this->didDiscover) { - return $this; - } - - // Normalize the path string in routesFile - $realpath = realpath($routesFile); - $routesFile = ($realpath === false) ? $routesFile : $realpath; - - // Include the passed in routesFile if it doesn't exist. - // Only keeping that around for BC purposes for now. - $routeFiles = $this->routeFiles; - if (! in_array($routesFile, $routeFiles, true)) { - $routeFiles[] = $routesFile; - } - - // We need this var in local scope - // so route files can access it. - $routes = $this; - - foreach ($routeFiles as $routesFile) { - if (! is_file($routesFile)) { - log_message('warning', sprintf('Routes file not found: "%s"', $routesFile)); - - continue; - } - - require $routesFile; - } - - $this->discoverRoutes(); - - return $this; - } - - /** - * Will attempt to discover any additional routes, either through - * the local PSR4 namespaces, or through selected Composer packages. - * - * @return void - */ - protected function discoverRoutes() - { - if ($this->didDiscover) { - return; - } - - // We need this var in local scope - // so route files can access it. - $routes = $this; - - if ($this->moduleConfig->shouldDiscover('routes')) { - $files = $this->fileLocator->search('Config/Routes.php'); - - foreach ($files as $file) { - // Don't include our main file again... - if (in_array($file, $this->routeFiles, true)) { - continue; - } - - include $file; - } - } - - $this->didDiscover = true; - } - - /** - * Registers a new constraint with the system. Constraints are used - * by the routes as placeholders for regular expressions to make defining - * the routes more human-friendly. - * - * You can pass an associative array as $placeholder, and have - * multiple placeholders added at once. - * - * @param array|string $placeholder - */ - public function addPlaceholder($placeholder, ?string $pattern = null): RouteCollectionInterface - { - if (! is_array($placeholder)) { - $placeholder = [$placeholder => $pattern]; - } - - $this->placeholders = array_merge($this->placeholders, $placeholder); - - return $this; - } - - /** - * For `spark routes` - * - * @return array<string, string> - * - * @internal - */ - public function getPlaceholders(): array - { - return $this->placeholders; - } - - /** - * Sets the default namespace to use for Controllers when no other - * namespace has been specified. - */ - public function setDefaultNamespace(string $value): RouteCollectionInterface - { - $this->defaultNamespace = esc(strip_tags($value)); - $this->defaultNamespace = rtrim($this->defaultNamespace, '\\') . '\\'; - - return $this; - } - - /** - * Sets the default controller to use when no other controller has been - * specified. - */ - public function setDefaultController(string $value): RouteCollectionInterface - { - $this->defaultController = esc(strip_tags($value)); - - return $this; - } - - /** - * Sets the default method to call on the controller when no other - * method has been set in the route. - */ - public function setDefaultMethod(string $value): RouteCollectionInterface - { - $this->defaultMethod = esc(strip_tags($value)); - - return $this; - } - - /** - * Tells the system whether to convert dashes in URI strings into - * underscores. In some search engines, including Google, dashes - * create more meaning and make it easier for the search engine to - * find words and meaning in the URI for better SEO. But it - * doesn't work well with PHP method names.... - */ - public function setTranslateURIDashes(bool $value): RouteCollectionInterface - { - $this->translateURIDashes = $value; - - return $this; - } - - /** - * If TRUE, the system will attempt to match the URI against - * Controllers by matching each segment against folders/files - * in APPPATH/Controllers, when a match wasn't found against - * defined routes. - * - * If FALSE, will stop searching and do NO automatic routing. - */ - public function setAutoRoute(bool $value): RouteCollectionInterface - { - $this->autoRoute = $value; - - return $this; - } - - /** - * Sets the class/method that should be called if routing doesn't - * find a match. It can be either a closure or the controller/method - * name exactly like a route is defined: Users::index - * - * This setting is passed to the Router class and handled there. - * - * @param callable|string|null $callable - */ - public function set404Override($callable = null): RouteCollectionInterface - { - $this->override404 = $callable; - - return $this; - } - - /** - * Returns the 404 Override setting, which can be null, a closure - * or the controller/string. - * - * @return (Closure(string): (ResponseInterface|string|void))|string|null - */ - public function get404Override() - { - return $this->override404; - } - - /** - * Sets the default constraint to be used in the system. Typically - * for use with the 'resource' method. - */ - public function setDefaultConstraint(string $placeholder): RouteCollectionInterface - { - if (array_key_exists($placeholder, $this->placeholders)) { - $this->defaultPlaceholder = $placeholder; - } - - return $this; - } - - /** - * Returns the name of the default controller. With Namespace. - */ - public function getDefaultController(): string - { - return $this->defaultController; - } - - /** - * Returns the name of the default method to use within the controller. - */ - public function getDefaultMethod(): string - { - return $this->defaultMethod; - } - - /** - * Returns the default namespace as set in the Routes config file. - */ - public function getDefaultNamespace(): string - { - return $this->defaultNamespace; - } - - /** - * Returns the current value of the translateURIDashes setting. - */ - public function shouldTranslateURIDashes(): bool - { - return $this->translateURIDashes; - } - - /** - * Returns the flag that tells whether to autoRoute URI against Controllers. - */ - public function shouldAutoRoute(): bool - { - return $this->autoRoute; - } - - /** - * Returns the raw array of available routes. - * - * @param non-empty-string|null $verb - * @param bool $includeWildcard Whether to include '*' routes. - */ - public function getRoutes(?string $verb = null, bool $includeWildcard = true): array - { - if ($verb === null || $verb === '') { - $verb = $this->getHTTPVerb(); - } - - // Since this is the entry point for the Router, - // take a moment to do any route discovery - // we might need to do. - $this->discoverRoutes(); - - $routes = []; - - if (isset($this->routes[$verb])) { - // Keep current verb's routes at the beginning, so they're matched - // before any of the generic, "add" routes. - $collection = $includeWildcard ? $this->routes[$verb] + ($this->routes['*'] ?? []) : $this->routes[$verb]; - - foreach ($collection as $routeKey => $r) { - $routes[$routeKey] = $r['handler']; - } - } - - // sorting routes by priority - if ($this->prioritizeDetected && $this->prioritize && $routes !== []) { - $order = []; - - foreach ($routes as $key => $value) { - $key = $key === '/' ? $key : ltrim($key, '/ '); - $priority = $this->getRoutesOptions($key, $verb)['priority'] ?? 0; - $order[$priority][$key] = $value; - } - - ksort($order); - $routes = array_merge(...$order); - } - - return $routes; - } - - /** - * Returns one or all routes options - * - * @return array<string, int|string> [key => value] - */ - public function getRoutesOptions(?string $from = null, ?string $verb = null): array - { - $options = $this->loadRoutesOptions($verb); - - return $from ? $options[$from] ?? [] : $options; - } - - /** - * Returns the current HTTP Verb being used. - */ - public function getHTTPVerb(): string - { - return $this->HTTPVerb; - } - - /** - * Sets the current HTTP verb. - * Used primarily for testing. - * - * @param string $verb HTTP verb - * - * @return $this - */ - public function setHTTPVerb(string $verb) - { - $this->HTTPVerb = strtolower($verb); - - return $this; - } - - /** - * A shortcut method to add a number of routes at a single time. - * It does not allow any options to be set on the route, or to - * define the method used. - */ - public function map(array $routes = [], ?array $options = null): RouteCollectionInterface - { - foreach ($routes as $from => $to) { - $this->add($from, $to, $options); - } - - return $this; - } - - /** - * Adds a single route to the collection. - * - * Example: - * $routes->add('news', 'Posts::index'); - * - * @param array|(Closure(mixed...): (ResponseInterface|string|void))|string $to - */ - public function add(string $from, $to, ?array $options = null): RouteCollectionInterface - { - $this->create('*', $from, $to, $options); - - return $this; - } - - /** - * Adds a temporary redirect from one route to another. Used for - * redirecting traffic from old, non-existing routes to the new - * moved routes. - * - * @param string $from The pattern to match against - * @param string $to Either a route name or a URI to redirect to - * @param int $status The HTTP status code that should be returned with this redirect - * - * @return RouteCollection - */ - public function addRedirect(string $from, string $to, int $status = 302) - { - // Use the named route's pattern if this is a named route. - if (array_key_exists($to, $this->routesNames['*'])) { - $routeName = $to; - $routeKey = $this->routesNames['*'][$routeName]; - $redirectTo = [$routeKey => $this->routes['*'][$routeKey]['handler']]; - } elseif (array_key_exists($to, $this->routesNames['get'])) { - $routeName = $to; - $routeKey = $this->routesNames['get'][$routeName]; - $redirectTo = [$routeKey => $this->routes['get'][$routeKey]['handler']]; - } else { - // The named route is not found. - $redirectTo = $to; - } - - $this->create('*', $from, $redirectTo, ['redirect' => $status]); - - return $this; - } - - /** - * Determines if the route is a redirecting route. - * - * @param string $routeKey routeKey or route name - */ - public function isRedirect(string $routeKey): bool - { - if (isset($this->routes['*'][$routeKey]['redirect'])) { - return true; - } - - // This logic is not used. Should be deprecated? - $routeName = $this->routes['*'][$routeKey]['name'] ?? null; - if ($routeName === $routeKey) { - $routeKey = $this->routesNames['*'][$routeName]; - - return isset($this->routes['*'][$routeKey]['redirect']); - } - - return false; - } - - /** - * Grabs the HTTP status code from a redirecting Route. - * - * @param string $routeKey routeKey or route name - */ - public function getRedirectCode(string $routeKey): int - { - if (isset($this->routes['*'][$routeKey]['redirect'])) { - return $this->routes['*'][$routeKey]['redirect']; - } - - // This logic is not used. Should be deprecated? - $routeName = $this->routes['*'][$routeKey]['name'] ?? null; - if ($routeName === $routeKey) { - $routeKey = $this->routesNames['*'][$routeName]; - - return $this->routes['*'][$routeKey]['redirect']; - } - - return 0; - } - - /** - * Group a series of routes under a single URL segment. This is handy - * for grouping items into an admin area, like: - * - * Example: - * // Creates route: admin/users - * $route->group('admin', function() { - * $route->resource('users'); - * }); - * - * @param string $name The name to group/prefix the routes with. - * @param array|callable ...$params - * - * @return void - */ - public function group(string $name, ...$params) - { - $oldGroup = $this->group; - $oldOptions = $this->currentOptions; - - // To register a route, we'll set a flag so that our router - // will see the group name. - // If the group name is empty, we go on using the previously built group name. - $this->group = $name ? trim($oldGroup . '/' . $name, '/') : $oldGroup; - - $callback = array_pop($params); - - if ($params && is_array($params[0])) { - $this->currentOptions = array_shift($params); - } - - if (is_callable($callback)) { - $callback($this); - } - - $this->group = $oldGroup; - $this->currentOptions = $oldOptions; - } - - /* - * -------------------------------------------------------------------- - * HTTP Verb-based routing - * -------------------------------------------------------------------- - * Routing works here because, as the routes Config file is read in, - * the various HTTP verb-based routes will only be added to the in-memory - * routes if it is a call that should respond to that verb. - * - * The options array is typically used to pass in an 'as' or var, but may - * be expanded in the future. See the docblock for 'add' method above for - * current list of globally available options. - */ - - /** - * Creates a collections of HTTP-verb based routes for a controller. - * - * Possible Options: - * 'controller' - Customize the name of the controller used in the 'to' route - * 'placeholder' - The regex used by the Router. Defaults to '(:any)' - * 'websafe' - - '1' if only GET and POST HTTP verbs are supported - * - * Example: - * - * $route->resource('photos'); - * - * // Generates the following routes: - * HTTP Verb | Path | Action | Used for... - * ----------+-------------+---------------+----------------- - * GET /photos index an array of photo objects - * GET /photos/new new an empty photo object, with default properties - * GET /photos/{id}/edit edit a specific photo object, editable properties - * GET /photos/{id} show a specific photo object, all properties - * POST /photos create a new photo object, to add to the resource - * DELETE /photos/{id} delete deletes the specified photo object - * PUT/PATCH /photos/{id} update replacement properties for existing photo - * - * If 'websafe' option is present, the following paths are also available: - * - * POST /photos/{id}/delete delete - * POST /photos/{id} update - * - * @param string $name The name of the resource/controller to route to. - * @param array|null $options A list of possible ways to customize the routing. - */ - public function resource(string $name, ?array $options = null): RouteCollectionInterface - { - // In order to allow customization of the route the - // resources are sent to, we need to have a new name - // to store the values in. - $newName = implode('\\', array_map('ucfirst', explode('/', $name))); - - // If a new controller is specified, then we replace the - // $name value with the name of the new controller. - if (isset($options['controller'])) { - $newName = ucfirst(esc(strip_tags($options['controller']))); - } - - // In order to allow customization of allowed id values - // we need someplace to store them. - $id = $options['placeholder'] ?? $this->placeholders[$this->defaultPlaceholder] ?? '(:segment)'; - - // Make sure we capture back-references - $id = '(' . trim($id, '()') . ')'; - - $methods = isset($options['only']) ? (is_string($options['only']) ? explode(',', $options['only']) : $options['only']) : ['index', 'show', 'create', 'update', 'delete', 'new', 'edit']; - - if (isset($options['except'])) { - $options['except'] = is_array($options['except']) ? $options['except'] : explode(',', $options['except']); - - foreach ($methods as $i => $method) { - if (in_array($method, $options['except'], true)) { - unset($methods[$i]); - } - } - } - - if (in_array('index', $methods, true)) { - $this->get($name, $newName . '::index', $options); - } - if (in_array('new', $methods, true)) { - $this->get($name . '/new', $newName . '::new', $options); - } - if (in_array('edit', $methods, true)) { - $this->get($name . '/' . $id . '/edit', $newName . '::edit/$1', $options); - } - if (in_array('show', $methods, true)) { - $this->get($name . '/' . $id, $newName . '::show/$1', $options); - } - if (in_array('create', $methods, true)) { - $this->post($name, $newName . '::create', $options); - } - if (in_array('update', $methods, true)) { - $this->put($name . '/' . $id, $newName . '::update/$1', $options); - $this->patch($name . '/' . $id, $newName . '::update/$1', $options); - } - if (in_array('delete', $methods, true)) { - $this->delete($name . '/' . $id, $newName . '::delete/$1', $options); - } - - // Web Safe? delete needs checking before update because of method name - if (isset($options['websafe'])) { - if (in_array('delete', $methods, true)) { - $this->post($name . '/' . $id . '/delete', $newName . '::delete/$1', $options); - } - if (in_array('update', $methods, true)) { - $this->post($name . '/' . $id, $newName . '::update/$1', $options); - } - } - - return $this; - } - - /** - * Creates a collections of HTTP-verb based routes for a presenter controller. - * - * Possible Options: - * 'controller' - Customize the name of the controller used in the 'to' route - * 'placeholder' - The regex used by the Router. Defaults to '(:any)' - * - * Example: - * - * $route->presenter('photos'); - * - * // Generates the following routes: - * HTTP Verb | Path | Action | Used for... - * ----------+-------------+---------------+----------------- - * GET /photos index showing all array of photo objects - * GET /photos/show/{id} show showing a specific photo object, all properties - * GET /photos/new new showing a form for an empty photo object, with default properties - * POST /photos/create create processing the form for a new photo - * GET /photos/edit/{id} edit show an editing form for a specific photo object, editable properties - * POST /photos/update/{id} update process the editing form data - * GET /photos/remove/{id} remove show a form to confirm deletion of a specific photo object - * POST /photos/delete/{id} delete deleting the specified photo object - * - * @param string $name The name of the controller to route to. - * @param array|null $options A list of possible ways to customize the routing. - */ - public function presenter(string $name, ?array $options = null): RouteCollectionInterface - { - // In order to allow customization of the route the - // resources are sent to, we need to have a new name - // to store the values in. - $newName = implode('\\', array_map('ucfirst', explode('/', $name))); - - // If a new controller is specified, then we replace the - // $name value with the name of the new controller. - if (isset($options['controller'])) { - $newName = ucfirst(esc(strip_tags($options['controller']))); - } - - // In order to allow customization of allowed id values - // we need someplace to store them. - $id = $options['placeholder'] ?? $this->placeholders[$this->defaultPlaceholder] ?? '(:segment)'; - - // Make sure we capture back-references - $id = '(' . trim($id, '()') . ')'; - - $methods = isset($options['only']) ? (is_string($options['only']) ? explode(',', $options['only']) : $options['only']) : ['index', 'show', 'new', 'create', 'edit', 'update', 'remove', 'delete']; - - if (isset($options['except'])) { - $options['except'] = is_array($options['except']) ? $options['except'] : explode(',', $options['except']); - - foreach ($methods as $i => $method) { - if (in_array($method, $options['except'], true)) { - unset($methods[$i]); - } - } - } - - if (in_array('index', $methods, true)) { - $this->get($name, $newName . '::index', $options); - } - if (in_array('show', $methods, true)) { - $this->get($name . '/show/' . $id, $newName . '::show/$1', $options); - } - if (in_array('new', $methods, true)) { - $this->get($name . '/new', $newName . '::new', $options); - } - if (in_array('create', $methods, true)) { - $this->post($name . '/create', $newName . '::create', $options); - } - if (in_array('edit', $methods, true)) { - $this->get($name . '/edit/' . $id, $newName . '::edit/$1', $options); - } - if (in_array('update', $methods, true)) { - $this->post($name . '/update/' . $id, $newName . '::update/$1', $options); - } - if (in_array('remove', $methods, true)) { - $this->get($name . '/remove/' . $id, $newName . '::remove/$1', $options); - } - if (in_array('delete', $methods, true)) { - $this->post($name . '/delete/' . $id, $newName . '::delete/$1', $options); - } - if (in_array('show', $methods, true)) { - $this->get($name . '/' . $id, $newName . '::show/$1', $options); - } - if (in_array('create', $methods, true)) { - $this->post($name, $newName . '::create', $options); - } - - return $this; - } - - /** - * Specifies a single route to match for multiple HTTP Verbs. - * - * Example: - * $route->match( ['get', 'post'], 'users/(:num)', 'users/$1); - * - * @param array|(Closure(mixed...): (ResponseInterface|string|void))|string $to - */ - public function match(array $verbs = [], string $from = '', $to = '', ?array $options = null): RouteCollectionInterface - { - if ($from === '' || empty($to)) { - throw new InvalidArgumentException('You must supply the parameters: from, to.'); - } - - foreach ($verbs as $verb) { - $verb = strtolower($verb); - - $this->{$verb}($from, $to, $options); - } - - return $this; - } - - /** - * Specifies a route that is only available to GET requests. - * - * @param array|(Closure(mixed...): (ResponseInterface|string|void))|string $to - */ - public function get(string $from, $to, ?array $options = null): RouteCollectionInterface - { - $this->create('get', $from, $to, $options); - - return $this; - } - - /** - * Specifies a route that is only available to POST requests. - * - * @param array|(Closure(mixed...): (ResponseInterface|string|void))|string $to - */ - public function post(string $from, $to, ?array $options = null): RouteCollectionInterface - { - $this->create('post', $from, $to, $options); - - return $this; - } - - /** - * Specifies a route that is only available to PUT requests. - * - * @param array|(Closure(mixed...): (ResponseInterface|string|void))|string $to - */ - public function put(string $from, $to, ?array $options = null): RouteCollectionInterface - { - $this->create('put', $from, $to, $options); - - return $this; - } - - /** - * Specifies a route that is only available to DELETE requests. - * - * @param array|(Closure(mixed...): (ResponseInterface|string|void))|string $to - */ - public function delete(string $from, $to, ?array $options = null): RouteCollectionInterface - { - $this->create('delete', $from, $to, $options); - - return $this; - } - - /** - * Specifies a route that is only available to HEAD requests. - * - * @param array|(Closure(mixed...): (ResponseInterface|string|void))|string $to - */ - public function head(string $from, $to, ?array $options = null): RouteCollectionInterface - { - $this->create('head', $from, $to, $options); - - return $this; - } - - /** - * Specifies a route that is only available to PATCH requests. - * - * @param array|(Closure(mixed...): (ResponseInterface|string|void))|string $to - */ - public function patch(string $from, $to, ?array $options = null): RouteCollectionInterface - { - $this->create('patch', $from, $to, $options); - - return $this; - } - - /** - * Specifies a route that is only available to OPTIONS requests. - * - * @param array|(Closure(mixed...): (ResponseInterface|string|void))|string $to - */ - public function options(string $from, $to, ?array $options = null): RouteCollectionInterface - { - $this->create('options', $from, $to, $options); - - return $this; - } - - /** - * Specifies a route that is only available to command-line requests. - * - * @param array|(Closure(mixed...): (ResponseInterface|string|void))|string $to - */ - public function cli(string $from, $to, ?array $options = null): RouteCollectionInterface - { - $this->create('cli', $from, $to, $options); - - return $this; - } - - /** - * Specifies a route that will only display a view. - * Only works for GET requests. - */ - public function view(string $from, string $view, ?array $options = null): RouteCollectionInterface - { - $to = static fn (...$data) => Services::renderer() - ->setData(['segments' => $data], 'raw') - ->render($view, $options); - - $routeOptions = $options ?? []; - $routeOptions = array_merge($routeOptions, ['view' => $view]); - - $this->create('get', $from, $to, $routeOptions); - - return $this; - } - - /** - * Limits the routes to a specified ENVIRONMENT or they won't run. - */ - public function environment(string $env, Closure $callback): RouteCollectionInterface - { - if ($env === ENVIRONMENT) { - $callback($this); - } - - return $this; - } - - /** - * Attempts to look up a route based on its destination. - * - * If a route exists: - * - * 'path/(:any)/(:any)' => 'Controller::method/$1/$2' - * - * This method allows you to know the Controller and method - * and get the route that leads to it. - * - * // Equals 'path/$param1/$param2' - * reverseRoute('Controller::method', $param1, $param2); - * - * @param string $search Route name or Controller::method - * @param int|string ...$params One or more parameters to be passed to the route. - * The last parameter allows you to set the locale. - * - * @return false|string The route (URI path relative to baseURL) or false if not found. - */ - public function reverseRoute(string $search, ...$params) - { - if ($search === '') { - return false; - } - - // Named routes get higher priority. - foreach ($this->routesNames as $verb => $collection) { - if (array_key_exists($search, $collection)) { - $routeKey = $collection[$search]; - - $from = $this->routes[$verb][$routeKey]['from']; - - return $this->buildReverseRoute($from, $params); - } - } - - // Add the default namespace if needed. - $namespace = trim($this->defaultNamespace, '\\') . '\\'; - if ( - substr($search, 0, 1) !== '\\' - && substr($search, 0, strlen($namespace)) !== $namespace - ) { - $search = $namespace . $search; - } - - // If it's not a named route, then loop over - // all routes to find a match. - foreach ($this->routes as $collection) { - foreach ($collection as $route) { - $to = $route['handler']; - $from = $route['from']; - - // ignore closures - if (! is_string($to)) { - continue; - } - - // Lose any namespace slash at beginning of strings - // to ensure more consistent match. - $to = ltrim($to, '\\'); - $search = ltrim($search, '\\'); - - // If there's any chance of a match, then it will - // be with $search at the beginning of the $to string. - if (strpos($to, $search) !== 0) { - continue; - } - - // Ensure that the number of $params given here - // matches the number of back-references in the route - if (substr_count($to, '$') !== count($params)) { - continue; - } - - return $this->buildReverseRoute($from, $params); - } - } - - // If we're still here, then we did not find a match. - return false; - } - - /** - * Replaces the {locale} tag with the current application locale - * - * @deprecated Unused. - */ - protected function localizeRoute(string $route): string - { - return strtr($route, ['{locale}' => Services::request()->getLocale()]); - } - - /** - * Checks a route (using the "from") to see if it's filtered or not. - */ - public function isFiltered(string $search, ?string $verb = null): bool - { - $options = $this->loadRoutesOptions($verb); - - return isset($options[$search]['filter']); - } - - /** - * Returns the filter that should be applied for a single route, along - * with any parameters it might have. Parameters are found by splitting - * the parameter name on a colon to separate the filter name from the parameter list, - * and the splitting the result on commas. So: - * - * 'role:admin,manager' - * - * has a filter of "role", with parameters of ['admin', 'manager']. - * - * @deprecated Use getFiltersForRoute() - */ - public function getFilterForRoute(string $search, ?string $verb = null): string - { - $options = $this->loadRoutesOptions($verb); - - return $options[$search]['filter'] ?? ''; - } - - /** - * Returns the filters that should be applied for a single route, along - * with any parameters it might have. Parameters are found by splitting - * the parameter name on a colon to separate the filter name from the parameter list, - * and the splitting the result on commas. So: - * - * 'role:admin,manager' - * - * has a filter of "role", with parameters of ['admin', 'manager']. - * - * @param string $search routeKey - * - * @return list<string> filter_name or filter_name:arguments like 'role:admin,manager' - */ - public function getFiltersForRoute(string $search, ?string $verb = null): array - { - $options = $this->loadRoutesOptions($verb); - - if (! array_key_exists($search, $options) || ! array_key_exists('filter', $options[$search])) { - return []; - } - - if (is_string($options[$search]['filter'])) { - return [$options[$search]['filter']]; - } - - return $options[$search]['filter']; - } - - /** - * Given a - * - * @throws RouterException - * - * @deprecated Unused. Now uses buildReverseRoute(). - */ - protected function fillRouteParams(string $from, ?array $params = null): string - { - // Find all of our back-references in the original route - preg_match_all('/\(([^)]+)\)/', $from, $matches); - - if (empty($matches[0])) { - return '/' . ltrim($from, '/'); - } - - /** - * Build our resulting string, inserting the $params in - * the appropriate places. - * - * @var list<string> $patterns - */ - $patterns = $matches[0]; - - foreach ($patterns as $index => $pattern) { - if (! preg_match('#^' . $pattern . '$#u', $params[$index])) { - throw RouterException::forInvalidParameterType(); - } - - // Ensure that the param we're inserting matches - // the expected param type. - $pos = strpos($from, $pattern); - $from = substr_replace($from, $params[$index], $pos, strlen($pattern)); - } - - return '/' . ltrim($from, '/'); - } - - /** - * Builds reverse route - * - * @param array $params One or more parameters to be passed to the route. - * The last parameter allows you to set the locale. - */ - protected function buildReverseRoute(string $from, array $params): string - { - $locale = null; - - // Find all of our back-references in the original route - preg_match_all('/\(([^)]+)\)/', $from, $matches); - - if (empty($matches[0])) { - if (strpos($from, '{locale}') !== false) { - $locale = $params[0] ?? null; - } - - $from = $this->replaceLocale($from, $locale); - - return '/' . ltrim($from, '/'); - } - - // Locale is passed? - $placeholderCount = count($matches[0]); - if (count($params) > $placeholderCount) { - $locale = $params[$placeholderCount]; - } - - /** - * Build our resulting string, inserting the $params in - * the appropriate places. - * - * @var list<string> $placeholders - */ - $placeholders = $matches[0]; - - foreach ($placeholders as $index => $placeholder) { - if (! isset($params[$index])) { - throw new InvalidArgumentException( - 'Missing argument for "' . $placeholder . '" in route "' . $from . '".' - ); - } - - // Remove `(:` and `)` when $placeholder is a placeholder. - $placeholderName = substr($placeholder, 2, -1); - // or maybe $placeholder is not a placeholder, but a regex. - $pattern = $this->placeholders[$placeholderName] ?? $placeholder; - - if (! preg_match('#^' . $pattern . '$#u', $params[$index])) { - throw RouterException::forInvalidParameterType(); - } - - // Ensure that the param we're inserting matches - // the expected param type. - $pos = strpos($from, $placeholder); - $from = substr_replace($from, $params[$index], $pos, strlen($placeholder)); - } - - $from = $this->replaceLocale($from, $locale); - - return '/' . ltrim($from, '/'); - } - - /** - * Replaces the {locale} tag with the locale - */ - private function replaceLocale(string $route, ?string $locale = null): string - { - if (strpos($route, '{locale}') === false) { - return $route; - } - - // Check invalid locale - if ($locale !== null) { - $config = config(App::class); - if (! in_array($locale, $config->supportedLocales, true)) { - $locale = null; - } - } - - if ($locale === null) { - $locale = Services::request()->getLocale(); - } - - return strtr($route, ['{locale}' => $locale]); - } - - /** - * Does the heavy lifting of creating an actual route. You must specify - * the request method(s) that this route will work for. They can be separated - * by a pipe character "|" if there is more than one. - * - * @param array|(Closure(mixed...): (ResponseInterface|string|void))|string $to - * - * @return void - */ - protected function create(string $verb, string $from, $to, ?array $options = null) - { - $overwrite = false; - $prefix = $this->group === null ? '' : $this->group . '/'; - - $from = esc(strip_tags($prefix . $from)); - - // While we want to add a route within a group of '/', - // it doesn't work with matching, so remove them... - if ($from !== '/') { - $from = trim($from, '/'); - } - - // When redirecting to named route, $to is an array like `['zombies' => '\Zombies::index']`. - if (is_array($to) && isset($to[0])) { - $to = $this->processArrayCallableSyntax($from, $to); - } - - $options = array_merge($this->currentOptions ?? [], $options ?? []); - - // Route priority detect - if (isset($options['priority'])) { - $options['priority'] = abs((int) $options['priority']); - - if ($options['priority'] > 0) { - $this->prioritizeDetected = true; - } - } - - // Hostname limiting? - if (! empty($options['hostname'])) { - // @todo determine if there's a way to whitelist hosts? - if (! $this->checkHostname($options['hostname'])) { - return; - } - - $overwrite = true; - } - // Limiting to subdomains? - elseif (! empty($options['subdomain'])) { - // If we don't match the current subdomain, then - // we don't need to add the route. - if (! $this->checkSubdomains($options['subdomain'])) { - return; - } - - $overwrite = true; - } - - // Are we offsetting the binds? - // If so, take care of them here in one - // fell swoop. - if (isset($options['offset']) && is_string($to)) { - // Get a constant string to work with. - $to = preg_replace('/(\$\d+)/', '$X', $to); - - for ($i = (int) $options['offset'] + 1; $i < (int) $options['offset'] + 7; $i++) { - $to = preg_replace_callback( - '/\$X/', - static fn ($m) => '$' . $i, - $to, - 1 - ); - } - } - - $routeKey = $from; - - // Replace our regex pattern placeholders with the actual thing - // so that the Router doesn't need to know about any of this. - foreach ($this->placeholders as $tag => $pattern) { - $routeKey = str_ireplace(':' . $tag, $pattern, $routeKey); - } - - // If is redirect, No processing - if (! isset($options['redirect']) && is_string($to)) { - // If no namespace found, add the default namespace - if (strpos($to, '\\') === false || strpos($to, '\\') > 0) { - $namespace = $options['namespace'] ?? $this->defaultNamespace; - $to = trim($namespace, '\\') . '\\' . $to; - } - // Always ensure that we escape our namespace so we're not pointing to - // \CodeIgniter\Routes\Controller::method. - $to = '\\' . ltrim($to, '\\'); - } - - $name = $options['as'] ?? $routeKey; - - helper('array'); - - // Don't overwrite any existing 'froms' so that auto-discovered routes - // do not overwrite any app/Config/Routes settings. The app - // routes should always be the "source of truth". - // this works only because discovered routes are added just prior - // to attempting to route the request. - $routeKeyExists = isset($this->routes[$verb][$routeKey]); - if ((isset($this->routesNames[$verb][$name]) || $routeKeyExists) && ! $overwrite) { - return; - } - - $this->routes[$verb][$routeKey] = [ - 'name' => $name, - 'handler' => $to, - 'from' => $from, - ]; - $this->routesOptions[$verb][$routeKey] = $options; - $this->routesNames[$verb][$name] = $routeKey; - - // Is this a redirect? - if (isset($options['redirect']) && is_numeric($options['redirect'])) { - $this->routes['*'][$routeKey]['redirect'] = $options['redirect']; - } - } - - /** - * Compares the hostname passed in against the current hostname - * on this page request. - * - * @param string $hostname Hostname in route options - */ - private function checkHostname($hostname): bool - { - // CLI calls can't be on hostname. - if (! isset($this->httpHost)) { - return false; - } - - return strtolower($this->httpHost) === strtolower($hostname); - } - - private function processArrayCallableSyntax(string $from, array $to): string - { - // [classname, method] - // eg, [Home::class, 'index'] - if (is_callable($to, true, $callableName)) { - // If the route has placeholders, add params automatically. - $params = $this->getMethodParams($from); - - return '\\' . $callableName . $params; - } - - // [[classname, method], params] - // eg, [[Home::class, 'index'], '$1/$2'] - if ( - isset($to[0], $to[1]) - && is_callable($to[0], true, $callableName) - && is_string($to[1]) - ) { - $to = '\\' . $callableName . '/' . $to[1]; - } - - return $to; - } - - /** - * Returns the method param string like `/$1/$2` for placeholders - */ - private function getMethodParams(string $from): string - { - preg_match_all('/\(.+?\)/', $from, $matches); - $count = is_countable($matches[0]) ? count($matches[0]) : 0; - - $params = ''; - - for ($i = 1; $i <= $count; $i++) { - $params .= '/$' . $i; - } - - return $params; - } - - /** - * Compares the subdomain(s) passed in against the current subdomain - * on this page request. - * - * @param string|string[] $subdomains - */ - private function checkSubdomains($subdomains): bool - { - // CLI calls can't be on subdomain. - if (! isset($this->httpHost)) { - return false; - } - - if ($this->currentSubdomain === null) { - $this->currentSubdomain = $this->determineCurrentSubdomain(); - } - - if (! is_array($subdomains)) { - $subdomains = [$subdomains]; - } - - // Routes can be limited to any sub-domain. In that case, though, - // it does require a sub-domain to be present. - if (! empty($this->currentSubdomain) && in_array('*', $subdomains, true)) { - return true; - } - - return in_array($this->currentSubdomain, $subdomains, true); - } - - /** - * Examines the HTTP_HOST to get the best match for the subdomain. It - * won't be perfect, but should work for our needs. - * - * It's especially not perfect since it's possible to register a domain - * with a period (.) as part of the domain name. - * - * @return false|string the subdomain - */ - private function determineCurrentSubdomain() - { - // We have to ensure that a scheme exists - // on the URL else parse_url will mis-interpret - // 'host' as the 'path'. - $url = $this->httpHost; - if (strpos($url, 'http') !== 0) { - $url = 'http://' . $url; - } - - $parsedUrl = parse_url($url); - - $host = explode('.', $parsedUrl['host']); - - if ($host[0] === 'www') { - unset($host[0]); - } - - // Get rid of any domains, which will be the last - unset($host[count($host) - 1]); - - // Account for .co.uk, .co.nz, etc. domains - if (end($host) === 'co') { - $host = array_slice($host, 0, -1); - } - - // If we only have 1 part left, then we don't have a sub-domain. - if (count($host) === 1) { - // Set it to false so we don't make it back here again. - return false; - } - - return array_shift($host); - } - - /** - * Reset the routes, so that a test case can provide the - * explicit ones needed for it. - * - * @return void - */ - public function resetRoutes() - { - $this->routes = $this->routesNames = ['*' => []]; - - foreach ($this->defaultHTTPMethods as $verb) { - $this->routes[$verb] = []; - $this->routesNames[$verb] = []; - } - - $this->routesOptions = []; - - $this->prioritizeDetected = false; - $this->didDiscover = false; - } - - /** - * Load routes options based on verb - * - * @return array< - * string, - * array{ - * filter?: string|list<string>, namespace?: string, hostname?: string, - * subdomain?: string, offset?: int, priority?: int, as?: string, - * redirect?: int - * } - * > - */ - protected function loadRoutesOptions(?string $verb = null): array - { - $verb ??= $this->getHTTPVerb(); - - $options = $this->routesOptions[$verb] ?? []; - - if (isset($this->routesOptions['*'])) { - foreach ($this->routesOptions['*'] as $key => $val) { - if (isset($options[$key])) { - $extraOptions = array_diff_key($val, $options[$key]); - $options[$key] = array_merge($options[$key], $extraOptions); - } else { - $options[$key] = $val; - } - } - } - - return $options; - } - - /** - * Enable or Disable sorting routes by priority - * - * @param bool $enabled The value status - * - * @return $this - */ - public function setPrioritize(bool $enabled = true) - { - $this->prioritize = $enabled; - - return $this; - } - - /** - * Get all controllers in Route Handlers - * - * @param string|null $verb HTTP verb. `'*'` returns all controllers in any verb. - * - * @return list<string> controller name list - */ - public function getRegisteredControllers(?string $verb = '*'): array - { - $controllers = []; - - if ($verb === '*') { - foreach ($this->defaultHTTPMethods as $tmpVerb) { - foreach ($this->routes[$tmpVerb] as $route) { - $controller = $this->getControllerName($route['handler']); - if ($controller !== null) { - $controllers[] = $controller; - } - } - } - } else { - $routes = $this->getRoutes($verb); - - foreach ($routes as $handler) { - $controller = $this->getControllerName($handler); - if ($controller !== null) { - $controllers[] = $controller; - } - } - } - - return array_unique($controllers); - } - - /** - * @param (Closure(mixed...): (ResponseInterface|string|void))|string $handler Handler - * - * @return string|null Controller classname - */ - private function getControllerName($handler) - { - if (! is_string($handler)) { - return null; - } - - [$controller] = explode('::', $handler, 2); - - return $controller; - } - - /** - * Set The flag that limit or not the routes with {locale} placeholder to App::$supportedLocales - */ - public function useSupportedLocalesOnly(bool $useOnly): self - { - $this->useSupportedLocalesOnly = $useOnly; - - return $this; - } - - /** - * Get the flag that limit or not the routes with {locale} placeholder to App::$supportedLocales - */ - public function shouldUseSupportedLocalesOnly(): bool - { - return $this->useSupportedLocalesOnly; - } -} diff --git a/system4.4.6/Router/RouteCollectionInterface.php b/system4.4.6/Router/RouteCollectionInterface.php deleted file mode 100644 index c9c86100..00000000 --- a/system4.4.6/Router/RouteCollectionInterface.php +++ /dev/null @@ -1,195 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Router; - -use Closure; -use CodeIgniter\HTTP\ResponseInterface; - -/** - * Interface RouteCollectionInterface - * - * A Route Collection's sole job is to hold a series of routes. The required - * number of methods is kept very small on purpose, but implementors may - * add a number of additional methods to customize how the routes are defined. - * - * The RouteCollection provides the Router with the routes so that it can determine - * which controller should be run. - */ -interface RouteCollectionInterface -{ - /** - * Adds a single route to the collection. - * - * @param string $from The route path (with placeholders or regex) - * @param array|(Closure(mixed...): (ResponseInterface|string|void))|string $to The route handler - * @param array|null $options The route options - * - * @return RouteCollectionInterface - */ - public function add(string $from, $to, ?array $options = null); - - /** - * Registers a new constraint with the system. Constraints are used - * by the routes as placeholders for regular expressions to make defining - * the routes more human-friendly. - * - * You can pass an associative array as $placeholder, and have - * multiple placeholders added at once. - * - * @param array|string $placeholder - * @param string|null $pattern The regex pattern - * - * @return RouteCollectionInterface - */ - public function addPlaceholder($placeholder, ?string $pattern = null); - - /** - * Sets the default namespace to use for Controllers when no other - * namespace has been specified. - * - * @return RouteCollectionInterface - */ - public function setDefaultNamespace(string $value); - - /** - * Sets the default controller to use when no other controller has been - * specified. - * - * @return RouteCollectionInterface - */ - public function setDefaultController(string $value); - - /** - * Sets the default method to call on the controller when no other - * method has been set in the route. - * - * @return RouteCollectionInterface - */ - public function setDefaultMethod(string $value); - - /** - * Tells the system whether to convert dashes in URI strings into - * underscores. In some search engines, including Google, dashes - * create more meaning and make it easier for the search engine to - * find words and meaning in the URI for better SEO. But it - * doesn't work well with PHP method names.... - * - * @return RouteCollectionInterface - */ - public function setTranslateURIDashes(bool $value); - - /** - * If TRUE, the system will attempt to match the URI against - * Controllers by matching each segment against folders/files - * in APPPATH/Controllers, when a match wasn't found against - * defined routes. - * - * If FALSE, will stop searching and do NO automatic routing. - */ - public function setAutoRoute(bool $value): self; - - /** - * Sets the class/method that should be called if routing doesn't - * find a match. It can be either a closure or the controller/method - * name exactly like a route is defined: Users::index - * - * This setting is passed to the Router class and handled there. - * - * @param callable|null $callable - */ - public function set404Override($callable = null): self; - - /** - * Returns the 404 Override setting, which can be null, a closure - * or the controller/string. - * - * @return (Closure(string): (ResponseInterface|string|void))|string|null - */ - public function get404Override(); - - /** - * Returns the name of the default controller. With Namespace. - * - * @return string - */ - public function getDefaultController(); - - /** - * Returns the name of the default method to use within the controller. - * - * @return string - */ - public function getDefaultMethod(); - - /** - * Returns the current value of the translateURIDashes setting. - * - * @return bool - */ - public function shouldTranslateURIDashes(); - - /** - * Returns the flag that tells whether to autoRoute URI against Controllers. - * - * @return bool - */ - public function shouldAutoRoute(); - - /** - * Returns the raw array of available routes. - * - * @return array - */ - public function getRoutes(); - - /** - * Returns the current HTTP Verb being used. - * - * @return string - */ - public function getHTTPVerb(); - - /** - * Attempts to look up a route based on its destination. - * - * If a route exists: - * - * 'path/(:any)/(:any)' => 'Controller::method/$1/$2' - * - * This method allows you to know the Controller and method - * and get the route that leads to it. - * - * // Equals 'path/$param1/$param2' - * reverseRoute('Controller::method', $param1, $param2); - * - * @param string $search Named route or Controller::method - * @param int|string ...$params - * - * @return false|string The route (URI path relative to baseURL) or false if not found. - */ - public function reverseRoute(string $search, ...$params); - - /** - * Determines if the route is a redirecting route. - */ - public function isRedirect(string $routeKey): bool; - - /** - * Grabs the HTTP status code from a redirecting Route. - */ - public function getRedirectCode(string $routeKey): int; - - /** - * Get the flag that limit or not the routes with {locale} placeholder to App::$supportedLocales - */ - public function shouldUseSupportedLocalesOnly(): bool; -} diff --git a/system4.4.6/Router/Router.php b/system4.4.6/Router/Router.php deleted file mode 100644 index 634f3e61..00000000 --- a/system4.4.6/Router/Router.php +++ /dev/null @@ -1,679 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Router; - -use Closure; -use CodeIgniter\Exceptions\PageNotFoundException; -use CodeIgniter\HTTP\Exceptions\RedirectException; -use CodeIgniter\HTTP\Request; -use CodeIgniter\HTTP\ResponseInterface; -use CodeIgniter\Router\Exceptions\RouterException; -use Config\App; -use Config\Feature; - -/** - * Request router. - * - * @see \CodeIgniter\Router\RouterTest - */ -class Router implements RouterInterface -{ - /** - * A RouteCollection instance. - * - * @var RouteCollectionInterface - */ - protected $collection; - - /** - * Sub-directory that contains the requested controller class. - * Primarily used by 'autoRoute'. - * - * @var string|null - */ - protected $directory; - - /** - * The name of the controller class. - * - * @var (Closure(mixed...): (ResponseInterface|string|void))|string - */ - protected $controller; - - /** - * The name of the method to use. - * - * @var string - */ - protected $method; - - /** - * An array of binds that were collected - * so they can be sent to closure routes. - * - * @var array - */ - protected $params = []; - - /** - * The name of the front controller. - * - * @var string - */ - protected $indexPage = 'index.php'; - - /** - * Whether dashes in URI's should be converted - * to underscores when determining method names. - * - * @var bool - */ - protected $translateURIDashes = false; - - /** - * The route that was matched for this request. - * - * @var array|null - */ - protected $matchedRoute; - - /** - * The options set for the matched route. - * - * @var array|null - */ - protected $matchedRouteOptions; - - /** - * The locale that was detected in a route. - * - * @var string - */ - protected $detectedLocale; - - /** - * The filter info from Route Collection - * if the matched route should be filtered. - * - * @var string|null - * - * @deprecated Use $filtersInfo - */ - protected $filterInfo; - - /** - * The filter info from Route Collection - * if the matched route should be filtered. - * - * @var string[] - */ - protected $filtersInfo = []; - - protected ?AutoRouterInterface $autoRouter = null; - - /** - * Stores a reference to the RouteCollection object. - */ - public function __construct(RouteCollectionInterface $routes, ?Request $request = null) - { - $this->collection = $routes; - - // These are only for auto-routing - $this->controller = $this->collection->getDefaultController(); - $this->method = $this->collection->getDefaultMethod(); - - $this->collection->setHTTPVerb($request->getMethod() ?? $_SERVER['REQUEST_METHOD']); - - $this->translateURIDashes = $this->collection->shouldTranslateURIDashes(); - - if ($this->collection->shouldAutoRoute()) { - $autoRoutesImproved = config(Feature::class)->autoRoutesImproved ?? false; - if ($autoRoutesImproved) { - $this->autoRouter = new AutoRouterImproved( - $this->collection->getRegisteredControllers('*'), - $this->collection->getDefaultNamespace(), - $this->collection->getDefaultController(), - $this->collection->getDefaultMethod(), - $this->translateURIDashes, - $this->collection->getHTTPVerb() - ); - } else { - $this->autoRouter = new AutoRouter( - $this->collection->getRoutes('cli', false), // @phpstan-ignore-line - $this->collection->getDefaultNamespace(), - $this->collection->getDefaultController(), - $this->collection->getDefaultMethod(), - $this->translateURIDashes, - $this->collection->getHTTPVerb() - ); - } - } - } - - /** - * Finds the controller method corresponding to the URI. - * - * @param string|null $uri URI path relative to baseURL - * - * @return (Closure(mixed...): (ResponseInterface|string|void))|string Controller classname or Closure - * - * @throws PageNotFoundException - * @throws RedirectException - */ - public function handle(?string $uri = null) - { - // If we cannot find a URI to match against, then set it to root (`/`). - if ($uri === null || $uri === '') { - $uri = '/'; - } - - // Decode URL-encoded string - $uri = urldecode($uri); - - // Restart filterInfo - $this->filterInfo = null; - $this->filtersInfo = []; - - // Checks defined routes - if ($this->checkRoutes($uri)) { - if ($this->collection->isFiltered($this->matchedRoute[0])) { - $multipleFiltersEnabled = config(Feature::class)->multipleFilters ?? false; - if ($multipleFiltersEnabled) { - $this->filtersInfo = $this->collection->getFiltersForRoute($this->matchedRoute[0]); - } else { - // for backward compatibility - $this->filterInfo = $this->collection->getFilterForRoute($this->matchedRoute[0]); - } - } - - return $this->controller; - } - - // Still here? Then we can try to match the URI against - // Controllers/directories, but the application may not - // want this, like in the case of API's. - if (! $this->collection->shouldAutoRoute()) { - throw new PageNotFoundException( - "Can't find a route for '{$this->collection->getHTTPVerb()}: {$uri}'." - ); - } - - // Checks auto routes - $this->autoRoute($uri); - - return $this->controllerName(); - } - - /** - * Returns the filter info for the matched route, if any. - * - * @return string|null - * - * @deprecated Use getFilters() - */ - public function getFilter() - { - return $this->filterInfo; - } - - /** - * Returns the filter info for the matched route, if any. - * - * @return string[] - */ - public function getFilters(): array - { - return $this->filtersInfo; - } - - /** - * Returns the name of the matched controller. - * - * @return (Closure(mixed...): (ResponseInterface|string|void))|string Controller classname or Closure - */ - public function controllerName() - { - return $this->translateURIDashes - ? str_replace('-', '_', $this->controller) - : $this->controller; - } - - /** - * Returns the name of the method to run in the - * chosen container. - */ - public function methodName(): string - { - return $this->translateURIDashes - ? str_replace('-', '_', $this->method) - : $this->method; - } - - /** - * Returns the 404 Override settings from the Collection. - * If the override is a string, will split to controller/index array. - */ - public function get404Override() - { - $route = $this->collection->get404Override(); - - if (is_string($route)) { - $routeArray = explode('::', $route); - - return [ - $routeArray[0], // Controller - $routeArray[1] ?? 'index', // Method - ]; - } - - if (is_callable($route)) { - return $route; - } - - return null; - } - - /** - * Returns the binds that have been matched and collected - * during the parsing process as an array, ready to send to - * instance->method(...$params). - */ - public function params(): array - { - return $this->params; - } - - /** - * Returns the name of the sub-directory the controller is in, - * if any. Relative to APPPATH.'Controllers'. - * - * Only used when auto-routing is turned on. - */ - public function directory(): string - { - if ($this->autoRouter instanceof AutoRouter) { - return $this->autoRouter->directory(); - } - - return ''; - } - - /** - * Returns the routing information that was matched for this - * request, if a route was defined. - * - * @return array|null - */ - public function getMatchedRoute() - { - return $this->matchedRoute; - } - - /** - * Returns all options set for the matched route - * - * @return array|null - */ - public function getMatchedRouteOptions() - { - return $this->matchedRouteOptions; - } - - /** - * Sets the value that should be used to match the index.php file. Defaults - * to index.php but this allows you to modify it in case you are using - * something like mod_rewrite to remove the page. This allows you to set - * it a blank. - * - * @param string $page - */ - public function setIndexPage($page): self - { - $this->indexPage = $page; - - return $this; - } - - /** - * Tells the system whether we should translate URI dashes or not - * in the URI from a dash to an underscore. - * - * @deprecated This method should be removed. - */ - public function setTranslateURIDashes(bool $val = false): self - { - if ($this->autoRouter instanceof AutoRouter) { - $this->autoRouter->setTranslateURIDashes($val); - - return $this; - } - - return $this; - } - - /** - * Returns true/false based on whether the current route contained - * a {locale} placeholder. - * - * @return bool - */ - public function hasLocale() - { - return (bool) $this->detectedLocale; - } - - /** - * Returns the detected locale, if any, or null. - * - * @return string - */ - public function getLocale() - { - return $this->detectedLocale; - } - - /** - * Checks Defined Routes. - * - * Compares the uri string against the routes that the - * RouteCollection class defined for us, attempting to find a match. - * This method will modify $this->controller, etal as needed. - * - * @param string $uri The URI path to compare against the routes - * - * @return bool Whether the route was matched or not. - * - * @throws RedirectException - */ - protected function checkRoutes(string $uri): bool - { - // @phpstan-ignore-next-line - $routes = $this->collection->getRoutes($this->collection->getHTTPVerb()); - - // Don't waste any time - if (empty($routes)) { - return false; - } - - $uri = $uri === '/' - ? $uri - : trim($uri, '/ '); - - // Loop through the route array looking for wildcards - foreach ($routes as $routeKey => $handler) { - $routeKey = $routeKey === '/' - ? $routeKey - : ltrim($routeKey, '/ '); - - $matchedKey = $routeKey; - - // Are we dealing with a locale? - if (strpos($routeKey, '{locale}') !== false) { - $routeKey = str_replace('{locale}', '[^/]+', $routeKey); - } - - // Does the RegEx match? - if (preg_match('#^' . $routeKey . '$#u', $uri, $matches)) { - // Is this route supposed to redirect to another? - if ($this->collection->isRedirect($routeKey)) { - // replacing matched route groups with references: post/([0-9]+) -> post/$1 - $redirectTo = preg_replace_callback('/(\([^\(]+\))/', static function () { - static $i = 1; - - return '$' . $i++; - }, is_array($handler) ? key($handler) : $handler); - - throw new RedirectException( - preg_replace('#^' . $routeKey . '$#u', $redirectTo, $uri), - $this->collection->getRedirectCode($routeKey) - ); - } - // Store our locale so CodeIgniter object can - // assign it to the Request. - if (strpos($matchedKey, '{locale}') !== false) { - preg_match( - '#^' . str_replace('{locale}', '(?<locale>[^/]+)', $matchedKey) . '$#u', - $uri, - $matched - ); - - if ($this->collection->shouldUseSupportedLocalesOnly() - && ! in_array($matched['locale'], config(App::class)->supportedLocales, true)) { - // Throw exception to prevent the autorouter, if enabled, - // from trying to find a route - throw PageNotFoundException::forLocaleNotSupported($matched['locale']); - } - - $this->detectedLocale = $matched['locale']; - unset($matched); - } - - // Are we using Closures? If so, then we need - // to collect the params into an array - // so it can be passed to the controller method later. - if (! is_string($handler) && is_callable($handler)) { - $this->controller = $handler; - - // Remove the original string from the matches array - array_shift($matches); - - $this->params = $matches; - - $this->setMatchedRoute($matchedKey, $handler); - - return true; - } - - [$controller] = explode('::', $handler); - - // Checks `/` in controller name - if (strpos($controller, '/') !== false) { - throw RouterException::forInvalidControllerName($handler); - } - - if (strpos($handler, '$') !== false && strpos($routeKey, '(') !== false) { - // Checks dynamic controller - if (strpos($controller, '$') !== false) { - throw RouterException::forDynamicController($handler); - } - - // Using back-references - $handler = preg_replace('#^' . $routeKey . '$#u', $handler, $uri); - } - - $this->setRequest(explode('/', $handler)); - - $this->setMatchedRoute($matchedKey, $handler); - - return true; - } - } - - return false; - } - - /** - * Checks Auto Routes. - * - * Attempts to match a URI path against Controllers and directories - * found in APPPATH/Controllers, to find a matching route. - * - * @return void - */ - public function autoRoute(string $uri) - { - [$this->directory, $this->controller, $this->method, $this->params] - = $this->autoRouter->getRoute($uri, $this->collection->getHTTPVerb()); - } - - /** - * Scans the controller directory, attempting to locate a controller matching the supplied uri $segments - * - * @param array $segments URI segments - * - * @return array returns an array of remaining uri segments that don't map onto a directory - * - * @deprecated this function name does not properly describe its behavior so it has been deprecated - * - * @codeCoverageIgnore - */ - protected function validateRequest(array $segments): array - { - return $this->scanControllers($segments); - } - - /** - * Scans the controller directory, attempting to locate a controller matching the supplied uri $segments - * - * @param array $segments URI segments - * - * @return array returns an array of remaining uri segments that don't map onto a directory - * - * @deprecated Not used. Moved to AutoRouter class. - */ - protected function scanControllers(array $segments): array - { - $segments = array_filter($segments, static fn ($segment) => $segment !== ''); - // numerically reindex the array, removing gaps - $segments = array_values($segments); - - // if a prior directory value has been set, just return segments and get out of here - if (isset($this->directory)) { - return $segments; - } - - // Loop through our segments and return as soon as a controller - // is found or when such a directory doesn't exist - $c = count($segments); - - while ($c-- > 0) { - $segmentConvert = ucfirst($this->translateURIDashes === true ? str_replace('-', '_', $segments[0]) : $segments[0]); - // as soon as we encounter any segment that is not PSR-4 compliant, stop searching - if (! $this->isValidSegment($segmentConvert)) { - return $segments; - } - - $test = APPPATH . 'Controllers/' . $this->directory . $segmentConvert; - - // as long as each segment is *not* a controller file but does match a directory, add it to $this->directory - if (! is_file($test . '.php') && is_dir($test)) { - $this->setDirectory($segmentConvert, true, false); - array_shift($segments); - - continue; - } - - return $segments; - } - - // This means that all segments were actually directories - return $segments; - } - - /** - * Sets the sub-directory that the controller is in. - * - * @param bool $validate if true, checks to make sure $dir consists of only PSR4 compliant segments - * - * @return void - * - * @deprecated This method should be removed. - */ - public function setDirectory(?string $dir = null, bool $append = false, bool $validate = true) - { - if ($dir === null || $dir === '') { - $this->directory = null; - } - - if ($this->autoRouter instanceof AutoRouter) { - $this->autoRouter->setDirectory($dir, $append, $validate); - } - } - - /** - * Returns true if the supplied $segment string represents a valid PSR-4 compliant namespace/directory segment - * - * regex comes from https://www.php.net/manual/en/language.variables.basics.php - * - * @deprecated Moved to AutoRouter class. - */ - private function isValidSegment(string $segment): bool - { - return (bool) preg_match('/^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$/', $segment); - } - - /** - * Set request route - * - * Takes an array of URI segments as input and sets the class/method - * to be called. - * - * @param array $segments URI segments - * - * @return void - */ - protected function setRequest(array $segments = []) - { - // If we don't have any segments - use the default controller; - if ($segments === []) { - return; - } - - [$controller, $method] = array_pad(explode('::', $segments[0]), 2, null); - - $this->controller = $controller; - - // $this->method already contains the default method name, - // so don't overwrite it with emptiness. - if (! empty($method)) { - $this->method = $method; - } - - array_shift($segments); - - $this->params = $segments; - } - - /** - * Sets the default controller based on the info set in the RouteCollection. - * - * @deprecated This was an unnecessary method, so it is no longer used. - * - * @return void - */ - protected function setDefaultController() - { - if (empty($this->controller)) { - throw RouterException::forMissingDefaultRoute(); - } - - sscanf($this->controller, '%[^/]/%s', $class, $this->method); - - if (! is_file(APPPATH . 'Controllers/' . $this->directory . ucfirst($class) . '.php')) { - return; - } - - $this->controller = ucfirst($class); - - log_message('info', 'Used the default controller.'); - } - - /** - * @param callable|string $handler - */ - protected function setMatchedRoute(string $route, $handler): void - { - $this->matchedRoute = [$route, $handler]; - - $this->matchedRouteOptions = $this->collection->getRoutesOptions($route); - } -} diff --git a/system4.4.6/Router/RouterInterface.php b/system4.4.6/Router/RouterInterface.php deleted file mode 100644 index ccdef3d6..00000000 --- a/system4.4.6/Router/RouterInterface.php +++ /dev/null @@ -1,71 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Router; - -use Closure; -use CodeIgniter\HTTP\Request; -use CodeIgniter\HTTP\ResponseInterface; - -/** - * Expected behavior of a Router. - */ -interface RouterInterface -{ - /** - * Stores a reference to the RouteCollection object. - */ - public function __construct(RouteCollectionInterface $routes, ?Request $request = null); - - /** - * Finds the controller method corresponding to the URI. - * - * @param string|null $uri URI path relative to baseURL - * - * @return (Closure(mixed...): (ResponseInterface|string|void))|string Controller classname or Closure - */ - public function handle(?string $uri = null); - - /** - * Returns the name of the matched controller. - * - * @return (Closure(mixed...): (ResponseInterface|string|void))|string Controller classname or Closure - */ - public function controllerName(); - - /** - * Returns the name of the method in the controller to run. - * - * @return string - */ - public function methodName(); - - /** - * Returns the binds that have been matched and collected - * during the parsing process as an array, ready to send to - * instance->method(...$params). - * - * @return array - */ - public function params(); - - /** - * Sets the value that should be used to match the index.php file. Defaults - * to index.php but this allows you to modify it in case you are using - * something like mod_rewrite to remove the page. This allows you to set - * it a blank. - * - * @param string $page - * - * @return RouterInterface - */ - public function setIndexPage($page); -} diff --git a/system4.4.6/Security/Exceptions/SecurityException.php b/system4.4.6/Security/Exceptions/SecurityException.php deleted file mode 100644 index ab2f6adc..00000000 --- a/system4.4.6/Security/Exceptions/SecurityException.php +++ /dev/null @@ -1,72 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Security\Exceptions; - -use CodeIgniter\Exceptions\FrameworkException; -use CodeIgniter\Exceptions\HTTPExceptionInterface; - -class SecurityException extends FrameworkException implements HTTPExceptionInterface -{ - /** - * Throws when some specific action is not allowed. - * - * @return static - */ - public static function forDisallowedAction() - { - return new static(lang('Security.disallowedAction'), 403); - } - - /** - * Throws when the source string contains invalid UTF-8 characters. - * - * @param string $source The source string - * @param string $string The invalid string - * - * @return static - */ - public static function forInvalidUTF8Chars(string $source, string $string) - { - return new static( - 'Invalid UTF-8 characters in ' . $source . ': ' . $string, - 400 - ); - } - - /** - * Throws when the source string contains invalid control characters. - * - * @param string $source The source string - * @param string $string The invalid string - * - * @return static - */ - public static function forInvalidControlChars(string $source, string $string) - { - return new static( - 'Invalid Control characters in ' . $source . ': ' . $string, - 400 - ); - } - - /** - * @deprecated Use `CookieException::forInvalidSameSite()` instead. - * - * @codeCoverageIgnore - * - * @return static - */ - public static function forInvalidSameSite(string $samesite) - { - return new static(lang('Security.invalidSameSite', [$samesite])); - } -} diff --git a/system4.4.6/Security/Security.php b/system4.4.6/Security/Security.php deleted file mode 100644 index 4ba66563..00000000 --- a/system4.4.6/Security/Security.php +++ /dev/null @@ -1,628 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Security; - -use CodeIgniter\Cookie\Cookie; -use CodeIgniter\HTTP\IncomingRequest; -use CodeIgniter\HTTP\Request; -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\I18n\Time; -use CodeIgniter\Security\Exceptions\SecurityException; -use CodeIgniter\Session\Session; -use Config\Cookie as CookieConfig; -use Config\Security as SecurityConfig; -use Config\Services; -use ErrorException; -use InvalidArgumentException; -use LogicException; - -/** - * Class Security - * - * Provides methods that help protect your site against - * Cross-Site Request Forgery attacks. - * - * @see \CodeIgniter\Security\SecurityTest - */ -class Security implements SecurityInterface -{ - public const CSRF_PROTECTION_COOKIE = 'cookie'; - public const CSRF_PROTECTION_SESSION = 'session'; - protected const CSRF_HASH_BYTES = 16; - - /** - * CSRF Protection Method - * - * Protection Method for Cross Site Request Forgery protection. - * - * @var string 'cookie' or 'session' - * - * @deprecated 4.4.0 Use $this->config->csrfProtection. - */ - protected $csrfProtection = self::CSRF_PROTECTION_COOKIE; - - /** - * CSRF Token Randomization - * - * @var bool - * - * @deprecated 4.4.0 Use $this->config->tokenRandomize. - */ - protected $tokenRandomize = false; - - /** - * CSRF Hash (without randomization) - * - * Random hash for Cross Site Request Forgery protection. - * - * @var string|null - */ - protected $hash; - - /** - * CSRF Token Name - * - * Token name for Cross Site Request Forgery protection. - * - * @var string - * - * @deprecated 4.4.0 Use $this->config->tokenName. - */ - protected $tokenName = 'csrf_token_name'; - - /** - * CSRF Header Name - * - * Header name for Cross Site Request Forgery protection. - * - * @var string - * - * @deprecated 4.4.0 Use $this->config->headerName. - */ - protected $headerName = 'X-CSRF-TOKEN'; - - /** - * The CSRF Cookie instance. - * - * @var Cookie - */ - protected $cookie; - - /** - * CSRF Cookie Name (with Prefix) - * - * Cookie name for Cross Site Request Forgery protection. - * - * @var string - */ - protected $cookieName = 'csrf_cookie_name'; - - /** - * CSRF Expires - * - * Expiration time for Cross Site Request Forgery protection cookie. - * - * Defaults to two hours (in seconds). - * - * @var int - * - * @deprecated 4.4.0 Use $this->config->expires. - */ - protected $expires = 7200; - - /** - * CSRF Regenerate - * - * Regenerate CSRF Token on every request. - * - * @var bool - * - * @deprecated 4.4.0 Use $this->config->regenerate. - */ - protected $regenerate = true; - - /** - * CSRF Redirect - * - * Redirect to previous page with error on failure. - * - * @var bool - * - * @deprecated 4.4.0 Use $this->config->redirect. - */ - protected $redirect = false; - - /** - * CSRF SameSite - * - * Setting for CSRF SameSite cookie token. - * - * Allowed values are: None - Lax - Strict - ''. - * - * Defaults to `Lax` as recommended in this link: - * - * @see https://portswigger.net/web-security/csrf/samesite-cookies - * - * @var string - * - * @deprecated `Config\Cookie` $samesite property is used. - */ - protected $samesite = Cookie::SAMESITE_LAX; - - private IncomingRequest $request; - - /** - * CSRF Cookie Name without Prefix - */ - private ?string $rawCookieName = null; - - /** - * Session instance. - */ - private ?Session $session = null; - - /** - * CSRF Hash in Request Cookie - * - * The cookie value is always CSRF hash (without randomization) even if - * $tokenRandomize is true. - */ - private ?string $hashInCookie = null; - - /** - * Security Config - */ - protected SecurityConfig $config; - - /** - * Constructor. - * - * Stores our configuration and fires off the init() method to setup - * initial state. - */ - public function __construct(SecurityConfig $config) - { - $this->config = $config; - - $this->rawCookieName = $config->cookieName; - - if ($this->isCSRFCookie()) { - $cookie = config(CookieConfig::class); - - $this->configureCookie($cookie); - } else { - // Session based CSRF protection - $this->configureSession(); - } - - $this->request = Services::request(); - $this->hashInCookie = $this->request->getCookie($this->cookieName); - - $this->restoreHash(); - if ($this->hash === null) { - $this->generateHash(); - } - } - - private function isCSRFCookie(): bool - { - return $this->config->csrfProtection === self::CSRF_PROTECTION_COOKIE; - } - - private function configureSession(): void - { - $this->session = Services::session(); - } - - private function configureCookie(CookieConfig $cookie): void - { - $cookiePrefix = $cookie->prefix; - $this->cookieName = $cookiePrefix . $this->rawCookieName; - Cookie::setDefaults($cookie); - } - - /** - * CSRF Verify - * - * @return $this|false - * - * @throws SecurityException - * - * @deprecated Use `CodeIgniter\Security\Security::verify()` instead of using this method. - * - * @codeCoverageIgnore - */ - public function CSRFVerify(RequestInterface $request) - { - return $this->verify($request); - } - - /** - * Returns the CSRF Token. - * - * @deprecated Use `CodeIgniter\Security\Security::getHash()` instead of using this method. - * - * @codeCoverageIgnore - */ - public function getCSRFHash(): ?string - { - return $this->getHash(); - } - - /** - * Returns the CSRF Token Name. - * - * @deprecated Use `CodeIgniter\Security\Security::getTokenName()` instead of using this method. - * - * @codeCoverageIgnore - */ - public function getCSRFTokenName(): string - { - return $this->getTokenName(); - } - - /** - * CSRF Verify - * - * @return $this - * - * @throws SecurityException - */ - public function verify(RequestInterface $request) - { - // Protects POST, PUT, DELETE, PATCH - $method = strtoupper($request->getMethod()); - $methodsToProtect = ['POST', 'PUT', 'DELETE', 'PATCH']; - if (! in_array($method, $methodsToProtect, true)) { - return $this; - } - - $postedToken = $this->getPostedToken($request); - - try { - $token = ($postedToken !== null && $this->config->tokenRandomize) - ? $this->derandomize($postedToken) : $postedToken; - } catch (InvalidArgumentException $e) { - $token = null; - } - - // Do the tokens match? - if (! isset($token, $this->hash) || ! hash_equals($this->hash, $token)) { - throw SecurityException::forDisallowedAction(); - } - - $this->removeTokenInRequest($request); - - if ($this->config->regenerate) { - $this->generateHash(); - } - - log_message('info', 'CSRF token verified.'); - - return $this; - } - - /** - * Remove token in POST or JSON request data - */ - private function removeTokenInRequest(RequestInterface $request): void - { - assert($request instanceof Request); - - if (isset($_POST[$this->config->tokenName])) { - // We kill this since we're done and we don't want to pollute the POST array. - unset($_POST[$this->config->tokenName]); - $request->setGlobal('post', $_POST); - } else { - $body = $request->getBody() ?? ''; - $json = json_decode($body); - if ($json !== null && json_last_error() === JSON_ERROR_NONE) { - // We kill this since we're done and we don't want to pollute the JSON data. - unset($json->{$this->config->tokenName}); - $request->setBody(json_encode($json)); - } else { - parse_str($body, $parsed); - // We kill this since we're done and we don't want to pollute the BODY data. - unset($parsed[$this->config->tokenName]); - $request->setBody(http_build_query($parsed)); - } - } - } - - private function getPostedToken(RequestInterface $request): ?string - { - assert($request instanceof IncomingRequest); - - // Does the token exist in POST, HEADER or optionally php:://input - json data or PUT, DELETE, PATCH - raw data. - - if ($tokenValue = $request->getPost($this->config->tokenName)) { - return $tokenValue; - } - - if ($request->hasHeader($this->config->headerName) - && $request->header($this->config->headerName)->getValue() !== '' - && $request->header($this->config->headerName)->getValue() !== []) { - return $request->header($this->config->headerName)->getValue(); - } - - $body = (string) $request->getBody(); - - if ($body !== '') { - $json = json_decode($body); - if ($json !== null && json_last_error() === JSON_ERROR_NONE) { - return $json->{$this->config->tokenName} ?? null; - } - - parse_str($body, $parsed); - - return $parsed[$this->config->tokenName] ?? null; - } - - return null; - } - - /** - * Returns the CSRF Token. - */ - public function getHash(): ?string - { - return $this->config->tokenRandomize ? $this->randomize($this->hash) : $this->hash; - } - - /** - * Randomize hash to avoid BREACH attacks. - * - * @params string $hash CSRF hash - * - * @return string CSRF token - */ - protected function randomize(string $hash): string - { - $keyBinary = random_bytes(static::CSRF_HASH_BYTES); - $hashBinary = hex2bin($hash); - - if ($hashBinary === false) { - throw new LogicException('$hash is invalid: ' . $hash); - } - - return bin2hex(($hashBinary ^ $keyBinary) . $keyBinary); - } - - /** - * Derandomize the token. - * - * @params string $token CSRF token - * - * @return string CSRF hash - * - * @throws InvalidArgumentException "hex2bin(): Hexadecimal input string must have an even length" - */ - protected function derandomize(string $token): string - { - $key = substr($token, -static::CSRF_HASH_BYTES * 2); - $value = substr($token, 0, static::CSRF_HASH_BYTES * 2); - - try { - return bin2hex(hex2bin($value) ^ hex2bin($key)); - } catch (ErrorException $e) { - // "hex2bin(): Hexadecimal input string must have an even length" - throw new InvalidArgumentException($e->getMessage()); - } - } - - /** - * Returns the CSRF Token Name. - */ - public function getTokenName(): string - { - return $this->config->tokenName; - } - - /** - * Returns the CSRF Header Name. - */ - public function getHeaderName(): string - { - return $this->config->headerName; - } - - /** - * Returns the CSRF Cookie Name. - */ - public function getCookieName(): string - { - return $this->config->cookieName; - } - - /** - * Check if CSRF cookie is expired. - * - * @deprecated - * - * @codeCoverageIgnore - */ - public function isExpired(): bool - { - return $this->cookie->isExpired(); - } - - /** - * Check if request should be redirect on failure. - */ - public function shouldRedirect(): bool - { - return $this->config->redirect; - } - - /** - * Sanitize Filename - * - * Tries to sanitize filenames in order to prevent directory traversal attempts - * and other security threats, which is particularly useful for files that - * were supplied via user input. - * - * If it is acceptable for the user input to include relative paths, - * e.g. file/in/some/approved/folder.txt, you can set the second optional - * parameter, $relative_path to TRUE. - * - * @param string $str Input file name - * @param bool $relativePath Whether to preserve paths - */ - public function sanitizeFilename(string $str, bool $relativePath = false): string - { - // List of sanitize filename strings - $bad = [ - '../', - '<!--', - '-->', - '<', - '>', - "'", - '"', - '&', - '$', - '#', - '{', - '}', - '[', - ']', - '=', - ';', - '?', - '%20', - '%22', - '%3c', - '%253c', - '%3e', - '%0e', - '%28', - '%29', - '%2528', - '%26', - '%24', - '%3f', - '%3b', - '%3d', - ]; - - if (! $relativePath) { - $bad[] = './'; - $bad[] = '/'; - } - - $str = remove_invisible_characters($str, false); - - do { - $old = $str; - $str = str_replace($bad, '', $str); - } while ($old !== $str); - - return stripslashes($str); - } - - /** - * Restore hash from Session or Cookie - */ - private function restoreHash(): void - { - if ($this->isCSRFCookie()) { - if ($this->isHashInCookie()) { - $this->hash = $this->hashInCookie; - } - } elseif ($this->session->has($this->config->tokenName)) { - // Session based CSRF protection - $this->hash = $this->session->get($this->config->tokenName); - } - } - - /** - * Generates (Regenerates) the CSRF Hash. - */ - public function generateHash(): string - { - $this->hash = bin2hex(random_bytes(static::CSRF_HASH_BYTES)); - - if ($this->isCSRFCookie()) { - $this->saveHashInCookie(); - } else { - // Session based CSRF protection - $this->saveHashInSession(); - } - - return $this->hash; - } - - private function isHashInCookie(): bool - { - if ($this->hashInCookie === null) { - return false; - } - - $length = static::CSRF_HASH_BYTES * 2; - $pattern = '#^[0-9a-f]{' . $length . '}$#iS'; - - return preg_match($pattern, $this->hashInCookie) === 1; - } - - private function saveHashInCookie(): void - { - $this->cookie = new Cookie( - $this->rawCookieName, - $this->hash, - [ - 'expires' => $this->config->expires === 0 ? 0 : Time::now()->getTimestamp() + $this->config->expires, - ] - ); - - $response = Services::response(); - $response->setCookie($this->cookie); - } - - /** - * CSRF Send Cookie - * - * @return false|Security - * - * @deprecated Set cookies to Response object instead. - */ - protected function sendCookie(RequestInterface $request) - { - assert($request instanceof IncomingRequest); - - if ($this->cookie->isSecure() && ! $request->isSecure()) { - return false; - } - - $this->doSendCookie(); - log_message('info', 'CSRF cookie sent.'); - - return $this; - } - - /** - * Actual dispatching of cookies. - * Extracted for this to be unit tested. - * - * @codeCoverageIgnore - * - * @deprecated Set cookies to Response object instead. - */ - protected function doSendCookie(): void - { - cookies([$this->cookie], false)->dispatch(); - } - - private function saveHashInSession(): void - { - $this->session->set($this->config->tokenName, $this->hash); - } -} diff --git a/system4.4.6/Security/SecurityInterface.php b/system4.4.6/Security/SecurityInterface.php deleted file mode 100644 index af731e82..00000000 --- a/system4.4.6/Security/SecurityInterface.php +++ /dev/null @@ -1,78 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Security; - -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\Security\Exceptions\SecurityException; - -/** - * Expected behavior of a Security. - */ -interface SecurityInterface -{ - /** - * CSRF Verify - * - * @return $this|false - * - * @throws SecurityException - */ - public function verify(RequestInterface $request); - - /** - * Returns the CSRF Hash. - */ - public function getHash(): ?string; - - /** - * Returns the CSRF Token Name. - */ - public function getTokenName(): string; - - /** - * Returns the CSRF Header Name. - */ - public function getHeaderName(): string; - - /** - * Returns the CSRF Cookie Name. - */ - public function getCookieName(): string; - - /** - * Check if CSRF cookie is expired. - * - * @deprecated - */ - public function isExpired(): bool; - - /** - * Check if request should be redirect on failure. - */ - public function shouldRedirect(): bool; - - /** - * Sanitize Filename - * - * Tries to sanitize filenames in order to prevent directory traversal attempts - * and other security threats, which is particularly useful for files that - * were supplied via user input. - * - * If it is acceptable for the user input to include relative paths, - * e.g. file/in/some/approved/folder.txt, you can set the second optional - * parameter, $relative_path to TRUE. - * - * @param string $str Input file name - * @param bool $relativePath Whether to preserve paths - */ - public function sanitizeFilename(string $str, bool $relativePath = false): string; -} diff --git a/system4.4.6/Session/Exceptions/SessionException.php b/system4.4.6/Session/Exceptions/SessionException.php deleted file mode 100644 index af619c2c..00000000 --- a/system4.4.6/Session/Exceptions/SessionException.php +++ /dev/null @@ -1,52 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Session\Exceptions; - -use CodeIgniter\Exceptions\FrameworkException; - -class SessionException extends FrameworkException -{ - public static function forMissingDatabaseTable() - { - return new static(lang('Session.missingDatabaseTable')); - } - - public static function forInvalidSavePath(?string $path = null) - { - return new static(lang('Session.invalidSavePath', [$path])); - } - - public static function forWriteProtectedSavePath(?string $path = null) - { - return new static(lang('Session.writeProtectedSavePath', [$path])); - } - - public static function forEmptySavepath() - { - return new static(lang('Session.emptySavePath')); - } - - public static function forInvalidSavePathFormat(string $path) - { - return new static(lang('Session.invalidSavePathFormat', [$path])); - } - - /** - * @deprecated - * - * @codeCoverageIgnore - */ - public static function forInvalidSameSiteSetting(string $samesite) - { - return new static(lang('Session.invalidSameSiteSetting', [$samesite])); - } -} diff --git a/system4.4.6/Session/Handlers/ArrayHandler.php b/system4.4.6/Session/Handlers/ArrayHandler.php deleted file mode 100644 index 31951a78..00000000 --- a/system4.4.6/Session/Handlers/ArrayHandler.php +++ /dev/null @@ -1,91 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Session\Handlers; - -use ReturnTypeWillChange; - -/** - * Session handler using static array for storage. - * Intended only for use during testing. - */ -class ArrayHandler extends BaseHandler -{ - protected static $cache = []; - - /** - * Re-initialize existing session, or creates a new one. - * - * @param string $path The path where to store/retrieve the session - * @param string $name The session name - */ - public function open($path, $name): bool - { - return true; - } - - /** - * Reads the session data from the session storage, and returns the results. - * - * @param string $id The session ID - * - * @return false|string Returns an encoded string of the read data. - * If nothing was read, it must return false. - */ - #[ReturnTypeWillChange] - public function read($id) - { - return ''; - } - - /** - * Writes the session data to the session storage. - * - * @param string $id The session ID - * @param string $data The encoded session data - */ - public function write($id, $data): bool - { - return true; - } - - /** - * Closes the current session. - */ - public function close(): bool - { - return true; - } - - /** - * Destroys a session - * - * @param string $id The session ID being destroyed - */ - public function destroy($id): bool - { - return true; - } - - /** - * Cleans up expired sessions. - * - * @param int $max_lifetime Sessions that have not updated - * for the last max_lifetime seconds will be removed. - * - * @return false|int Returns the number of deleted sessions on success, or false on failure. - */ - #[ReturnTypeWillChange] - public function gc($max_lifetime) - { - return 1; - } -} diff --git a/system4.4.6/Session/Handlers/BaseHandler.php b/system4.4.6/Session/Handlers/BaseHandler.php deleted file mode 100644 index 572ec907..00000000 --- a/system4.4.6/Session/Handlers/BaseHandler.php +++ /dev/null @@ -1,175 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Session\Handlers; - -use Config\Cookie as CookieConfig; -use Config\Session as SessionConfig; -use Psr\Log\LoggerAwareTrait; -use SessionHandlerInterface; - -/** - * Base class for session handling - */ -abstract class BaseHandler implements SessionHandlerInterface -{ - use LoggerAwareTrait; - - /** - * The Data fingerprint. - * - * @var string - */ - protected $fingerprint; - - /** - * Lock placeholder. - * - * @var bool|string - */ - protected $lock = false; - - /** - * Cookie prefix - * - * The Config\Cookie::$prefix setting is completely ignored. - * See https://codeigniter.com/user_guide/libraries/sessions.html#session-preferences - * - * @var string - */ - protected $cookiePrefix = ''; - - /** - * Cookie domain - * - * @var string - */ - protected $cookieDomain = ''; - - /** - * Cookie path - * - * @var string - */ - protected $cookiePath = '/'; - - /** - * Cookie secure? - * - * @var bool - */ - protected $cookieSecure = false; - - /** - * Cookie name to use - * - * @var string - */ - protected $cookieName; - - /** - * Match IP addresses for cookies? - * - * @var bool - */ - protected $matchIP = false; - - /** - * Current session ID - * - * @var string|null - */ - protected $sessionID; - - /** - * The 'save path' for the session - * varies between - * - * @var array|string - */ - protected $savePath; - - /** - * User's IP address. - * - * @var string - */ - protected $ipAddress; - - public function __construct(SessionConfig $config, string $ipAddress) - { - // Store Session configurations - $this->cookieName = $config->cookieName; - $this->matchIP = $config->matchIP; - $this->savePath = $config->savePath; - - $cookie = config(CookieConfig::class); - - // Session cookies have no prefix. - $this->cookieDomain = $cookie->domain; - $this->cookiePath = $cookie->path; - $this->cookieSecure = $cookie->secure; - - $this->ipAddress = $ipAddress; - } - - /** - * Internal method to force removal of a cookie by the client - * when session_destroy() is called. - */ - protected function destroyCookie(): bool - { - return setcookie( - $this->cookieName, - '', - ['expires' => 1, 'path' => $this->cookiePath, 'domain' => $this->cookieDomain, 'secure' => $this->cookieSecure, 'httponly' => true] - ); - } - - /** - * A dummy method allowing drivers with no locking functionality - * (databases other than PostgreSQL and MySQL) to act as if they - * do acquire a lock. - */ - protected function lockSession(string $sessionID): bool - { - $this->lock = true; - - return true; - } - - /** - * Releases the lock, if any. - */ - protected function releaseLock(): bool - { - $this->lock = false; - - return true; - } - - /** - * Drivers other than the 'files' one don't (need to) use the - * session.save_path INI setting, but that leads to confusing - * error messages emitted by PHP when open() or write() fail, - * as the message contains session.save_path ... - * - * To work around the problem, the drivers will call this method - * so that the INI is set just in time for the error message to - * be properly generated. - */ - protected function fail(): bool - { - ini_set('session.save_path', $this->savePath); - - return false; - } -} diff --git a/system4.4.6/Session/Handlers/Database/MySQLiHandler.php b/system4.4.6/Session/Handlers/Database/MySQLiHandler.php deleted file mode 100644 index 380041aa..00000000 --- a/system4.4.6/Session/Handlers/Database/MySQLiHandler.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Session\Handlers\Database; - -use CodeIgniter\Session\Handlers\DatabaseHandler; - -/** - * Session handler for MySQLi - * - * @see \CodeIgniter\Session\Handlers\Database\MySQLiHandlerTest - */ -class MySQLiHandler extends DatabaseHandler -{ - /** - * Lock the session. - */ - protected function lockSession(string $sessionID): bool - { - $arg = md5($sessionID . ($this->matchIP ? '_' . $this->ipAddress : '')); - if ($this->db->query("SELECT GET_LOCK('{$arg}', 300) AS ci_session_lock")->getRow()->ci_session_lock) { - $this->lock = $arg; - - return true; - } - - return $this->fail(); - } - - /** - * Releases the lock, if any. - */ - protected function releaseLock(): bool - { - if (! $this->lock) { - return true; - } - - if ($this->db->query("SELECT RELEASE_LOCK('{$this->lock}') AS ci_session_lock")->getRow()->ci_session_lock) { - $this->lock = false; - - return true; - } - - return $this->fail(); - } -} diff --git a/system4.4.6/Session/Handlers/Database/PostgreHandler.php b/system4.4.6/Session/Handlers/Database/PostgreHandler.php deleted file mode 100644 index 0c140fea..00000000 --- a/system4.4.6/Session/Handlers/Database/PostgreHandler.php +++ /dev/null @@ -1,102 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Session\Handlers\Database; - -use CodeIgniter\Database\BaseBuilder; -use CodeIgniter\Session\Handlers\DatabaseHandler; -use ReturnTypeWillChange; - -/** - * Session handler for Postgre - * - * @see \CodeIgniter\Session\Handlers\Database\PostgreHandlerTest - */ -class PostgreHandler extends DatabaseHandler -{ - /** - * Sets SELECT clause - */ - protected function setSelect(BaseBuilder $builder) - { - $builder->select("encode(data, 'base64') AS data"); - } - - /** - * Decodes column data - * - * @param string $data - * - * @return false|string - */ - protected function decodeData($data) - { - return base64_decode(rtrim($data), true); - } - - /** - * Prepare data to insert/update - */ - protected function prepareData(string $data): string - { - return '\x' . bin2hex($data); - } - - /** - * Cleans up expired sessions. - * - * @param int $max_lifetime Sessions that have not updated - * for the last max_lifetime seconds will be removed. - * - * @return false|int Returns the number of deleted sessions on success, or false on failure. - */ - #[ReturnTypeWillChange] - public function gc($max_lifetime) - { - $separator = '\''; - $interval = implode($separator, ['', "{$max_lifetime} second", '']); - - return $this->db->table($this->table)->where('timestamp <', "now() - INTERVAL {$interval}", false)->delete() ? 1 : $this->fail(); - } - - /** - * Lock the session. - */ - protected function lockSession(string $sessionID): bool - { - $arg = "hashtext('{$sessionID}')" . ($this->matchIP ? ", hashtext('{$this->ipAddress}')" : ''); - if ($this->db->simpleQuery("SELECT pg_advisory_lock({$arg})")) { - $this->lock = $arg; - - return true; - } - - return $this->fail(); - } - - /** - * Releases the lock, if any. - */ - protected function releaseLock(): bool - { - if (! $this->lock) { - return true; - } - - if ($this->db->simpleQuery("SELECT pg_advisory_unlock({$this->lock})")) { - $this->lock = false; - - return true; - } - - return $this->fail(); - } -} diff --git a/system4.4.6/Session/Handlers/DatabaseHandler.php b/system4.4.6/Session/Handlers/DatabaseHandler.php deleted file mode 100644 index edde55ca..00000000 --- a/system4.4.6/Session/Handlers/DatabaseHandler.php +++ /dev/null @@ -1,305 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Session\Handlers; - -use CodeIgniter\Database\BaseBuilder; -use CodeIgniter\Database\BaseConnection; -use CodeIgniter\Session\Exceptions\SessionException; -use Config\Database; -use Config\Session as SessionConfig; -use ReturnTypeWillChange; - -/** - * Base database session handler - * - * Do not use this class. Use database specific handler class. - */ -class DatabaseHandler extends BaseHandler -{ - /** - * The database group to use for storage. - * - * @var string - */ - protected $DBGroup; - - /** - * The name of the table to store session info. - * - * @var string - */ - protected $table; - - /** - * The DB Connection instance. - * - * @var BaseConnection - */ - protected $db; - - /** - * The database type - * - * @var string - */ - protected $platform; - - /** - * Row exists flag - * - * @var bool - */ - protected $rowExists = false; - - /** - * ID prefix for multiple session cookies - */ - protected string $idPrefix; - - /** - * @throws SessionException - */ - public function __construct(SessionConfig $config, string $ipAddress) - { - parent::__construct($config, $ipAddress); - - // Store Session configurations - $this->DBGroup = $config->DBGroup ?? config(Database::class)->defaultGroup; - // Add sessionCookieName for multiple session cookies. - $this->idPrefix = $config->cookieName . ':'; - - $this->table = $this->savePath; - if (empty($this->table)) { - throw SessionException::forMissingDatabaseTable(); - } - - $this->db = Database::connect($this->DBGroup); - $this->platform = $this->db->getPlatform(); - } - - /** - * Re-initialize existing session, or creates a new one. - * - * @param string $path The path where to store/retrieve the session - * @param string $name The session name - */ - public function open($path, $name): bool - { - if (empty($this->db->connID)) { - $this->db->initialize(); - } - - return true; - } - - /** - * Reads the session data from the session storage, and returns the results. - * - * @param string $id The session ID - * - * @return false|string Returns an encoded string of the read data. - * If nothing was read, it must return false. - */ - #[ReturnTypeWillChange] - public function read($id) - { - if ($this->lockSession($id) === false) { - $this->fingerprint = md5(''); - - return ''; - } - - if (! isset($this->sessionID)) { - $this->sessionID = $id; - } - - $builder = $this->db->table($this->table)->where('id', $this->idPrefix . $id); - - if ($this->matchIP) { - $builder = $builder->where('ip_address', $this->ipAddress); - } - - $this->setSelect($builder); - - $result = $builder->get()->getRow(); - - if ($result === null) { - // PHP7 will reuse the same SessionHandler object after - // ID regeneration, so we need to explicitly set this to - // FALSE instead of relying on the default ... - $this->rowExists = false; - $this->fingerprint = md5(''); - - return ''; - } - - $result = is_bool($result) ? '' : $this->decodeData($result->data); - - $this->fingerprint = md5($result); - $this->rowExists = true; - - return $result; - } - - /** - * Sets SELECT clause - */ - protected function setSelect(BaseBuilder $builder) - { - $builder->select('data'); - } - - /** - * Decodes column data - * - * @param string $data - * - * @return false|string - */ - protected function decodeData($data) - { - return $data; - } - - /** - * Writes the session data to the session storage. - * - * @param string $id The session ID - * @param string $data The encoded session data - */ - public function write($id, $data): bool - { - if ($this->lock === false) { - return $this->fail(); - } - - if ($this->sessionID !== $id) { - $this->rowExists = false; - $this->sessionID = $id; - } - - if ($this->rowExists === false) { - $insertData = [ - 'id' => $this->idPrefix . $id, - 'ip_address' => $this->ipAddress, - 'data' => $this->prepareData($data), - ]; - - if (! $this->db->table($this->table)->set('timestamp', 'now()', false)->insert($insertData)) { - return $this->fail(); - } - - $this->fingerprint = md5($data); - $this->rowExists = true; - - return true; - } - - $builder = $this->db->table($this->table)->where('id', $this->idPrefix . $id); - - if ($this->matchIP) { - $builder = $builder->where('ip_address', $this->ipAddress); - } - - $updateData = []; - - if ($this->fingerprint !== md5($data)) { - $updateData['data'] = $this->prepareData($data); - } - - if (! $builder->set('timestamp', 'now()', false)->update($updateData)) { - return $this->fail(); - } - - $this->fingerprint = md5($data); - - return true; - } - - /** - * Prepare data to insert/update - */ - protected function prepareData(string $data): string - { - return $data; - } - - /** - * Closes the current session. - */ - public function close(): bool - { - return ($this->lock && ! $this->releaseLock()) ? $this->fail() : true; - } - - /** - * Destroys a session - * - * @param string $id The session ID being destroyed - */ - public function destroy($id): bool - { - if ($this->lock) { - $builder = $this->db->table($this->table)->where('id', $this->idPrefix . $id); - - if ($this->matchIP) { - $builder = $builder->where('ip_address', $this->ipAddress); - } - - if (! $builder->delete()) { - return $this->fail(); - } - } - - if ($this->close()) { - $this->destroyCookie(); - - return true; - } - - return $this->fail(); - } - - /** - * Cleans up expired sessions. - * - * @param int $max_lifetime Sessions that have not updated - * for the last max_lifetime seconds will be removed. - * - * @return false|int Returns the number of deleted sessions on success, or false on failure. - */ - #[ReturnTypeWillChange] - public function gc($max_lifetime) - { - $separator = ' '; - $interval = implode($separator, ['', "{$max_lifetime} second", '']); - - return $this->db->table($this->table)->where( - 'timestamp <', - "now() - INTERVAL {$interval}", - false - )->delete() ? 1 : $this->fail(); - } - - /** - * Releases the lock, if any. - */ - protected function releaseLock(): bool - { - if (! $this->lock) { - return true; - } - - // Unsupported DB? Let the parent handle the simple version. - return parent::releaseLock(); - } -} diff --git a/system4.4.6/Session/Handlers/FileHandler.php b/system4.4.6/Session/Handlers/FileHandler.php deleted file mode 100644 index 9eb64240..00000000 --- a/system4.4.6/Session/Handlers/FileHandler.php +++ /dev/null @@ -1,338 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Session\Handlers; - -use CodeIgniter\I18n\Time; -use CodeIgniter\Session\Exceptions\SessionException; -use Config\Session as SessionConfig; -use ReturnTypeWillChange; - -/** - * Session handler using file system for storage - */ -class FileHandler extends BaseHandler -{ - /** - * Where to save the session files to. - * - * @var string - */ - protected $savePath; - - /** - * The file handle - * - * @var resource|null - */ - protected $fileHandle; - - /** - * File Name - * - * @var string - */ - protected $filePath; - - /** - * Whether this is a new file. - * - * @var bool - */ - protected $fileNew; - - /** - * Whether IP addresses should be matched. - * - * @var bool - */ - protected $matchIP = false; - - /** - * Regex of session ID - * - * @var string - */ - protected $sessionIDRegex = ''; - - public function __construct(SessionConfig $config, string $ipAddress) - { - parent::__construct($config, $ipAddress); - - if (! empty($this->savePath)) { - $this->savePath = rtrim($this->savePath, '/\\'); - ini_set('session.save_path', $this->savePath); - } else { - $sessionPath = rtrim(ini_get('session.save_path'), '/\\'); - - if (! $sessionPath) { - $sessionPath = WRITEPATH . 'session'; - } - - $this->savePath = $sessionPath; - } - - $this->configureSessionIDRegex(); - } - - /** - * Re-initialize existing session, or creates a new one. - * - * @param string $path The path where to store/retrieve the session - * @param string $name The session name - * - * @throws SessionException - */ - public function open($path, $name): bool - { - if (! is_dir($path) && ! mkdir($path, 0700, true)) { - throw SessionException::forInvalidSavePath($this->savePath); - } - - if (! is_writable($path)) { - throw SessionException::forWriteProtectedSavePath($this->savePath); - } - - $this->savePath = $path; - - // we'll use the session name as prefix to avoid collisions - $this->filePath = $this->savePath . '/' . $name . ($this->matchIP ? md5($this->ipAddress) : ''); - - return true; - } - - /** - * Reads the session data from the session storage, and returns the results. - * - * @param string $id The session ID - * - * @return false|string Returns an encoded string of the read data. - * If nothing was read, it must return false. - */ - #[ReturnTypeWillChange] - public function read($id) - { - // This might seem weird, but PHP 5.6 introduced session_reset(), - // which re-reads session data - if ($this->fileHandle === null) { - $this->fileNew = ! is_file($this->filePath . $id); - - if (($this->fileHandle = fopen($this->filePath . $id, 'c+b')) === false) { - $this->logger->error("Session: Unable to open file '" . $this->filePath . $id . "'."); - - return false; - } - - if (flock($this->fileHandle, LOCK_EX) === false) { - $this->logger->error("Session: Unable to obtain lock for file '" . $this->filePath . $id . "'."); - fclose($this->fileHandle); - $this->fileHandle = null; - - return false; - } - - if (! isset($this->sessionID)) { - $this->sessionID = $id; - } - - if ($this->fileNew) { - chmod($this->filePath . $id, 0600); - $this->fingerprint = md5(''); - - return ''; - } - } else { - rewind($this->fileHandle); - } - - $data = ''; - $buffer = 0; - clearstatcache(); // Address https://github.com/codeigniter4/CodeIgniter4/issues/2056 - - for ($read = 0, $length = filesize($this->filePath . $id); $read < $length; $read += strlen($buffer)) { - if (($buffer = fread($this->fileHandle, $length - $read)) === false) { - break; - } - - $data .= $buffer; - } - - $this->fingerprint = md5($data); - - return $data; - } - - /** - * Writes the session data to the session storage. - * - * @param string $id The session ID - * @param string $data The encoded session data - */ - public function write($id, $data): bool - { - // If the two IDs don't match, we have a session_regenerate_id() call - if ($id !== $this->sessionID) { - $this->sessionID = $id; - } - - if (! is_resource($this->fileHandle)) { - return false; - } - - if ($this->fingerprint === md5($data)) { - return ($this->fileNew) ? true : touch($this->filePath . $id); - } - - if (! $this->fileNew) { - ftruncate($this->fileHandle, 0); - rewind($this->fileHandle); - } - - if (($length = strlen($data)) > 0) { - $result = null; - - for ($written = 0; $written < $length; $written += $result) { - if (($result = fwrite($this->fileHandle, substr($data, $written))) === false) { - break; - } - } - - if (! is_int($result)) { - $this->fingerprint = md5(substr($data, 0, $written)); - $this->logger->error('Session: Unable to write data.'); - - return false; - } - } - - $this->fingerprint = md5($data); - - return true; - } - - /** - * Closes the current session. - */ - public function close(): bool - { - if (is_resource($this->fileHandle)) { - flock($this->fileHandle, LOCK_UN); - fclose($this->fileHandle); - - $this->fileHandle = null; - $this->fileNew = false; - } - - return true; - } - - /** - * Destroys a session - * - * @param string $id The session ID being destroyed - */ - public function destroy($id): bool - { - if ($this->close()) { - return is_file($this->filePath . $id) - ? (unlink($this->filePath . $id) && $this->destroyCookie()) - : true; - } - - if ($this->filePath !== null) { - clearstatcache(); - - return is_file($this->filePath . $id) - ? (unlink($this->filePath . $id) && $this->destroyCookie()) - : true; - } - - return false; - } - - /** - * Cleans up expired sessions. - * - * @param int $max_lifetime Sessions that have not updated - * for the last max_lifetime seconds will be removed. - * - * @return false|int Returns the number of deleted sessions on success, or false on failure. - */ - #[ReturnTypeWillChange] - public function gc($max_lifetime) - { - if (! is_dir($this->savePath) || ($directory = opendir($this->savePath)) === false) { - $this->logger->debug("Session: Garbage collector couldn't list files under directory '" . $this->savePath . "'."); - - return false; - } - - $ts = Time::now()->getTimestamp() - $max_lifetime; - - $pattern = $this->matchIP === true ? '[0-9a-f]{32}' : ''; - - $pattern = sprintf( - '#\A%s' . $pattern . $this->sessionIDRegex . '\z#', - preg_quote($this->cookieName, '#') - ); - - $collected = 0; - - while (($file = readdir($directory)) !== false) { - // If the filename doesn't match this pattern, it's either not a session file or is not ours - if (! preg_match($pattern, $file) - || ! is_file($this->savePath . DIRECTORY_SEPARATOR . $file) - || ($mtime = filemtime($this->savePath . DIRECTORY_SEPARATOR . $file)) === false - || $mtime > $ts - ) { - continue; - } - - unlink($this->savePath . DIRECTORY_SEPARATOR . $file); - $collected++; - } - - closedir($directory); - - return $collected; - } - - /** - * Configure Session ID regular expression - */ - protected function configureSessionIDRegex() - { - $bitsPerCharacter = (int) ini_get('session.sid_bits_per_character'); - $SIDLength = (int) ini_get('session.sid_length'); - - if (($bits = $SIDLength * $bitsPerCharacter) < 160) { - // Add as many more characters as necessary to reach at least 160 bits - $SIDLength += (int) ceil((160 % $bits) / $bitsPerCharacter); - ini_set('session.sid_length', (string) $SIDLength); - } - - switch ($bitsPerCharacter) { - case 4: - $this->sessionIDRegex = '[0-9a-f]'; - break; - - case 5: - $this->sessionIDRegex = '[0-9a-v]'; - break; - - case 6: - $this->sessionIDRegex = '[0-9a-zA-Z,-]'; - break; - } - - $this->sessionIDRegex .= '{' . $SIDLength . '}'; - } -} diff --git a/system4.4.6/Session/Handlers/MemcachedHandler.php b/system4.4.6/Session/Handlers/MemcachedHandler.php deleted file mode 100644 index aa0c1cd3..00000000 --- a/system4.4.6/Session/Handlers/MemcachedHandler.php +++ /dev/null @@ -1,322 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Session\Handlers; - -use CodeIgniter\I18n\Time; -use CodeIgniter\Session\Exceptions\SessionException; -use Config\Session as SessionConfig; -use Memcached; -use ReturnTypeWillChange; - -/** - * Session handler using Memcache for persistence - */ -class MemcachedHandler extends BaseHandler -{ - /** - * Memcached instance - * - * @var Memcached|null - */ - protected $memcached; - - /** - * Key prefix - * - * @var string - */ - protected $keyPrefix = 'ci_session:'; - - /** - * Lock key - * - * @var string|null - */ - protected $lockKey; - - /** - * Number of seconds until the session ends. - * - * @var int - */ - protected $sessionExpiration = 7200; - - /** - * @throws SessionException - */ - public function __construct(SessionConfig $config, string $ipAddress) - { - parent::__construct($config, $ipAddress); - - $this->sessionExpiration = $config->expiration; - - if (empty($this->savePath)) { - throw SessionException::forEmptySavepath(); - } - - // Add sessionCookieName for multiple session cookies. - $this->keyPrefix .= $config->cookieName . ':'; - - if ($this->matchIP === true) { - $this->keyPrefix .= $this->ipAddress . ':'; - } - - ini_set('memcached.sess_prefix', $this->keyPrefix); - } - - /** - * Re-initialize existing session, or creates a new one. - * - * @param string $path The path where to store/retrieve the session - * @param string $name The session name - */ - public function open($path, $name): bool - { - $this->memcached = new Memcached(); - $this->memcached->setOption(Memcached::OPT_BINARY_PROTOCOL, true); // required for touch() usage - - $serverList = []; - - foreach ($this->memcached->getServerList() as $server) { - $serverList[] = $server['host'] . ':' . $server['port']; - } - - if ( - ! preg_match_all( - '#,?([^,:]+)\:(\d{1,5})(?:\:(\d+))?#', - $this->savePath, - $matches, - PREG_SET_ORDER - ) - ) { - $this->memcached = null; - $this->logger->error('Session: Invalid Memcached save path format: ' . $this->savePath); - - return false; - } - - foreach ($matches as $match) { - // If Memcached already has this server (or if the port is invalid), skip it - if (in_array($match[1] . ':' . $match[2], $serverList, true)) { - $this->logger->debug( - 'Session: Memcached server pool already has ' . $match[1] . ':' . $match[2] - ); - - continue; - } - - if (! $this->memcached->addServer($match[1], (int) $match[2], $match[3] ?? 0)) { - $this->logger->error( - 'Could not add ' . $match[1] . ':' . $match[2] . ' to Memcached server pool.' - ); - } else { - $serverList[] = $match[1] . ':' . $match[2]; - } - } - - if ($serverList === []) { - $this->logger->error('Session: Memcached server pool is empty.'); - - return false; - } - - return true; - } - - /** - * Reads the session data from the session storage, and returns the results. - * - * @param string $id The session ID - * - * @return false|string Returns an encoded string of the read data. - * If nothing was read, it must return false. - */ - #[ReturnTypeWillChange] - public function read($id) - { - if (isset($this->memcached) && $this->lockSession($id)) { - if (! isset($this->sessionID)) { - $this->sessionID = $id; - } - - $data = (string) $this->memcached->get($this->keyPrefix . $id); - - $this->fingerprint = md5($data); - - return $data; - } - - return ''; - } - - /** - * Writes the session data to the session storage. - * - * @param string $id The session ID - * @param string $data The encoded session data - */ - public function write($id, $data): bool - { - if (! isset($this->memcached)) { - return false; - } - - if ($this->sessionID !== $id) { - if (! $this->releaseLock() || ! $this->lockSession($id)) { - return false; - } - - $this->fingerprint = md5(''); - $this->sessionID = $id; - } - - if (isset($this->lockKey)) { - $this->memcached->replace($this->lockKey, Time::now()->getTimestamp(), 300); - - if ($this->fingerprint !== ($fingerprint = md5($data))) { - if ($this->memcached->set($this->keyPrefix . $id, $data, $this->sessionExpiration)) { - $this->fingerprint = $fingerprint; - - return true; - } - - return false; - } - - return $this->memcached->touch($this->keyPrefix . $id, $this->sessionExpiration); - } - - return false; - } - - /** - * Closes the current session. - */ - public function close(): bool - { - if (isset($this->memcached)) { - if (isset($this->lockKey)) { - $this->memcached->delete($this->lockKey); - } - - if (! $this->memcached->quit()) { - return false; - } - - $this->memcached = null; - - return true; - } - - return false; - } - - /** - * Destroys a session - * - * @param string $id The session ID being destroyed - */ - public function destroy($id): bool - { - if (isset($this->memcached, $this->lockKey)) { - $this->memcached->delete($this->keyPrefix . $id); - - return $this->destroyCookie(); - } - - return false; - } - - /** - * Cleans up expired sessions. - * - * @param int $max_lifetime Sessions that have not updated - * for the last max_lifetime seconds will be removed. - * - * @return false|int Returns the number of deleted sessions on success, or false on failure. - */ - #[ReturnTypeWillChange] - public function gc($max_lifetime) - { - return 1; - } - - /** - * Acquires an emulated lock. - * - * @param string $sessionID Session ID - */ - protected function lockSession(string $sessionID): bool - { - if (isset($this->lockKey)) { - return $this->memcached->replace($this->lockKey, Time::now()->getTimestamp(), 300); - } - - $lockKey = $this->keyPrefix . $sessionID . ':lock'; - $attempt = 0; - - do { - if ($this->memcached->get($lockKey)) { - sleep(1); - - continue; - } - - if (! $this->memcached->set($lockKey, Time::now()->getTimestamp(), 300)) { - $this->logger->error( - 'Session: Error while trying to obtain lock for ' . $this->keyPrefix . $sessionID - ); - - return false; - } - - $this->lockKey = $lockKey; - break; - } while (++$attempt < 30); - - if ($attempt === 30) { - $this->logger->error( - 'Session: Unable to obtain lock for ' . $this->keyPrefix . $sessionID . ' after 30 attempts, aborting.' - ); - - return false; - } - - $this->lock = true; - - return true; - } - - /** - * Releases a previously acquired lock - */ - protected function releaseLock(): bool - { - if (isset($this->memcached, $this->lockKey) && $this->lock) { - if ( - ! $this->memcached->delete($this->lockKey) - && $this->memcached->getResultCode() !== Memcached::RES_NOTFOUND - ) { - $this->logger->error( - 'Session: Error while trying to free lock for ' . $this->lockKey - ); - - return false; - } - - $this->lockKey = null; - $this->lock = false; - } - - return true; - } -} diff --git a/system4.4.6/Session/Handlers/RedisHandler.php b/system4.4.6/Session/Handlers/RedisHandler.php deleted file mode 100644 index 5a81e6a4..00000000 --- a/system4.4.6/Session/Handlers/RedisHandler.php +++ /dev/null @@ -1,369 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Session\Handlers; - -use CodeIgniter\I18n\Time; -use CodeIgniter\Session\Exceptions\SessionException; -use Config\Session as SessionConfig; -use Redis; -use RedisException; -use ReturnTypeWillChange; - -/** - * Session handler using Redis for persistence - */ -class RedisHandler extends BaseHandler -{ - private const DEFAULT_PORT = 6379; - private const DEFAULT_PROTOCOL = 'tcp'; - - /** - * phpRedis instance - * - * @var Redis|null - */ - protected $redis; - - /** - * Key prefix - * - * @var string - */ - protected $keyPrefix = 'ci_session:'; - - /** - * Lock key - * - * @var string|null - */ - protected $lockKey; - - /** - * Key exists flag - * - * @var bool - */ - protected $keyExists = false; - - /** - * Number of seconds until the session ends. - * - * @var int - */ - protected $sessionExpiration = 7200; - - /** - * @param string $ipAddress User's IP address - * - * @throws SessionException - */ - public function __construct(SessionConfig $config, string $ipAddress) - { - parent::__construct($config, $ipAddress); - - // Store Session configurations - $this->sessionExpiration = ($config->expiration === 0) - ? (int) ini_get('session.gc_maxlifetime') - : $config->expiration; - // Add sessionCookieName for multiple session cookies. - $this->keyPrefix .= $config->cookieName . ':'; - - $this->setSavePath(); - - if ($this->matchIP === true) { - $this->keyPrefix .= $this->ipAddress . ':'; - } - } - - protected function setSavePath(): void - { - if (empty($this->savePath)) { - throw SessionException::forEmptySavepath(); - } - - if (preg_match('#(?:(tcp|tls)://)?([^:?]+)(?:\:(\d+))?(\?.+)?#', $this->savePath, $matches)) { - if (! isset($matches[4])) { - $matches[4] = ''; // Just to avoid undefined index notices below - } - - $this->savePath = [ - 'protocol' => ! empty($matches[1]) ? $matches[1] : self::DEFAULT_PROTOCOL, - 'host' => $matches[2], - 'port' => empty($matches[3]) ? self::DEFAULT_PORT : $matches[3], - 'password' => preg_match('#auth=([^\s&]+)#', $matches[4], $match) ? $match[1] : null, - 'database' => preg_match('#database=(\d+)#', $matches[4], $match) ? (int) $match[1] : 0, - 'timeout' => preg_match('#timeout=(\d+\.\d+|\d+)#', $matches[4], $match) ? (float) $match[1] : 0.0, - ]; - - preg_match('#prefix=([^\s&]+)#', $matches[4], $match) && $this->keyPrefix = $match[1]; - } else { - throw SessionException::forInvalidSavePathFormat($this->savePath); - } - } - - /** - * Re-initialize existing session, or creates a new one. - * - * @param string $path The path where to store/retrieve the session - * @param string $name The session name - * - * @throws RedisException - */ - public function open($path, $name): bool - { - if (empty($this->savePath)) { - return false; - } - - $redis = new Redis(); - - if ( - ! $redis->connect( - $this->savePath['protocol'] . '://' . $this->savePath['host'], - ($this->savePath['host'][0] === '/' ? 0 : $this->savePath['port']), - $this->savePath['timeout'] - ) - ) { - $this->logger->error('Session: Unable to connect to Redis with the configured settings.'); - } elseif (isset($this->savePath['password']) && ! $redis->auth($this->savePath['password'])) { - $this->logger->error('Session: Unable to authenticate to Redis instance.'); - } elseif (isset($this->savePath['database']) && ! $redis->select($this->savePath['database'])) { - $this->logger->error( - 'Session: Unable to select Redis database with index ' . $this->savePath['database'] - ); - } else { - $this->redis = $redis; - - return true; - } - - return false; - } - - /** - * Reads the session data from the session storage, and returns the results. - * - * @param string $id The session ID - * - * @return false|string Returns an encoded string of the read data. - * If nothing was read, it must return false. - * - * @throws RedisException - */ - #[ReturnTypeWillChange] - public function read($id) - { - if (isset($this->redis) && $this->lockSession($id)) { - if (! isset($this->sessionID)) { - $this->sessionID = $id; - } - - $data = $this->redis->get($this->keyPrefix . $id); - - if (is_string($data)) { - $this->keyExists = true; - } else { - $data = ''; - } - - $this->fingerprint = md5($data); - - return $data; - } - - return false; - } - - /** - * Writes the session data to the session storage. - * - * @param string $id The session ID - * @param string $data The encoded session data - * - * @throws RedisException - */ - public function write($id, $data): bool - { - if (! isset($this->redis)) { - return false; - } - - if ($this->sessionID !== $id) { - if (! $this->releaseLock() || ! $this->lockSession($id)) { - return false; - } - - $this->keyExists = false; - $this->sessionID = $id; - } - - if (isset($this->lockKey)) { - $this->redis->expire($this->lockKey, 300); - - if ($this->fingerprint !== ($fingerprint = md5($data)) || $this->keyExists === false) { - if ($this->redis->set($this->keyPrefix . $id, $data, $this->sessionExpiration)) { - $this->fingerprint = $fingerprint; - $this->keyExists = true; - - return true; - } - - return false; - } - - return $this->redis->expire($this->keyPrefix . $id, $this->sessionExpiration); - } - - return false; - } - - /** - * Closes the current session. - */ - public function close(): bool - { - if (isset($this->redis)) { - try { - $pingReply = $this->redis->ping(); - - if (($pingReply === true) || ($pingReply === '+PONG')) { - if (isset($this->lockKey) && ! $this->releaseLock()) { - return false; - } - - if (! $this->redis->close()) { - return false; - } - } - } catch (RedisException $e) { - $this->logger->error('Session: Got RedisException on close(): ' . $e->getMessage()); - } - - $this->redis = null; - - return true; - } - - return true; - } - - /** - * Destroys a session - * - * @param string $id The session ID being destroyed - * - * @throws RedisException - */ - public function destroy($id): bool - { - if (isset($this->redis, $this->lockKey)) { - if (($result = $this->redis->del($this->keyPrefix . $id)) !== 1) { - $this->logger->debug( - 'Session: Redis::del() expected to return 1, got ' . var_export($result, true) . ' instead.' - ); - } - - return $this->destroyCookie(); - } - - return false; - } - - /** - * Cleans up expired sessions. - * - * @param int $max_lifetime Sessions that have not updated - * for the last max_lifetime seconds will be removed. - * - * @return false|int Returns the number of deleted sessions on success, or false on failure. - */ - #[ReturnTypeWillChange] - public function gc($max_lifetime) - { - return 1; - } - - /** - * Acquires an emulated lock. - * - * @param string $sessionID Session ID - * - * @throws RedisException - */ - protected function lockSession(string $sessionID): bool - { - $lockKey = $this->keyPrefix . $sessionID . ':lock'; - - // PHP 7 reuses the SessionHandler object on regeneration, - // so we need to check here if the lock key is for the - // correct session ID. - if ($this->lockKey === $lockKey) { - // If there is the lock, make the ttl longer. - return $this->redis->expire($this->lockKey, 300); - } - - $attempt = 0; - - do { - $result = $this->redis->set( - $lockKey, - (string) Time::now()->getTimestamp(), - // NX -- Only set the key if it does not already exist. - // EX seconds -- Set the specified expire time, in seconds. - ['nx', 'ex' => 300] - ); - - if (! $result) { - usleep(100000); - - continue; - } - - $this->lockKey = $lockKey; - break; - } while (++$attempt < 300); - - if ($attempt === 300) { - $this->logger->error( - 'Session: Unable to obtain lock for ' . $this->keyPrefix . $sessionID - . ' after 300 attempts, aborting.' - ); - - return false; - } - - $this->lock = true; - - return true; - } - - /** - * Releases a previously acquired lock - * - * @throws RedisException - */ - protected function releaseLock(): bool - { - if (isset($this->redis, $this->lockKey) && $this->lock) { - if (! $this->redis->del($this->lockKey)) { - $this->logger->error('Session: Error while trying to free lock for ' . $this->lockKey); - - return false; - } - - $this->lockKey = null; - $this->lock = false; - } - - return true; - } -} diff --git a/system4.4.6/Session/Session.php b/system4.4.6/Session/Session.php deleted file mode 100644 index 875387f2..00000000 --- a/system4.4.6/Session/Session.php +++ /dev/null @@ -1,935 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Session; - -use CodeIgniter\Cookie\Cookie; -use CodeIgniter\I18n\Time; -use Config\Cookie as CookieConfig; -use Config\Services; -use Config\Session as SessionConfig; -use Psr\Log\LoggerAwareTrait; -use SessionHandlerInterface; - -/** - * Implementation of CodeIgniter session container. - * - * Session configuration is done through session variables and cookie related - * variables in app/config/App.php - * - * @property string $session_id - * @see \CodeIgniter\Session\SessionTest - */ -class Session implements SessionInterface -{ - use LoggerAwareTrait; - - /** - * Instance of the driver to use. - * - * @var SessionHandlerInterface - */ - protected $driver; - - /** - * The storage driver to use: files, database, redis, memcached - * - * @var string - * - * @deprecated Use $this->config->driver. - */ - protected $sessionDriverName; - - /** - * The session cookie name, must contain only [0-9a-z_-] characters. - * - * @var string - * - * @deprecated Use $this->config->cookieName. - */ - protected $sessionCookieName = 'ci_session'; - - /** - * The number of SECONDS you want the session to last. - * Setting it to 0 (zero) means expire when the browser is closed. - * - * @var int - * - * @deprecated Use $this->config->expiration. - */ - protected $sessionExpiration = 7200; - - /** - * The location to save sessions to, driver dependent. - * - * For the 'files' driver, it's a path to a writable directory. - * WARNING: Only absolute paths are supported! - * - * For the 'database' driver, it's a table name. - * - * @todo address memcache & redis needs - * - * IMPORTANT: You are REQUIRED to set a valid save path! - * - * @var string - * - * @deprecated Use $this->config->savePath. - */ - protected $sessionSavePath; - - /** - * Whether to match the user's IP address when reading the session data. - * - * WARNING: If you're using the database driver, don't forget to update - * your session table's PRIMARY KEY when changing this setting. - * - * @var bool - * - * @deprecated Use $this->config->matchIP. - */ - protected $sessionMatchIP = false; - - /** - * How many seconds between CI regenerating the session ID. - * - * @var int - * - * @deprecated Use $this->config->timeToUpdate. - */ - protected $sessionTimeToUpdate = 300; - - /** - * Whether to destroy session data associated with the old session ID - * when auto-regenerating the session ID. When set to FALSE, the data - * will be later deleted by the garbage collector. - * - * @var bool - * - * @deprecated Use $this->config->regenerateDestroy. - */ - protected $sessionRegenerateDestroy = false; - - /** - * The session cookie instance. - * - * @var Cookie - */ - protected $cookie; - - /** - * The domain name to use for cookies. - * Set to .your-domain.com for site-wide cookies. - * - * @var string - * - * @deprecated No longer used. - */ - protected $cookieDomain = ''; - - /** - * Path used for storing cookies. - * Typically will be a forward slash. - * - * @var string - * - * @deprecated No longer used. - */ - protected $cookiePath = '/'; - - /** - * Cookie will only be set if a secure HTTPS connection exists. - * - * @var bool - * - * @deprecated No longer used. - */ - protected $cookieSecure = false; - - /** - * Cookie SameSite setting as described in RFC6265 - * Must be 'None', 'Lax' or 'Strict'. - * - * @var string - * - * @deprecated No longer used. - */ - protected $cookieSameSite = Cookie::SAMESITE_LAX; - - /** - * sid regex expression - * - * @var string - */ - protected $sidRegexp; - - /** - * Session Config - */ - protected SessionConfig $config; - - /** - * Constructor. - * - * Extract configuration settings and save them here. - */ - public function __construct(SessionHandlerInterface $driver, SessionConfig $config) - { - $this->driver = $driver; - - $this->config = $config; - - $cookie = config(CookieConfig::class); - - $this->cookie = (new Cookie($this->config->cookieName, '', [ - 'expires' => $this->config->expiration === 0 ? 0 : Time::now()->getTimestamp() + $this->config->expiration, - 'path' => $cookie->path, - 'domain' => $cookie->domain, - 'secure' => $cookie->secure, - 'httponly' => true, // for security - 'samesite' => $cookie->samesite ?? Cookie::SAMESITE_LAX, - 'raw' => $cookie->raw ?? false, - ]))->withPrefix(''); // Cookie prefix should be ignored. - - helper('array'); - } - - /** - * Initialize the session container and starts up the session. - * - * @return $this|void - */ - public function start() - { - if (is_cli() && ENVIRONMENT !== 'testing') { - // @codeCoverageIgnoreStart - $this->logger->debug('Session: Initialization under CLI aborted.'); - - return; - // @codeCoverageIgnoreEnd - } - - if ((bool) ini_get('session.auto_start')) { - $this->logger->error('Session: session.auto_start is enabled in php.ini. Aborting.'); - - return; - } - - if (session_status() === PHP_SESSION_ACTIVE) { - $this->logger->warning('Session: Sessions is enabled, and one exists. Please don\'t $session->start();'); - - return; - } - - $this->configure(); - $this->setSaveHandler(); - - // Sanitize the cookie, because apparently PHP doesn't do that for userspace handlers - if (isset($_COOKIE[$this->config->cookieName]) - && (! is_string($_COOKIE[$this->config->cookieName]) || ! preg_match('#\A' . $this->sidRegexp . '\z#', $_COOKIE[$this->config->cookieName])) - ) { - unset($_COOKIE[$this->config->cookieName]); - } - - $this->startSession(); - - // Is session ID auto-regeneration configured? (ignoring ajax requests) - if ((! isset($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !== 'xmlhttprequest') - && ($regenerateTime = $this->config->timeToUpdate) > 0 - ) { - if (! isset($_SESSION['__ci_last_regenerate'])) { - $_SESSION['__ci_last_regenerate'] = Time::now()->getTimestamp(); - } elseif ($_SESSION['__ci_last_regenerate'] < (Time::now()->getTimestamp() - $regenerateTime)) { - $this->regenerate((bool) $this->config->regenerateDestroy); - } - } - // Another work-around ... PHP doesn't seem to send the session cookie - // unless it is being currently created or regenerated - elseif (isset($_COOKIE[$this->config->cookieName]) && $_COOKIE[$this->config->cookieName] === session_id()) { - $this->setCookie(); - } - - $this->initVars(); - $this->logger->info("Session: Class initialized using '" . $this->config->driver . "' driver."); - - return $this; - } - - /** - * Destroys the current session. - * - * @deprecated Use destroy() instead. - */ - public function stop() - { - $this->destroy(); - } - - /** - * Configuration. - * - * Handle input binds and configuration defaults. - */ - protected function configure() - { - ini_set('session.name', $this->config->cookieName); - - $sameSite = $this->cookie->getSameSite() ?: ucfirst(Cookie::SAMESITE_LAX); - - $params = [ - 'lifetime' => $this->config->expiration, - 'path' => $this->cookie->getPath(), - 'domain' => $this->cookie->getDomain(), - 'secure' => $this->cookie->isSecure(), - 'httponly' => true, // HTTP only; Yes, this is intentional and not configurable for security reasons. - 'samesite' => $sameSite, - ]; - - ini_set('session.cookie_samesite', $sameSite); - session_set_cookie_params($params); - - if ($this->config->expiration > 0) { - ini_set('session.gc_maxlifetime', (string) $this->config->expiration); - } - - if ($this->config->savePath !== '') { - ini_set('session.save_path', $this->config->savePath); - } - - // Security is king - ini_set('session.use_trans_sid', '0'); - ini_set('session.use_strict_mode', '1'); - ini_set('session.use_cookies', '1'); - ini_set('session.use_only_cookies', '1'); - - $this->configureSidLength(); - } - - /** - * Configure session ID length - * - * To make life easier, we used to force SHA-1 and 4 bits per - * character on everyone. And of course, someone was unhappy. - * - * Then PHP 7.1 broke backwards-compatibility because ext/session - * is such a mess that nobody wants to touch it with a pole stick, - * and the one guy who does, nobody has the energy to argue with. - * - * So we were forced to make changes, and OF COURSE something was - * going to break and now we have this pile of shit. -- Narf - */ - protected function configureSidLength() - { - $bitsPerCharacter = (int) (ini_get('session.sid_bits_per_character') !== false - ? ini_get('session.sid_bits_per_character') - : 4); - - $sidLength = (int) (ini_get('session.sid_length') !== false - ? ini_get('session.sid_length') - : 40); - - if (($sidLength * $bitsPerCharacter) < 160) { - $bits = ($sidLength * $bitsPerCharacter); - // Add as many more characters as necessary to reach at least 160 bits - $sidLength += (int) ceil((160 % $bits) / $bitsPerCharacter); - ini_set('session.sid_length', (string) $sidLength); - } - - // Yes, 4,5,6 are the only known possible values as of 2016-10-27 - switch ($bitsPerCharacter) { - case 4: - $this->sidRegexp = '[0-9a-f]'; - break; - - case 5: - $this->sidRegexp = '[0-9a-v]'; - break; - - case 6: - $this->sidRegexp = '[0-9a-zA-Z,-]'; - break; - } - - $this->sidRegexp .= '{' . $sidLength . '}'; - } - - /** - * Handle temporary variables - * - * Clears old "flash" data, marks the new one for deletion and handles - * "temp" data deletion. - */ - protected function initVars() - { - if (! isset($_SESSION['__ci_vars'])) { - return; - } - - $currentTime = Time::now()->getTimestamp(); - - foreach ($_SESSION['__ci_vars'] as $key => &$value) { - if ($value === 'new') { - $_SESSION['__ci_vars'][$key] = 'old'; - } - // DO NOT move this above the 'new' check! - elseif ($value === 'old' || $value < $currentTime) { - unset($_SESSION[$key], $_SESSION['__ci_vars'][$key]); - } - } - - if ($_SESSION['__ci_vars'] === []) { - unset($_SESSION['__ci_vars']); - } - } - - /** - * Regenerates the session ID. - * - * @param bool $destroy Should old session data be destroyed? - */ - public function regenerate(bool $destroy = false) - { - $_SESSION['__ci_last_regenerate'] = Time::now()->getTimestamp(); - session_regenerate_id($destroy); - - $this->removeOldSessionCookie(); - } - - private function removeOldSessionCookie(): void - { - $response = Services::response(); - $cookieStoreInResponse = $response->getCookieStore(); - - if (! $cookieStoreInResponse->has($this->config->cookieName)) { - return; - } - - // CookieStore is immutable. - $newCookieStore = $cookieStoreInResponse->remove($this->config->cookieName); - - // But clear() method clears cookies in the object (not immutable). - $cookieStoreInResponse->clear(); - - foreach ($newCookieStore as $cookie) { - $response->setCookie($cookie); - } - } - - /** - * Destroys the current session. - */ - public function destroy() - { - if (ENVIRONMENT === 'testing') { - return; - } - - session_destroy(); - } - - /** - * Writes session data and close the current session. - * - * @return void - */ - public function close() - { - if (ENVIRONMENT === 'testing') { - return; - } - - session_write_close(); - } - - /** - * Sets user data into the session. - * - * If $data is a string, then it is interpreted as a session property - * key, and $value is expected to be non-null. - * - * If $data is an array, it is expected to be an array of key/value pairs - * to be set as session properties. - * - * @param array|string $data Property name or associative array of properties - * @param array|bool|float|int|object|string|null $value Property value if single key provided - */ - public function set($data, $value = null) - { - if (is_array($data)) { - foreach ($data as $key => &$value) { - if (is_int($key)) { - $_SESSION[$value] = null; - } else { - $_SESSION[$key] = $value; - } - } - - return; - } - - $_SESSION[$data] = $value; - } - - /** - * Get user data that has been set in the session. - * - * If the property exists as "normal", returns it. - * Otherwise, returns an array of any temp or flash data values with the - * property key. - * - * Replaces the legacy method $session->userdata(); - * - * @param non-empty-string|null $key Identifier of the session property to retrieve - * - * @return array|bool|float|int|object|string|null The property value(s) - */ - public function get(?string $key = null) - { - if ($key !== null && $key !== '' && (null !== ($value = $_SESSION[$key] ?? null) || null !== ($value = dot_array_search($key, $_SESSION ?? [])))) { - return $value; - } - - if (! isset($_SESSION) || $_SESSION === []) { - return $key === null ? [] : null; - } - - if ($key !== null && $key !== '') { - return null; - } - - $userdata = []; - $_exclude = array_merge(['__ci_vars'], $this->getFlashKeys(), $this->getTempKeys()); - - $keys = array_keys($_SESSION); - - foreach ($keys as $key) { - if (! in_array($key, $_exclude, true)) { - $userdata[$key] = $_SESSION[$key]; - } - } - - return $userdata; - } - - /** - * Returns whether an index exists in the session array. - * - * @param string $key Identifier of the session property we are interested in. - */ - public function has(string $key): bool - { - return isset($_SESSION[$key]); - } - - /** - * Push new value onto session value that is array. - * - * @param string $key Identifier of the session property we are interested in. - * @param array $data value to be pushed to existing session key. - */ - public function push(string $key, array $data) - { - if ($this->has($key) && is_array($value = $this->get($key))) { - $this->set($key, array_merge($value, $data)); - } - } - - /** - * Remove one or more session properties. - * - * If $key is an array, it is interpreted as an array of string property - * identifiers to remove. Otherwise, it is interpreted as the identifier - * of a specific session property to remove. - * - * @param array|string $key Identifier of the session property or properties to remove. - */ - public function remove($key) - { - if (is_array($key)) { - foreach ($key as $k) { - unset($_SESSION[$k]); - } - - return; - } - - unset($_SESSION[$key]); - } - - /** - * Magic method to set variables in the session by simply calling - * $session->foo = bar; - * - * @param string $key Identifier of the session property to set. - * @param array|string $value - */ - public function __set(string $key, $value) - { - $_SESSION[$key] = $value; - } - - /** - * Magic method to get session variables by simply calling - * $foo = $session->foo; - * - * @param string $key Identifier of the session property to remove. - * - * @return string|null - */ - public function __get(string $key) - { - // Note: Keep this order the same, just in case somebody wants to - // use 'session_id' as a session data key, for whatever reason - if (isset($_SESSION[$key])) { - return $_SESSION[$key]; - } - - if ($key === 'session_id') { - return session_id(); - } - - return null; - } - - /** - * Magic method to check for session variables. - * Different from has() in that it will validate 'session_id' as well. - * Mostly used by internal PHP functions, users should stick to has() - * - * @param string $key Identifier of the session property to remove. - */ - public function __isset(string $key): bool - { - return isset($_SESSION[$key]) || ($key === 'session_id'); - } - - /** - * Sets data into the session that will only last for a single request. - * Perfect for use with single-use status update messages. - * - * If $data is an array, it is interpreted as an associative array of - * key/value pairs for flashdata properties. - * Otherwise, it is interpreted as the identifier of a specific - * flashdata property, with $value containing the property value. - * - * @param array|string $data Property identifier or associative array of properties - * @param array|bool|float|int|object|string|null $value Property value if $data is a scalar - */ - public function setFlashdata($data, $value = null) - { - $this->set($data, $value); - $this->markAsFlashdata(is_array($data) ? array_keys($data) : $data); - } - - /** - * Retrieve one or more items of flash data from the session. - * - * If the item key is null, return all flashdata. - * - * @param string $key Property identifier - * - * @return array|null The requested property value, or an associative array of them - */ - public function getFlashdata(?string $key = null) - { - if (isset($key)) { - return (isset($_SESSION['__ci_vars'], $_SESSION['__ci_vars'][$key], $_SESSION[$key]) - && ! is_int($_SESSION['__ci_vars'][$key])) ? $_SESSION[$key] : null; - } - - $flashdata = []; - - if (isset($_SESSION['__ci_vars'])) { - foreach ($_SESSION['__ci_vars'] as $key => &$value) { - if (! is_int($value)) { - $flashdata[$key] = $_SESSION[$key]; - } - } - } - - return $flashdata; - } - - /** - * Keeps a single piece of flash data alive for one more request. - * - * @param array|string $key Property identifier or array of them - */ - public function keepFlashdata($key) - { - $this->markAsFlashdata($key); - } - - /** - * Mark a session property or properties as flashdata. - * - * @param array|string $key Property identifier or array of them - * - * @return bool False if any of the properties are not already set - */ - public function markAsFlashdata($key): bool - { - if (is_array($key)) { - foreach ($key as $sessionKey) { - if (! isset($_SESSION[$sessionKey])) { - return false; - } - } - - $new = array_fill_keys($key, 'new'); - - $_SESSION['__ci_vars'] = isset($_SESSION['__ci_vars']) ? array_merge($_SESSION['__ci_vars'], $new) : $new; - - return true; - } - - if (! isset($_SESSION[$key])) { - return false; - } - - $_SESSION['__ci_vars'][$key] = 'new'; - - return true; - } - - /** - * Unmark data in the session as flashdata. - * - * @param array|string $key Property identifier or array of them - */ - public function unmarkFlashdata($key) - { - if (! isset($_SESSION['__ci_vars'])) { - return; - } - - if (! is_array($key)) { - $key = [$key]; - } - - foreach ($key as $k) { - if (isset($_SESSION['__ci_vars'][$k]) && ! is_int($_SESSION['__ci_vars'][$k])) { - unset($_SESSION['__ci_vars'][$k]); - } - } - - if ($_SESSION['__ci_vars'] === []) { - unset($_SESSION['__ci_vars']); - } - } - - /** - * Retrieve all of the keys for session data marked as flashdata. - * - * @return array The property names of all flashdata - */ - public function getFlashKeys(): array - { - if (! isset($_SESSION['__ci_vars'])) { - return []; - } - - $keys = []; - - foreach (array_keys($_SESSION['__ci_vars']) as $key) { - if (! is_int($_SESSION['__ci_vars'][$key])) { - $keys[] = $key; - } - } - - return $keys; - } - - /** - * Sets new data into the session, and marks it as temporary data - * with a set lifespan. - * - * @param array|string $data Session data key or associative array of items - * @param array|bool|float|int|object|string|null $value Value to store - * @param int $ttl Time-to-live in seconds - */ - public function setTempdata($data, $value = null, int $ttl = 300) - { - $this->set($data, $value); - $this->markAsTempdata($data, $ttl); - } - - /** - * Returns either a single piece of tempdata, or all temp data currently - * in the session. - * - * @param string $key Session data key - * - * @return array|bool|float|int|object|string|null Session data value or null if not found. - */ - public function getTempdata(?string $key = null) - { - if (isset($key)) { - return (isset($_SESSION['__ci_vars'], $_SESSION['__ci_vars'][$key], $_SESSION[$key]) - && is_int($_SESSION['__ci_vars'][$key])) ? $_SESSION[$key] : null; - } - - $tempdata = []; - - if (isset($_SESSION['__ci_vars'])) { - foreach ($_SESSION['__ci_vars'] as $key => &$value) { - if (is_int($value)) { - $tempdata[$key] = $_SESSION[$key]; - } - } - } - - return $tempdata; - } - - /** - * Removes a single piece of temporary data from the session. - * - * @param string $key Session data key - */ - public function removeTempdata(string $key) - { - $this->unmarkTempdata($key); - unset($_SESSION[$key]); - } - - /** - * Mark one of more pieces of data as being temporary, meaning that - * it has a set lifespan within the session. - * - * @param array|string $key Property identifier or array of them - * @param int $ttl Time to live, in seconds - * - * @return bool False if any of the properties were not set - */ - public function markAsTempdata($key, int $ttl = 300): bool - { - $ttl += Time::now()->getTimestamp(); - - if (is_array($key)) { - $temp = []; - - foreach ($key as $k => $v) { - // Do we have a key => ttl pair, or just a key? - if (is_int($k)) { - $k = $v; - $v = $ttl; - } elseif (is_string($v)) { - $v = Time::now()->getTimestamp() + $ttl; - } else { - $v += Time::now()->getTimestamp(); - } - - if (! array_key_exists($k, $_SESSION)) { - return false; - } - - $temp[$k] = $v; - } - - $_SESSION['__ci_vars'] = isset($_SESSION['__ci_vars']) ? array_merge($_SESSION['__ci_vars'], $temp) : $temp; - - return true; - } - - if (! isset($_SESSION[$key])) { - return false; - } - - $_SESSION['__ci_vars'][$key] = $ttl; - - return true; - } - - /** - * Unmarks temporary data in the session, effectively removing its - * lifespan and allowing it to live as long as the session does. - * - * @param array|string $key Property identifier or array of them - */ - public function unmarkTempdata($key) - { - if (! isset($_SESSION['__ci_vars'])) { - return; - } - - if (! is_array($key)) { - $key = [$key]; - } - - foreach ($key as $k) { - if (isset($_SESSION['__ci_vars'][$k]) && is_int($_SESSION['__ci_vars'][$k])) { - unset($_SESSION['__ci_vars'][$k]); - } - } - - if ($_SESSION['__ci_vars'] === []) { - unset($_SESSION['__ci_vars']); - } - } - - /** - * Retrieve the keys of all session data that have been marked as temporary data. - */ - public function getTempKeys(): array - { - if (! isset($_SESSION['__ci_vars'])) { - return []; - } - - $keys = []; - - foreach (array_keys($_SESSION['__ci_vars']) as $key) { - if (is_int($_SESSION['__ci_vars'][$key])) { - $keys[] = $key; - } - } - - return $keys; - } - - /** - * Sets the driver as the session handler in PHP. - * Extracted for easier testing. - */ - protected function setSaveHandler() - { - session_set_save_handler($this->driver, true); - } - - /** - * Starts the session. - * Extracted for testing reasons. - */ - protected function startSession() - { - if (ENVIRONMENT === 'testing') { - $_SESSION = []; - - return; - } - - session_start(); // @codeCoverageIgnore - } - - /** - * Takes care of setting the cookie on the client side. - * - * @codeCoverageIgnore - */ - protected function setCookie() - { - $expiration = $this->config->expiration === 0 ? 0 : Time::now()->getTimestamp() + $this->config->expiration; - $this->cookie = $this->cookie->withValue(session_id())->withExpires($expiration); - - $response = Services::response(); - $response->setCookie($this->cookie); - } -} diff --git a/system4.4.6/Session/SessionInterface.php b/system4.4.6/Session/SessionInterface.php deleted file mode 100644 index 424834c7..00000000 --- a/system4.4.6/Session/SessionInterface.php +++ /dev/null @@ -1,184 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Session; - -/** - * Expected behavior of a session container used with CodeIgniter. - */ -interface SessionInterface -{ - /** - * Regenerates the session ID. - * - * @param bool $destroy Should old session data be destroyed? - */ - public function regenerate(bool $destroy = false); - - /** - * Destroys the current session. - */ - public function destroy(); - - /** - * Sets user data into the session. - * - * If $data is a string, then it is interpreted as a session property - * key, and $value is expected to be non-null. - * - * If $data is an array, it is expected to be an array of key/value pairs - * to be set as session properties. - * - * @param array|string $data Property name or associative array of properties - * @param array|bool|float|int|object|string|null $value Property value if single key provided - */ - public function set($data, $value = null); - - /** - * Get user data that has been set in the session. - * - * If the property exists as "normal", returns it. - * Otherwise, returns an array of any temp or flash data values with the - * property key. - * - * Replaces the legacy method $session->userdata(); - * - * @param non-empty-string|null $key Identifier of the session property to retrieve - * - * @return array|bool|float|int|object|string|null The property value(s) - */ - public function get(?string $key = null); - - /** - * Returns whether an index exists in the session array. - * - * @param string $key Identifier of the session property we are interested in. - */ - public function has(string $key): bool; - - /** - * Remove one or more session properties. - * - * If $key is an array, it is interpreted as an array of string property - * identifiers to remove. Otherwise, it is interpreted as the identifier - * of a specific session property to remove. - * - * @param array|string $key Identifier of the session property or properties to remove. - */ - public function remove($key); - - /** - * Sets data into the session that will only last for a single request. - * Perfect for use with single-use status update messages. - * - * If $data is an array, it is interpreted as an associative array of - * key/value pairs for flashdata properties. - * Otherwise, it is interpreted as the identifier of a specific - * flashdata property, with $value containing the property value. - * - * @param array|string $data Property identifier or associative array of properties - * @param array|string $value Property value if $data is a scalar - */ - public function setFlashdata($data, $value = null); - - /** - * Retrieve one or more items of flash data from the session. - * - * If the item key is null, return all flashdata. - * - * @param string $key Property identifier - * - * @return array|null The requested property value, or an associative - * array of them - */ - public function getFlashdata(?string $key = null); - - /** - * Keeps a single piece of flash data alive for one more request. - * - * @param array|string $key Property identifier or array of them - */ - public function keepFlashdata($key); - - /** - * Mark a session property or properties as flashdata. - * - * @param array|string $key Property identifier or array of them - * - * @return false if any of the properties are not already set - */ - public function markAsFlashdata($key); - - /** - * Unmark data in the session as flashdata. - * - * @param array|string $key Property identifier or array of them - */ - public function unmarkFlashdata($key); - - /** - * Retrieve all of the keys for session data marked as flashdata. - * - * @return array The property names of all flashdata - */ - public function getFlashKeys(): array; - - /** - * Sets new data into the session, and marks it as temporary data - * with a set lifespan. - * - * @param array|string $data Session data key or associative array of items - * @param array|bool|float|int|object|string|null $value Value to store - * @param int $ttl Time-to-live in seconds - */ - public function setTempdata($data, $value = null, int $ttl = 300); - - /** - * Returns either a single piece of tempdata, or all temp data currently - * in the session. - * - * @param string $key Session data key - * - * @return array|bool|float|int|object|string|null Session data value or null if not found. - */ - public function getTempdata(?string $key = null); - - /** - * Removes a single piece of temporary data from the session. - * - * @param string $key Session data key - */ - public function removeTempdata(string $key); - - /** - * Mark one of more pieces of data as being temporary, meaning that - * it has a set lifespan within the session. - * - * @param array|string $key Property identifier or array of them - * @param int $ttl Time to live, in seconds - * - * @return bool False if any of the properties were not set - */ - public function markAsTempdata($key, int $ttl = 300); - - /** - * Unmarks temporary data in the session, effectively removing its - * lifespan and allowing it to live as long as the session does. - * - * @param array|string $key Property identifier or array of them - */ - public function unmarkTempdata($key); - - /** - * Retrieve the keys of all session data that have been marked as temporary data. - */ - public function getTempKeys(): array; -} diff --git a/system4.4.6/Superglobals.php b/system4.4.6/Superglobals.php deleted file mode 100644 index c4386353..00000000 --- a/system4.4.6/Superglobals.php +++ /dev/null @@ -1,61 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter; - -/** - * Superglobals manipulation. - * - * @internal - * @see \CodeIgniter\SuperglobalsTest - */ -final class Superglobals -{ - private array $server; - private array $get; - - public function __construct(?array $server = null, ?array $get = null) - { - $this->server = $server ?? $_SERVER; - $this->get = $get ?? $_GET; - } - - public function server(string $key): ?string - { - return $this->server[$key] ?? null; - } - - public function setServer(string $key, string $value): void - { - $this->server[$key] = $value; - $_SERVER[$key] = $value; - } - - /** - * @return array|string|null - */ - public function get(string $key) - { - return $this->get[$key] ?? null; - } - - public function setGet(string $key, string $value): void - { - $this->get[$key] = $value; - $_GET[$key] = $value; - } - - public function setGetArray(array $array): void - { - $this->get = $array; - $_GET = $array; - } -} diff --git a/system4.4.6/Test/CIDatabaseTestCase.php b/system4.4.6/Test/CIDatabaseTestCase.php deleted file mode 100644 index 8e25c378..00000000 --- a/system4.4.6/Test/CIDatabaseTestCase.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test; - -/** - * CIDatabaseTestCase - * - * Use DatabaseTestTrait instead. - * - * @deprecated 4.1.2 - */ -abstract class CIDatabaseTestCase extends CIUnitTestCase -{ - use DatabaseTestTrait; -} diff --git a/system4.4.6/Test/CIUnitTestCase.php b/system4.4.6/Test/CIUnitTestCase.php deleted file mode 100644 index b27db73f..00000000 --- a/system4.4.6/Test/CIUnitTestCase.php +++ /dev/null @@ -1,527 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test; - -use CodeIgniter\CodeIgniter; -use CodeIgniter\Config\Factories; -use CodeIgniter\Database\BaseConnection; -use CodeIgniter\Database\MigrationRunner; -use CodeIgniter\Database\Seeder; -use CodeIgniter\Events\Events; -use CodeIgniter\Router\RouteCollection; -use CodeIgniter\Session\Handlers\ArrayHandler; -use CodeIgniter\Test\Mock\MockCache; -use CodeIgniter\Test\Mock\MockCodeIgniter; -use CodeIgniter\Test\Mock\MockEmail; -use CodeIgniter\Test\Mock\MockSession; -use Config\App; -use Config\Autoload; -use Config\Email; -use Config\Modules; -use Config\Services; -use Config\Session; -use Exception; -use PHPUnit\Framework\TestCase; - -/** - * Framework test case for PHPUnit. - */ -abstract class CIUnitTestCase extends TestCase -{ - use ReflectionHelper; - - /** - * @var CodeIgniter - */ - protected $app; - - /** - * Methods to run during setUp. - * - * WARNING: Do not override unless you know exactly what you are doing. - * This property may be deprecated in the future. - * - * @var array of methods - */ - protected $setUpMethods = [ - 'resetFactories', - 'mockCache', - 'mockEmail', - 'mockSession', - ]; - - /** - * Methods to run during tearDown. - * - * WARNING: This property may be deprecated in the future. - * - * @var array of methods - */ - protected $tearDownMethods = []; - - /** - * Store of identified traits. - */ - private ?array $traits = null; - - // -------------------------------------------------------------------- - // Database Properties - // -------------------------------------------------------------------- - - /** - * Should run db migration? - * - * @var bool - */ - protected $migrate = true; - - /** - * Should run db migration only once? - * - * @var bool - */ - protected $migrateOnce = false; - - /** - * Should run seeding only once? - * - * @var bool - */ - protected $seedOnce = false; - - /** - * Should the db be refreshed before test? - * - * @var bool - */ - protected $refresh = true; - - /** - * The seed file(s) used for all tests within this test case. - * Should be fully-namespaced or relative to $basePath - * - * @var array|string - */ - protected $seed = ''; - - /** - * The path to the seeds directory. - * Allows overriding the default application directories. - * - * @var string - */ - protected $basePath = SUPPORTPATH . 'Database'; - - /** - * The namespace(s) to help us find the migration classes. - * `null` is equivalent to running `spark migrate --all`. - * Note that running "all" runs migrations in date order, - * but specifying namespaces runs them in namespace order (then date) - * - * @var array|string|null - */ - protected $namespace = 'Tests\Support'; - - /** - * The name of the database group to connect to. - * If not present, will use the defaultGroup. - * - * @var non-empty-string - */ - protected $DBGroup = 'tests'; - - /** - * Our database connection. - * - * @var BaseConnection - */ - protected $db; - - /** - * Migration Runner instance. - * - * @var MigrationRunner|null - */ - protected $migrations; - - /** - * Seeder instance - * - * @var Seeder - */ - protected $seeder; - - /** - * Stores information needed to remove any - * rows inserted via $this->hasInDatabase(); - * - * @var array - */ - protected $insertCache = []; - - // -------------------------------------------------------------------- - // Feature Properties - // -------------------------------------------------------------------- - - /** - * If present, will override application - * routes when using call(). - * - * @var RouteCollection|null - */ - protected $routes; - - /** - * Values to be set in the SESSION global - * before running the test. - * - * @var array - */ - protected $session = []; - - /** - * Enabled auto clean op buffer after request call - * - * @var bool - */ - protected $clean = true; - - /** - * Custom request's headers - * - * @var array - */ - protected $headers = []; - - /** - * Allows for formatting the request body to what - * the controller is going to expect - * - * @var string - */ - protected $bodyFormat = ''; - - /** - * Allows for directly setting the body to what - * it needs to be. - * - * @var mixed - */ - protected $requestBody = ''; - - // -------------------------------------------------------------------- - // Staging - // -------------------------------------------------------------------- - - /** - * Load the helpers. - */ - public static function setUpBeforeClass(): void - { - parent::setUpBeforeClass(); - - helper(['url', 'test']); - } - - protected function setUp(): void - { - parent::setUp(); - - if (! $this->app) { - $this->app = $this->createApplication(); - } - - foreach ($this->setUpMethods as $method) { - $this->{$method}(); - } - - // Check for the database trait - if (method_exists($this, 'setUpDatabase')) { - $this->setUpDatabase(); - } - - // Check for other trait methods - $this->callTraitMethods('setUp'); - } - - protected function tearDown(): void - { - parent::tearDown(); - - foreach ($this->tearDownMethods as $method) { - $this->{$method}(); - } - - // Check for the database trait - if (method_exists($this, 'tearDownDatabase')) { - $this->tearDownDatabase(); - } - - // Check for other trait methods - $this->callTraitMethods('tearDown'); - } - - /** - * Checks for traits with corresponding - * methods for setUp or tearDown. - * - * @param string $stage 'setUp' or 'tearDown' - */ - private function callTraitMethods(string $stage): void - { - if ($this->traits === null) { - $this->traits = class_uses_recursive($this); - } - - foreach ($this->traits as $trait) { - $method = $stage . class_basename($trait); - - if (method_exists($this, $method)) { - $this->{$method}(); - } - } - } - - // -------------------------------------------------------------------- - // Mocking - // -------------------------------------------------------------------- - - /** - * Resets shared instanced for all Factories components - */ - protected function resetFactories() - { - Factories::reset(); - } - - /** - * Resets shared instanced for all Services - */ - protected function resetServices(bool $initAutoloader = true) - { - Services::reset($initAutoloader); - } - - /** - * Injects the mock Cache driver to prevent filesystem collisions - */ - protected function mockCache() - { - Services::injectMock('cache', new MockCache()); - } - - /** - * Injects the mock email driver so no emails really send - */ - protected function mockEmail() - { - Services::injectMock('email', new MockEmail(config(Email::class))); - } - - /** - * Injects the mock session driver into Services - */ - protected function mockSession() - { - $_SESSION = []; - - $config = config(Session::class); - $session = new MockSession(new ArrayHandler($config, '0.0.0.0'), $config); - - Services::injectMock('session', $session); - } - - // -------------------------------------------------------------------- - // Assertions - // -------------------------------------------------------------------- - - /** - * Custom function to hook into CodeIgniter's Logging mechanism - * to check if certain messages were logged during code execution. - * - * @param string|null $expectedMessage - * - * @return bool - */ - public function assertLogged(string $level, $expectedMessage = null) - { - $result = TestLogger::didLog($level, $expectedMessage); - - $this->assertTrue($result, sprintf( - 'Failed asserting that expected message "%s" with level "%s" was logged.', - $expectedMessage ?? '', - $level - )); - - return $result; - } - - /** - * Asserts that there is a log record that contains `$logMessage` in the message. - */ - public function assertLogContains(string $level, string $logMessage, string $message = ''): void - { - $this->assertTrue( - TestLogger::didLog($level, $logMessage, false), - $message ?: sprintf( - 'Failed asserting that logs have a record of message containing "%s" with level "%s".', - $logMessage, - $level - ) - ); - } - - /** - * Hooks into CodeIgniter's Events system to check if a specific - * event was triggered or not. - * - * @throws Exception - */ - public function assertEventTriggered(string $eventName): bool - { - $found = false; - $eventName = strtolower($eventName); - - foreach (Events::getPerformanceLogs() as $log) { - if ($log['event'] !== $eventName) { - continue; - } - - $found = true; - break; - } - - $this->assertTrue($found); - - return $found; - } - - /** - * Hooks into xdebug's headers capture, looking for presence of - * a specific header emitted. - * - * @param string $header The leading portion of the header we are looking for - */ - public function assertHeaderEmitted(string $header, bool $ignoreCase = false): void - { - $this->assertNotNull( - $this->getHeaderEmitted($header, $ignoreCase, __METHOD__), - "Didn't find header for {$header}" - ); - } - - /** - * Hooks into xdebug's headers capture, looking for absence of - * a specific header emitted. - * - * @param string $header The leading portion of the header we don't want to find - */ - public function assertHeaderNotEmitted(string $header, bool $ignoreCase = false): void - { - $this->assertNull( - $this->getHeaderEmitted($header, $ignoreCase, __METHOD__), - "Found header for {$header}" - ); - } - - /** - * Custom function to test that two values are "close enough". - * This is intended for extended execution time testing, - * where the result is close but not exactly equal to the - * expected time, for reasons beyond our control. - * - * @param mixed $actual - * - * @throws Exception - */ - public function assertCloseEnough(int $expected, $actual, string $message = '', int $tolerance = 1) - { - $difference = abs($expected - (int) floor($actual)); - - $this->assertLessThanOrEqual($tolerance, $difference, $message); - } - - /** - * Custom function to test that two values are "close enough". - * This is intended for extended execution time testing, - * where the result is close but not exactly equal to the - * expected time, for reasons beyond our control. - * - * @param mixed $expected - * @param mixed $actual - * - * @return bool|void - * - * @throws Exception - */ - public function assertCloseEnoughString($expected, $actual, string $message = '', int $tolerance = 1) - { - $expected = (string) $expected; - $actual = (string) $actual; - if (strlen($expected) !== strlen($actual)) { - return false; - } - - try { - $expected = (int) substr($expected, -2); - $actual = (int) substr($actual, -2); - $difference = abs($expected - $actual); - - $this->assertLessThanOrEqual($tolerance, $difference, $message); - } catch (Exception $e) { - return false; - } - } - - // -------------------------------------------------------------------- - // Utility - // -------------------------------------------------------------------- - - /** - * Loads up an instance of CodeIgniter - * and gets the environment setup. - * - * @return CodeIgniter - */ - protected function createApplication() - { - // Initialize the autoloader. - Services::autoloader()->initialize(new Autoload(), new Modules()); - - $app = new MockCodeIgniter(new App()); - $app->initialize(); - - return $app; - } - - /** - * Return first matching emitted header. - */ - protected function getHeaderEmitted(string $header, bool $ignoreCase = false, string $method = __METHOD__): ?string - { - if (! function_exists('xdebug_get_headers')) { - $this->markTestSkipped($method . '() requires xdebug.'); - } - - foreach (xdebug_get_headers() as $emittedHeader) { - $found = $ignoreCase - ? (stripos($emittedHeader, $header) === 0) - : (strpos($emittedHeader, $header) === 0); - - if ($found) { - return $emittedHeader; - } - } - - return null; - } -} diff --git a/system4.4.6/Test/ConfigFromArrayTrait.php b/system4.4.6/Test/ConfigFromArrayTrait.php deleted file mode 100644 index 17d2dd55..00000000 --- a/system4.4.6/Test/ConfigFromArrayTrait.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test; - -use LogicException; - -trait ConfigFromArrayTrait -{ - /** - * Creates a Config instance from an array. - * - * @template T of \CodeIgniter\Config\BaseConfig - * - * @param class-string<T> $classname Config classname - * @param array<string, mixed> $config - * - * @return T - */ - private function createConfigFromArray(string $classname, array $config) - { - $configObj = new $classname(); - - foreach ($config as $key => $value) { - if (property_exists($configObj, $key)) { - $configObj->{$key} = $value; - - continue; - } - - throw new LogicException( - 'No such property: ' . $classname . '::$' . $key - ); - } - - return $configObj; - } -} diff --git a/system4.4.6/Test/Constraints/SeeInDatabase.php b/system4.4.6/Test/Constraints/SeeInDatabase.php deleted file mode 100644 index dbed1e42..00000000 --- a/system4.4.6/Test/Constraints/SeeInDatabase.php +++ /dev/null @@ -1,118 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Constraints; - -use CodeIgniter\Database\ConnectionInterface; -use PHPUnit\Framework\Constraint\Constraint; - -class SeeInDatabase extends Constraint -{ - /** - * The number of results that will show in the database - * in case of failure. - * - * @var int - */ - protected $show = 3; - - /** - * @var ConnectionInterface - */ - protected $db; - - /** - * Data used to compare results against. - * - * @var array - */ - protected $data; - - /** - * SeeInDatabase constructor. - */ - public function __construct(ConnectionInterface $db, array $data) - { - $this->db = $db; - $this->data = $data; - } - - /** - * Check if data is found in the table - * - * @param mixed $table - */ - protected function matches($table): bool - { - return $this->db->table($table)->where($this->data)->countAllResults() > 0; - } - - /** - * Get the description of the failure - * - * @param mixed $table - */ - protected function failureDescription($table): string - { - return sprintf( - "a row in the table [%s] matches the attributes \n%s\n\n%s", - $table, - $this->toString(JSON_PRETTY_PRINT), - $this->getAdditionalInfo($table) - ); - } - - /** - * Gets additional records similar to $data. - */ - protected function getAdditionalInfo(string $table): string - { - $builder = $this->db->table($table); - - $similar = $builder->where( - array_key_first($this->data), - $this->data[array_key_first($this->data)] - )->limit($this->show)->get()->getResultArray(); - - if ($similar !== []) { - $description = 'Found similar results: ' . json_encode($similar, JSON_PRETTY_PRINT); - } else { - // Does the table have any results at all? - $results = $this->db->table($table) - ->limit($this->show) - ->get() - ->getResultArray(); - - if ($results !== []) { - return 'The table is empty.'; - } - - $description = 'Found: ' . json_encode($results, JSON_PRETTY_PRINT); - } - - $total = $this->db->table($table)->countAll(); - if ($total > $this->show) { - $description .= sprintf(' and %s others', $total - $this->show); - } - - return $description; - } - - /** - * Gets a string representation of the constraint - * - * @param int $options - */ - public function toString($options = 0): string - { - return json_encode($this->data, $options); - } -} diff --git a/system4.4.6/Test/ControllerResponse.php b/system4.4.6/Test/ControllerResponse.php deleted file mode 100644 index 2a90e4dd..00000000 --- a/system4.4.6/Test/ControllerResponse.php +++ /dev/null @@ -1,99 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test; - -use CodeIgniter\HTTP\ResponseInterface; -use Config\Services; - -/** - * Testable response from a controller - * - * @deprecated Use TestResponse directly - * - * @codeCoverageIgnore - */ -class ControllerResponse extends TestResponse -{ - /** - * The message payload. - * - * @var string - * - * @deprecated Use $response->getBody() instead - */ - protected $body; - - /** - * DOM for the body. - * - * @var DOMParser - * - * @deprecated Use $domParser instead - */ - protected $dom; - - /** - * Maintains the deprecated $dom property. - */ - public function __construct() - { - parent::__construct(Services::response()); - - $this->dom = &$this->domParser; - } - - /** - * Sets the response. - * - * @return $this - * - * @deprecated Will revert to parent::setResponse() in a future release (no $body updates) - */ - public function setResponse(ResponseInterface $response) - { - parent::setResponse($response); - - $this->body = $response->getBody() ?? ''; - - return $this; - } - - /** - * Sets the body and updates the DOM. - * - * @return $this - * - * @deprecated Use response()->setBody() instead - */ - public function setBody(string $body) - { - $this->body = $body; - - if ($body !== '') { - $this->domParser->withString($body); - } - - return $this; - } - - /** - * Retrieve the body. - * - * @return string - * - * @deprecated Use response()->getBody() instead - */ - public function getBody() - { - return $this->body; - } -} diff --git a/system4.4.6/Test/ControllerTestTrait.php b/system4.4.6/Test/ControllerTestTrait.php deleted file mode 100644 index a99b899e..00000000 --- a/system4.4.6/Test/ControllerTestTrait.php +++ /dev/null @@ -1,305 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test; - -use CodeIgniter\Controller; -use CodeIgniter\HTTP\Exceptions\HTTPException; -use CodeIgniter\HTTP\IncomingRequest; -use CodeIgniter\HTTP\ResponseInterface; -use CodeIgniter\HTTP\URI; -use Config\App; -use Config\Services; -use InvalidArgumentException; -use Psr\Log\LoggerInterface; -use Throwable; - -/** - * Controller Test Trait - * - * Provides features that make testing controllers simple and fluent. - * - * Example: - * - * $this->withRequest($request) - * ->withResponse($response) - * ->withURI($uri) - * ->withBody($body) - * ->controller('App\Controllers\Home') - * ->execute('methodName'); - */ -trait ControllerTestTrait -{ - /** - * Controller configuration. - * - * @var App - */ - protected $appConfig; - - /** - * Request. - * - * @var IncomingRequest - */ - protected $request; - - /** - * Response. - * - * @var ResponseInterface - */ - protected $response; - - /** - * Message logger. - * - * @var LoggerInterface - */ - protected $logger; - - /** - * Initialized controller. - * - * @var Controller - */ - protected $controller; - - /** - * URI of this request. - * - * @var string - */ - protected $uri = 'http://example.com'; - - /** - * Request body. - * - * @var string|null - */ - protected $body; - - /** - * Initializes required components. - */ - protected function setUpControllerTestTrait(): void - { - // The URL helper is always loaded by the system so ensure it is available. - helper('url'); - - if (empty($this->appConfig)) { - $this->appConfig = config(App::class); - } - - if (! $this->uri instanceof URI) { - $factory = Services::siteurifactory($this->appConfig, Services::superglobals(), false); - $this->uri = $factory->createFromGlobals(); - } - - if (empty($this->request)) { - // Do some acrobatics, so we can use the Request service with our own URI - $tempUri = Services::uri(); - Services::injectMock('uri', $this->uri); - - $this->withRequest(Services::incomingrequest($this->appConfig, false)); - - // Restore the URI service - Services::injectMock('uri', $tempUri); - } - - if (empty($this->response)) { - $this->response = Services::response($this->appConfig, false); - } - - if (empty($this->logger)) { - $this->logger = Services::logger(); - } - } - - /** - * Loads the specified controller, and generates any needed dependencies. - * - * @return $this - */ - public function controller(string $name) - { - if (! class_exists($name)) { - throw new InvalidArgumentException('Invalid Controller: ' . $name); - } - - $this->controller = new $name(); - $this->controller->initController($this->request, $this->response, $this->logger); - - return $this; - } - - /** - * Runs the specified method on the controller and returns the results. - * - * @param array $params - * - * @return TestResponse - * - * @throws InvalidArgumentException - */ - public function execute(string $method, ...$params) - { - if (! method_exists($this->controller, $method) || ! is_callable([$this->controller, $method])) { - throw new InvalidArgumentException('Method does not exist or is not callable in controller: ' . $method); - } - - $response = null; - $this->request->setBody($this->body); - - try { - ob_start(); - $response = $this->controller->{$method}(...$params); - } catch (Throwable $e) { - $code = $e->getCode(); - - // If code is not a valid HTTP status then assume there is an error - if ($code < 100 || $code >= 600) { - throw $e; - } - } finally { - $output = ob_get_clean(); - } - - // If the controller returned a view then add it to the output - if (is_string($response)) { - $output = is_string($output) ? $output . $response : $response; - } - - // If the controller did not return a response then start one - if (! $response instanceof ResponseInterface) { - $response = $this->response; - } - - // Check for output to set or prepend - // @see \CodeIgniter\CodeIgniter::gatherOutput() - if (is_string($output)) { - if (is_string($response->getBody())) { - $response->setBody($output . $response->getBody()); - } else { - $response->setBody($output); - } - } - - // Check for an overriding code from exceptions - if (isset($code)) { - $response->setStatusCode($code); - } - // Otherwise ensure there is a status code - else { - // getStatusCode() throws for empty codes - try { - $response->getStatusCode(); - } catch (HTTPException $e) { - // If no code has been set then assume success - $response->setStatusCode(200); - } - } - - // Create the result and add the Request for reference - return (new TestResponse($response))->setRequest($this->request); - } - - /** - * Set controller's config, with method chaining. - * - * @param App $appConfig - * - * @return $this - */ - public function withConfig($appConfig) - { - $this->appConfig = $appConfig; - - return $this; - } - - /** - * Set controller's request, with method chaining. - * - * @param IncomingRequest $request - * - * @return $this - */ - public function withRequest($request) - { - $this->request = $request; - - // Make sure it's available for other classes - Services::injectMock('request', $request); - - return $this; - } - - /** - * Set controller's response, with method chaining. - * - * @param ResponseInterface $response - * - * @return $this - */ - public function withResponse($response) - { - $this->response = $response; - - return $this; - } - - /** - * Set controller's logger, with method chaining. - * - * @param LoggerInterface $logger - * - * @return $this - */ - public function withLogger($logger) - { - $this->logger = $logger; - - return $this; - } - - /** - * Set the controller's URI, with method chaining. - * - * @return $this - */ - public function withUri(string $uri) - { - $factory = Services::siteurifactory(); - $this->uri = $factory->createFromString($uri); - Services::injectMock('uri', $this->uri); - - // Update the Request instance, because Request has the SiteURI instance. - $this->request = Services::incomingrequest(null, false); - Services::injectMock('request', $this->request); - - return $this; - } - - /** - * Set the method's body, with method chaining. - * - * @param string|null $body - * - * @return $this - */ - public function withBody($body) - { - $this->body = $body; - - return $this; - } -} diff --git a/system4.4.6/Test/ControllerTester.php b/system4.4.6/Test/ControllerTester.php deleted file mode 100644 index c01e6a8b..00000000 --- a/system4.4.6/Test/ControllerTester.php +++ /dev/null @@ -1,293 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test; - -use CodeIgniter\Controller; -use CodeIgniter\HTTP\IncomingRequest; -use CodeIgniter\HTTP\ResponseInterface; -use CodeIgniter\HTTP\URI; -use Config\App; -use Config\Services; -use InvalidArgumentException; -use Psr\Log\LoggerInterface; -use Throwable; - -/** - * ControllerTester Trait - * - * Provides features that make testing controllers simple and fluent. - * - * Example: - * - * $this->withRequest($request) - * ->withResponse($response) - * ->withURI($uri) - * ->withBody($body) - * ->controller('App\Controllers\Home') - * ->execute('methodName'); - * - * @deprecated Use ControllerTestTrait instead - * - * @codeCoverageIgnore - */ -trait ControllerTester -{ - /** - * Controller configuration. - * - * @var App - */ - protected $appConfig; - - /** - * Request. - * - * @var IncomingRequest - */ - protected $request; - - /** - * Response. - * - * @var ResponseInterface - */ - protected $response; - - /** - * Message logger. - * - * @var LoggerInterface - */ - protected $logger; - - /** - * Initialized controller. - * - * @var Controller - */ - protected $controller; - - /** - * URI of this request. - * - * @var string - */ - protected $uri = 'http://example.com'; - - /** - * Request or response body. - * - * @var string|null - */ - protected $body; - - /** - * Initializes required components. - */ - protected function setUpControllerTester(): void - { - if (empty($this->appConfig)) { - $this->appConfig = config(App::class); - } - - if (! $this->uri instanceof URI) { - $this->uri = Services::uri($this->appConfig->baseURL ?? 'http://example.com/', false); - } - - if (empty($this->request)) { - // Do some acrobatics so we can use the Request service with our own URI - $tempUri = Services::uri(); - Services::injectMock('uri', $this->uri); - - $this->withRequest(Services::incomingrequest($this->appConfig, false)->setBody($this->body)); - - // Restore the URI service - Services::injectMock('uri', $tempUri); - } - - if (empty($this->response)) { - $this->response = Services::response($this->appConfig, false); - } - - if (empty($this->logger)) { - $this->logger = Services::logger(); - } - } - - /** - * Loads the specified controller, and generates any needed dependencies. - * - * @return mixed - */ - public function controller(string $name) - { - if (! class_exists($name)) { - throw new InvalidArgumentException('Invalid Controller: ' . $name); - } - - $this->controller = new $name(); - $this->controller->initController($this->request, $this->response, $this->logger); - - return $this; - } - - /** - * Runs the specified method on the controller and returns the results. - * - * @param array $params - * - * @return ControllerResponse - * - * @throws InvalidArgumentException - */ - public function execute(string $method, ...$params) - { - if (! method_exists($this->controller, $method) || ! is_callable([$this->controller, $method])) { - throw new InvalidArgumentException('Method does not exist or is not callable in controller: ' . $method); - } - - // The URL helper is always loaded by the system - // so ensure it's available. - helper('url'); - - $result = (new ControllerResponse()) - ->setRequest($this->request) - ->setResponse($this->response); - - $response = null; - - try { - ob_start(); - - $response = $this->controller->{$method}(...$params); - } catch (Throwable $e) { - $code = $e->getCode(); - - // If code is not a valid HTTP status then assume there is an error - if ($code < 100 || $code >= 600) { - throw $e; - } - - $result->response()->setStatusCode($code); - } finally { - $output = ob_get_clean(); - - // If the controller returned a response, use it - if (isset($response) && $response instanceof ResponseInterface) { - $result->setResponse($response); - } - - // check if controller returned a view rather than echoing it - if (is_string($response)) { - $output = $response; - $result->response()->setBody($output); - $result->setBody($output); - } elseif (! empty($response) && ! empty($response->getBody())) { - $result->setBody($response->getBody()); - } else { - $result->setBody(''); - } - } - - // If not response code has been sent, assume a success - if (empty($result->response()->getStatusCode())) { - $result->response()->setStatusCode(200); - } - - return $result; - } - - /** - * Set controller's config, with method chaining. - * - * @param mixed $appConfig - * - * @return mixed - */ - public function withConfig($appConfig) - { - $this->appConfig = $appConfig; - - return $this; - } - - /** - * Set controller's request, with method chaining. - * - * @param mixed $request - * - * @return mixed - */ - public function withRequest($request) - { - $this->request = $request; - - // Make sure it's available for other classes - Services::injectMock('request', $request); - - return $this; - } - - /** - * Set controller's response, with method chaining. - * - * @param mixed $response - * - * @return mixed - */ - public function withResponse($response) - { - $this->response = $response; - - return $this; - } - - /** - * Set controller's logger, with method chaining. - * - * @param mixed $logger - * - * @return mixed - */ - public function withLogger($logger) - { - $this->logger = $logger; - - return $this; - } - - /** - * Set the controller's URI, with method chaining. - * - * @return mixed - */ - public function withUri(string $uri) - { - $this->uri = new URI($uri); - - return $this; - } - - /** - * Set the method's body, with method chaining. - * - * @param string|null $body - * - * @return mixed - */ - public function withBody($body) - { - $this->body = $body; - - return $this; - } -} diff --git a/system4.4.6/Test/DOMParser.php b/system4.4.6/Test/DOMParser.php deleted file mode 100644 index 15654521..00000000 --- a/system4.4.6/Test/DOMParser.php +++ /dev/null @@ -1,280 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test; - -use BadMethodCallException; -use DOMDocument; -use DOMNodeList; -use DOMXPath; -use InvalidArgumentException; - -/** - * Load a response into a DOMDocument for testing assertions based on that - * - * @see \CodeIgniter\Test\DOMParserTest - */ -class DOMParser -{ - /** - * DOM for the body, - * - * @var DOMDocument - */ - protected $dom; - - /** - * Constructor. - * - * @throws BadMethodCallException - */ - public function __construct() - { - if (! extension_loaded('DOM')) { - throw new BadMethodCallException('DOM extension is required, but not currently loaded.'); // @codeCoverageIgnore - } - - $this->dom = new DOMDocument('1.0', 'utf-8'); - } - - /** - * Returns the body of the current document. - */ - public function getBody(): string - { - return $this->dom->saveHTML(); - } - - /** - * Sets a string as the body that we want to work with. - * - * @return $this - */ - public function withString(string $content) - { - // DOMDocument::loadHTML() will treat your string as being in ISO-8859-1 - // (the HTTP/1.1 default character set) unless you tell it otherwise. - // https://stackoverflow.com/a/8218649 - // So encode characters to HTML numeric string references. - $content = mb_encode_numericentity($content, [0x80, 0x10FFFF, 0, 0x1FFFFF], 'UTF-8'); - - // turning off some errors - libxml_use_internal_errors(true); - - if (! $this->dom->loadHTML($content)) { - // unclear how we would get here, given that we are trapping libxml errors - // @codeCoverageIgnoreStart - libxml_clear_errors(); - - throw new BadMethodCallException('Invalid HTML'); - // @codeCoverageIgnoreEnd - } - - // ignore the whitespace. - $this->dom->preserveWhiteSpace = false; - - return $this; - } - - /** - * Loads the contents of a file as a string - * so that we can work with it. - * - * @return $this - */ - public function withFile(string $path) - { - if (! is_file($path)) { - throw new InvalidArgumentException(basename($path) . ' is not a valid file.'); - } - - $content = file_get_contents($path); - - return $this->withString($content); - } - - /** - * Checks to see if the text is found within the result. - */ - public function see(?string $search = null, ?string $element = null): bool - { - // If Element is null, we're just scanning for text - if ($element === null) { - $content = $this->dom->saveHTML($this->dom->documentElement); - - return mb_strpos($content, $search) !== false; - } - - $result = $this->doXPath($search, $element); - - return (bool) $result->length; - } - - /** - * Checks to see if the text is NOT found within the result. - */ - public function dontSee(?string $search = null, ?string $element = null): bool - { - return ! $this->see($search, $element); - } - - /** - * Checks to see if an element with the matching CSS specifier - * is found within the current DOM. - */ - public function seeElement(string $element): bool - { - return $this->see(null, $element); - } - - /** - * Checks to see if the element is available within the result. - */ - public function dontSeeElement(string $element): bool - { - return $this->dontSee(null, $element); - } - - /** - * Determines if a link with the specified text is found - * within the results. - */ - public function seeLink(string $text, ?string $details = null): bool - { - return $this->see($text, 'a' . $details); - } - - /** - * Checks for an input named $field with a value of $value. - */ - public function seeInField(string $field, string $value): bool - { - $result = $this->doXPath(null, 'input', ["[@value=\"{$value}\"][@name=\"{$field}\"]"]); - - return (bool) $result->length; - } - - /** - * Checks for checkboxes that are currently checked. - */ - public function seeCheckboxIsChecked(string $element): bool - { - $result = $this->doXPath(null, 'input' . $element, [ - '[@type="checkbox"]', - '[@checked="checked"]', - ]); - - return (bool) $result->length; - } - - /** - * Search the DOM using an XPath expression. - * - * @return DOMNodeList|false - */ - protected function doXPath(?string $search, string $element, array $paths = []) - { - // Otherwise, grab any elements that match - // the selector - $selector = $this->parseSelector($element); - - $path = ''; - - // By ID - if (isset($selector['id'])) { - $path = ($selector['tag'] === '') - ? "id(\"{$selector['id']}\")" - : "//{$selector['tag']}[@id=\"{$selector['id']}\"]"; - } - // By Class - elseif (isset($selector['class'])) { - $path = ($selector['tag'] === '') - ? "//*[@class=\"{$selector['class']}\"]" - : "//{$selector['tag']}[@class=\"{$selector['class']}\"]"; - } - // By tag only - elseif ($selector['tag'] !== '') { - $path = "//{$selector['tag']}"; - } - - if (isset($selector['attr'])) { - foreach ($selector['attr'] as $key => $value) { - $path .= "[@{$key}=\"{$value}\"]"; - } - } - - // $paths might contain a number of different - // ready to go xpath portions to tack on. - if ($paths !== [] && is_array($paths)) { - foreach ($paths as $extra) { - $path .= $extra; - } - } - - if ($search !== null) { - $path .= "[contains(., \"{$search}\")]"; - } - - $xpath = new DOMXPath($this->dom); - - return $xpath->query($path); - } - - /** - * Look for the a selector in the passed text. - * - * @return array{tag: string, id: string|null, class: string|null, attr: array<string, string>|null} - */ - public function parseSelector(string $selector) - { - $id = null; - $class = null; - $attr = null; - - // ID? - if (strpos($selector, '#') !== false) { - [$tag, $id] = explode('#', $selector); - } - // Attribute - elseif (strpos($selector, '[') !== false && strpos($selector, ']') !== false) { - $open = strpos($selector, '['); - $close = strpos($selector, ']'); - - $tag = substr($selector, 0, $open); - $text = substr($selector, $open + 1, $close - 2); - - // We only support a single attribute currently - $text = explode(',', $text); - $text = trim(array_shift($text)); - - [$name, $value] = explode('=', $text); - - $name = trim($name); - $value = trim($value); - $attr = [$name => trim($value, '] ')]; - } - // Class? - elseif (strpos($selector, '.') !== false) { - [$tag, $class] = explode('.', $selector); - } - // Otherwise, assume the entire string is our tag - else { - $tag = $selector; - } - - return [ - 'tag' => $tag, - 'id' => $id, - 'class' => $class, - 'attr' => $attr, - ]; - } -} diff --git a/system4.4.6/Test/DatabaseTestTrait.php b/system4.4.6/Test/DatabaseTestTrait.php deleted file mode 100644 index 59dc5f82..00000000 --- a/system4.4.6/Test/DatabaseTestTrait.php +++ /dev/null @@ -1,344 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test; - -use CodeIgniter\Database\BaseBuilder; -use CodeIgniter\Database\Exceptions\DatabaseException; -use CodeIgniter\Test\Constraints\SeeInDatabase; -use Config\Database; -use Config\Migrations; -use Config\Services; - -/** - * DatabaseTestTrait - * - * Provides functionality for refreshing/seeding - * the database during testing. - * - * @mixin CIUnitTestCase - */ -trait DatabaseTestTrait -{ - /** - * Is db migration done once or more than once? - * - * @var bool - */ - private static $doneMigration = false; - - /** - * Is seeding done once or more than once? - * - * @var bool - */ - private static $doneSeed = false; - - // -------------------------------------------------------------------- - // Staging - // -------------------------------------------------------------------- - - /** - * Runs the trait set up methods. - */ - protected function setUpDatabase() - { - $this->loadDependencies(); - $this->setUpMigrate(); - $this->setUpSeed(); - } - - /** - * Runs the trait set up methods. - */ - protected function tearDownDatabase() - { - $this->clearInsertCache(); - } - - /** - * Load any database test dependencies. - */ - public function loadDependencies() - { - if ($this->db === null) { - $this->db = Database::connect($this->DBGroup); - $this->db->initialize(); - } - - if ($this->migrations === null) { - // Ensure that we can run migrations - $config = new Migrations(); - $config->enabled = true; - - $this->migrations = Services::migrations($config, $this->db, false); - $this->migrations->setSilent(false); - } - - if ($this->seeder === null) { - $this->seeder = Database::seeder($this->DBGroup); - $this->seeder->setSilent(true); - } - } - - // -------------------------------------------------------------------- - // Migrations - // -------------------------------------------------------------------- - - /** - * Migrate on setUp - */ - protected function setUpMigrate() - { - if ($this->migrateOnce === false || self::$doneMigration === false) { - if ($this->refresh === true) { - $this->regressDatabase(); - - // Reset counts on faked items - Fabricator::resetCounts(); - } - - $this->migrateDatabase(); - } - } - - /** - * Regress migrations as defined by the class - */ - protected function regressDatabase() - { - if ($this->migrate === false) { - return; - } - - // If no namespace was specified then rollback all - if ($this->namespace === null) { - $this->migrations->setNamespace(null); - $this->migrations->regress(0, 'tests'); - } - - // Regress each specified namespace - else { - $namespaces = is_array($this->namespace) ? $this->namespace : [$this->namespace]; - - foreach ($namespaces as $namespace) { - $this->migrations->setNamespace($namespace); - $this->migrations->regress(0, 'tests'); - } - } - } - - /** - * Run migrations as defined by the class - */ - protected function migrateDatabase() - { - if ($this->migrate === false) { - return; - } - - // If no namespace was specified then migrate all - if ($this->namespace === null) { - $this->migrations->setNamespace(null); - $this->migrations->latest('tests'); - self::$doneMigration = true; - } - // Run migrations for each specified namespace - else { - $namespaces = is_array($this->namespace) ? $this->namespace : [$this->namespace]; - - foreach ($namespaces as $namespace) { - $this->migrations->setNamespace($namespace); - $this->migrations->latest('tests'); - self::$doneMigration = true; - } - } - } - - // -------------------------------------------------------------------- - // Seeds - // -------------------------------------------------------------------- - - /** - * Seed on setUp - */ - protected function setUpSeed() - { - if ($this->seedOnce === false || self::$doneSeed === false) { - $this->runSeeds(); - } - } - - /** - * Run seeds as defined by the class - */ - protected function runSeeds() - { - if ($this->seed !== '') { - if ($this->basePath !== '') { - $this->seeder->setPath(rtrim($this->basePath, '/') . '/Seeds'); - } - - $seeds = is_array($this->seed) ? $this->seed : [$this->seed]; - - foreach ($seeds as $seed) { - $this->seed($seed); - } - } - - self::$doneSeed = true; - } - - /** - * Seeds that database with a specific seeder. - */ - public function seed(string $name) - { - $this->seeder->call($name); - } - - // -------------------------------------------------------------------- - // Utility - // -------------------------------------------------------------------- - - /** - * Reset $doneMigration and $doneSeed - * - * @afterClass - */ - public static function resetMigrationSeedCount() - { - self::$doneMigration = false; - self::$doneSeed = false; - } - - /** - * Removes any rows inserted via $this->hasInDatabase() - */ - protected function clearInsertCache() - { - foreach ($this->insertCache as $row) { - $this->db->table($row[0]) - ->where($row[1]) - ->delete(); - } - } - - /** - * Loads the Builder class appropriate for the current database. - * - * @return BaseBuilder - */ - public function loadBuilder(string $tableName) - { - $builderClass = str_replace('Connection', 'Builder', get_class($this->db)); - - return new $builderClass($tableName, $this->db); - } - - /** - * Fetches a single column from a database row with criteria - * matching $where. - * - * @return bool - * - * @throws DatabaseException - */ - public function grabFromDatabase(string $table, string $column, array $where) - { - $query = $this->db->table($table) - ->select($column) - ->where($where) - ->get(); - - $query = $query->getRow(); - - return $query->{$column} ?? false; - } - - // -------------------------------------------------------------------- - // Assertions - // -------------------------------------------------------------------- - - /** - * Asserts that records that match the conditions in $where DO - * exist in the database. - * - * @throws DatabaseException - */ - public function seeInDatabase(string $table, array $where) - { - $constraint = new SeeInDatabase($this->db, $where); - static::assertThat($table, $constraint); - } - - /** - * Asserts that records that match the conditions in $where do - * not exist in the database. - */ - public function dontSeeInDatabase(string $table, array $where) - { - $count = $this->db->table($table) - ->where($where) - ->countAllResults(); - - $this->assertTrue($count === 0, 'Row was found in database'); - } - - /** - * Inserts a row into to the database. This row will be removed - * after the test has run. - * - * @return bool - */ - public function hasInDatabase(string $table, array $data) - { - $this->insertCache[] = [ - $table, - $data, - ]; - - return $this->db->table($table)->insert($data); - } - - /** - * Asserts that the number of rows in the database that match $where - * is equal to $expected. - * - * @throws DatabaseException - */ - public function seeNumRecords(int $expected, string $table, array $where) - { - $count = $this->db->table($table) - ->where($where) - ->countAllResults(); - - $this->assertEquals($expected, $count, 'Wrong number of matching rows in database.'); - } - - /** - * Sets $DBDebug to false. - * - * WARNING: this value will persist! take care to roll it back. - */ - protected function disableDBDebug(): void - { - $this->setPrivateProperty($this->db, 'DBDebug', false); - } - - /** - * Sets $DBDebug to true. - */ - protected function enableDBDebug(): void - { - $this->setPrivateProperty($this->db, 'DBDebug', true); - } -} diff --git a/system4.4.6/Test/Fabricator.php b/system4.4.6/Test/Fabricator.php deleted file mode 100644 index c247b874..00000000 --- a/system4.4.6/Test/Fabricator.php +++ /dev/null @@ -1,546 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test; - -use CodeIgniter\Exceptions\FrameworkException; -use CodeIgniter\I18n\Time; -use CodeIgniter\Model; -use Config\App; -use Faker\Factory; -use Faker\Generator; -use InvalidArgumentException; -use RuntimeException; - -/** - * Fabricator - * - * Bridge class for using Faker to create example data based on - * model specifications. - * - * @see \CodeIgniter\Test\FabricatorTest - */ -class Fabricator -{ - /** - * Array of counts for fabricated items - * - * @var array - */ - protected static $tableCounts = []; - - /** - * Locale-specific Faker instance - * - * @var Generator - */ - protected $faker; - - /** - * Model instance (can be non-framework if it follows framework design) - * - * @var Model|object - */ - protected $model; - - /** - * Locale used to initialize Faker - * - * @var string - */ - protected $locale; - - /** - * Map of properties and their formatter to use - * - * @var array|null - */ - protected $formatters; - - /** - * Date fields present in the model - * - * @var array - */ - protected $dateFields = []; - - /** - * Array of data to add or override faked versions - * - * @var array - */ - protected $overrides = []; - - /** - * Array of single-use data to override faked versions - * - * @var array|null - */ - protected $tempOverrides; - - /** - * Default formatter to use when nothing is detected - * - * @var string - */ - public $defaultFormatter = 'word'; - - /** - * Store the model instance and initialize Faker to the locale. - * - * @param object|string $model Instance or classname of the model to use - * @param array|null $formatters Array of property => formatter - * @param string|null $locale Locale for Faker provider - * - * @throws InvalidArgumentException - */ - public function __construct($model, ?array $formatters = null, ?string $locale = null) - { - if (is_string($model)) { - // Create a new model instance - $model = model($model, false); - } - - if (! is_object($model)) { - throw new InvalidArgumentException(lang('Fabricator.invalidModel')); - } - - $this->model = $model; - - // If no locale was specified then use the App default - if ($locale === null) { - $locale = config(App::class)->defaultLocale; - } - - // There is no easy way to retrieve the locale from Faker so we will store it - $this->locale = $locale; - - // Create the locale-specific Generator - $this->faker = Factory::create($this->locale); - - // Determine eligible date fields - foreach (['createdField', 'updatedField', 'deletedField'] as $field) { - if (isset($this->model->{$field})) { - $this->dateFields[] = $this->model->{$field}; - } - } - - // Set the formatters - $this->setFormatters($formatters); - } - - /** - * Reset internal counts - */ - public static function resetCounts() - { - self::$tableCounts = []; - } - - /** - * Get the count for a specific table - * - * @param string $table Name of the target table - */ - public static function getCount(string $table): int - { - return ! isset(self::$tableCounts[$table]) ? 0 : self::$tableCounts[$table]; - } - - /** - * Set the count for a specific table - * - * @param string $table Name of the target table - * @param int $count Count value - * - * @return int The new count value - */ - public static function setCount(string $table, int $count): int - { - self::$tableCounts[$table] = $count; - - return $count; - } - - /** - * Increment the count for a table - * - * @param string $table Name of the target table - * - * @return int The new count value - */ - public static function upCount(string $table): int - { - return self::setCount($table, self::getCount($table) + 1); - } - - /** - * Decrement the count for a table - * - * @param string $table Name of the target table - * - * @return int The new count value - */ - public static function downCount(string $table): int - { - return self::setCount($table, self::getCount($table) - 1); - } - - /** - * Returns the model instance - * - * @return object Framework or compatible model - */ - public function getModel() - { - return $this->model; - } - - /** - * Returns the locale - */ - public function getLocale(): string - { - return $this->locale; - } - - /** - * Returns the Faker generator - */ - public function getFaker(): Generator - { - return $this->faker; - } - - /** - * Return and reset tempOverrides - */ - public function getOverrides(): array - { - $overrides = $this->tempOverrides ?? $this->overrides; - - $this->tempOverrides = $this->overrides; - - return $overrides; - } - - /** - * Set the overrides, once or persistent - * - * @param array $overrides Array of [field => value] - * @param bool $persist Whether these overrides should persist through the next operation - */ - public function setOverrides(array $overrides = [], $persist = true): self - { - if ($persist) { - $this->overrides = $overrides; - } - - $this->tempOverrides = $overrides; - - return $this; - } - - /** - * Returns the current formatters - */ - public function getFormatters(): ?array - { - return $this->formatters; - } - - /** - * Set the formatters to use. Will attempt to autodetect if none are available. - * - * @param array|null $formatters Array of [field => formatter], or null to detect - */ - public function setFormatters(?array $formatters = null): self - { - if ($formatters !== null) { - $this->formatters = $formatters; - } elseif (method_exists($this->model, 'fake')) { - $this->formatters = null; - } else { - $this->detectFormatters(); - } - - return $this; - } - - /** - * Try to identify the appropriate Faker formatter for each field. - */ - protected function detectFormatters(): self - { - $this->formatters = []; - - if (isset($this->model->allowedFields)) { - foreach ($this->model->allowedFields as $field) { - $this->formatters[$field] = $this->guessFormatter($field); - } - } - - return $this; - } - - /** - * Guess at the correct formatter to match a field name. - * - * @param string $field Name of the field - * - * @return string Name of the formatter - */ - protected function guessFormatter($field): string - { - // First check for a Faker formatter of the same name - covers things like "email" - try { - $this->faker->getFormatter($field); - - return $field; - } catch (InvalidArgumentException $e) { - // No match, keep going - } - - // Next look for known model fields - if (in_array($field, $this->dateFields, true)) { - switch ($this->model->dateFormat) { - case 'datetime': - case 'date': - return 'date'; - - case 'int': - return 'unixTime'; - } - } elseif ($field === $this->model->primaryKey) { - return 'numberBetween'; - } - - // Check some common partials - foreach (['email', 'name', 'title', 'text', 'date', 'url'] as $term) { - if (stripos($field, $term) !== false) { - return $term; - } - } - - if (stripos($field, 'phone') !== false) { - return 'phoneNumber'; - } - - // Nothing left, use the default - return $this->defaultFormatter; - } - - /** - * Generate new entities with faked data - * - * @param int|null $count Optional number to create a collection - * - * @return array|object An array or object (based on returnType), or an array of returnTypes - */ - public function make(?int $count = null) - { - // If a singleton was requested then go straight to it - if ($count === null) { - return $this->model->returnType === 'array' - ? $this->makeArray() - : $this->makeObject(); - } - - $return = []; - - for ($i = 0; $i < $count; $i++) { - $return[] = $this->model->returnType === 'array' - ? $this->makeArray() - : $this->makeObject(); - } - - return $return; - } - - /** - * Generate an array of faked data - * - * @return array An array of faked data - * - * @throws RuntimeException - */ - public function makeArray() - { - if ($this->formatters !== null) { - $result = []; - - foreach ($this->formatters as $field => $formatter) { - $result[$field] = $this->faker->{$formatter}(); - } - } - // If no formatters were defined then look for a model fake() method - elseif (method_exists($this->model, 'fake')) { - $result = $this->model->fake($this->faker); - - $result = is_object($result) && method_exists($result, 'toArray') - // This should cover entities - ? $result->toArray() - // Try to cast it - : (array) $result; - } - // Nothing left to do but give up - else { - throw new RuntimeException(lang('Fabricator.missingFormatters')); - } - - // Replace overridden fields - return array_merge($result, $this->getOverrides()); - } - - /** - * Generate an object of faked data - * - * @param string|null $className Class name of the object to create; null to use model default - * - * @return object An instance of the class with faked data - * - * @throws RuntimeException - */ - public function makeObject(?string $className = null): object - { - if ($className === null) { - if ($this->model->returnType === 'object' || $this->model->returnType === 'array') { - $className = 'stdClass'; - } else { - $className = $this->model->returnType; - } - } - - // If using the model's fake() method then check it for the correct return type - if ($this->formatters === null && method_exists($this->model, 'fake')) { - $result = $this->model->fake($this->faker); - - if ($result instanceof $className) { - // Set overrides manually - foreach ($this->getOverrides() as $key => $value) { - $result->{$key} = $value; - } - - return $result; - } - } - - // Get the array values and apply them to the object - $array = $this->makeArray(); - $object = new $className(); - - // Check for the entity method - if (method_exists($object, 'fill')) { - $object->fill($array); - } else { - foreach ($array as $key => $value) { - $object->{$key} = $value; - } - } - - return $object; - } - - /** - * Generate new entities from the database - * - * @param int|null $count Optional number to create a collection - * @param bool $mock Whether to execute or mock the insertion - * - * @return array|object An array or object (based on returnType), or an array of returnTypes - * - * @throws FrameworkException - */ - public function create(?int $count = null, bool $mock = false) - { - // Intercept mock requests - if ($mock) { - return $this->createMock($count); - } - - $ids = []; - - // Iterate over new entities and insert each one, storing insert IDs - foreach ($this->make($count ?? 1) as $result) { - if ($id = $this->model->insert($result, true)) { - $ids[] = $id; - self::upCount($this->model->table); - - continue; - } - - throw FrameworkException::forFabricatorCreateFailed($this->model->table, implode(' ', $this->model->errors() ?? [])); - } - - // If the model defines a "withDeleted" method for handling soft deletes then use it - if (method_exists($this->model, 'withDeleted')) { - $this->model->withDeleted(); - } - - return $this->model->find($count === null ? reset($ids) : $ids); - } - - /** - * Generate new database entities without actually inserting them - * - * @param int|null $count Optional number to create a collection - * - * @return array|object An array or object (based on returnType), or an array of returnTypes - */ - protected function createMock(?int $count = null) - { - switch ($this->model->dateFormat) { - case 'datetime': - $datetime = date('Y-m-d H:i:s'); - break; - - case 'date': - $datetime = date('Y-m-d'); - break; - - default: - $datetime = Time::now()->getTimestamp(); - } - - // Determine which fields we will need - $fields = []; - - if ($this->model->useTimestamps) { - $fields[$this->model->createdField] = $datetime; - $fields[$this->model->updatedField] = $datetime; - } - - if ($this->model->useSoftDeletes) { - $fields[$this->model->deletedField] = null; - } - - // Iterate over new entities and add the necessary fields - $return = []; - - foreach ($this->make($count ?? 1) as $i => $result) { - // Set the ID - $fields[$this->model->primaryKey] = $i; - - // Merge fields - if (is_array($result)) { - $result = array_merge($result, $fields); - } else { - foreach ($fields as $key => $value) { - $result->{$key} = $value; - } - } - - $return[] = $result; - } - - return $count === null ? reset($return) : $return; - } -} diff --git a/system4.4.6/Test/FeatureResponse.php b/system4.4.6/Test/FeatureResponse.php deleted file mode 100644 index 971f41c5..00000000 --- a/system4.4.6/Test/FeatureResponse.php +++ /dev/null @@ -1,25 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test; - -/** - * Assertions for a response - * - * @deprecated Use TestResponse directly - */ -class FeatureResponse extends TestResponse -{ - /** - * @deprecated Will be protected in a future release, use response() instead - */ - public $response; -} diff --git a/system4.4.6/Test/FeatureTestCase.php b/system4.4.6/Test/FeatureTestCase.php deleted file mode 100644 index fff624a8..00000000 --- a/system4.4.6/Test/FeatureTestCase.php +++ /dev/null @@ -1,395 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test; - -use CodeIgniter\Events\Events; -use CodeIgniter\HTTP\CLIRequest; -use CodeIgniter\HTTP\Exceptions\RedirectException; -use CodeIgniter\HTTP\IncomingRequest; -use CodeIgniter\HTTP\URI; -use CodeIgniter\HTTP\UserAgent; -use Config\App; -use Config\Services; -use Exception; -use ReflectionException; - -/** - * Class FeatureTestCase - * - * Provides a base class with the trait for doing full HTTP testing - * against your application. - * - * @no-final - * - * @deprecated Use FeatureTestTrait instead - * - * @codeCoverageIgnore - * - * @internal - */ -class FeatureTestCase extends CIUnitTestCase -{ - use DatabaseTestTrait; - - /** - * Sets a RouteCollection that will override - * the application's route collection. - * - * Example routes: - * [ - * ['get', 'home', 'Home::index'] - * ] - * - * @return $this - */ - protected function withRoutes(?array $routes = null) - { - $collection = Services::routes(); - - if ($routes !== null) { - $collection->resetRoutes(); - - foreach ($routes as $route) { - $collection->{$route[0]}($route[1], $route[2]); - } - } - - $this->routes = $collection; - - return $this; - } - - /** - * Sets any values that should exist during this session. - * - * @param array|null $values Array of values, or null to use the current $_SESSION - * - * @return $this - */ - public function withSession(?array $values = null) - { - $this->session = $values ?? $_SESSION; - - return $this; - } - - /** - * Set request's headers - * - * Example of use - * withHeaders([ - * 'Authorization' => 'Token' - * ]) - * - * @param array $headers Array of headers - * - * @return $this - */ - public function withHeaders(array $headers = []) - { - $this->headers = $headers; - - return $this; - } - - /** - * Set the format the request's body should have. - * - * @param string $format The desired format. Currently supported formats: xml, json - * - * @return $this - */ - public function withBodyFormat(string $format) - { - $this->bodyFormat = $format; - - return $this; - } - - /** - * Set the raw body for the request - * - * @param mixed $body - * - * @return $this - */ - public function withBody($body) - { - $this->requestBody = $body; - - return $this; - } - - /** - * Don't run any events while running this test. - * - * @return $this - */ - public function skipEvents() - { - Events::simulate(true); - - return $this; - } - - /** - * Calls a single URI, executes it, and returns a FeatureResponse - * instance that can be used to run many assertions against. - * - * @return FeatureResponse - */ - public function call(string $method, string $path, ?array $params = null) - { - $buffer = \ob_get_level(); - - // Clean up any open output buffers - // not relevant to unit testing - if (\ob_get_level() > 0 && (! isset($this->clean) || $this->clean === true)) { - \ob_end_clean(); // @codeCoverageIgnore - } - - // Simulate having a blank session - $_SESSION = []; - $_SERVER['REQUEST_METHOD'] = $method; - - $request = $this->setupRequest($method, $path); - $request = $this->setupHeaders($request); - $request = $this->populateGlobals($method, $request, $params); - $request = $this->setRequestBody($request); - - // Initialize the RouteCollection - if (! $routes = $this->routes) { - $routes = Services::routes()->loadRoutes(); - } - - $routes->setHTTPVerb($method); - - // Make sure any other classes that might call the request - // instance get the right one. - Services::injectMock('request', $request); - - // Make sure filters are reset between tests - Services::injectMock('filters', Services::filters(null, false)); - - $response = $this->app - ->setContext('web') - ->setRequest($request) - ->run($routes, true); - - $output = \ob_get_contents(); - if (($response->getBody() === null) && ! ($output === '' || $output === false)) { - $response->setBody($output); - } - - // Reset directory if it has been set - Services::router()->setDirectory(null); - - // Ensure the output buffer is identical so no tests are risky - while (\ob_get_level() > $buffer) { - \ob_end_clean(); // @codeCoverageIgnore - } - - while (\ob_get_level() < $buffer) { - \ob_start(); // @codeCoverageIgnore - } - - return new FeatureResponse($response); - } - - /** - * Performs a GET request. - * - * @return FeatureResponse - * - * @throws Exception - * @throws RedirectException - */ - public function get(string $path, ?array $params = null) - { - return $this->call('get', $path, $params); - } - - /** - * Performs a POST request. - * - * @return FeatureResponse - * - * @throws Exception - * @throws RedirectException - */ - public function post(string $path, ?array $params = null) - { - return $this->call('post', $path, $params); - } - - /** - * Performs a PUT request - * - * @return FeatureResponse - * - * @throws Exception - * @throws RedirectException - */ - public function put(string $path, ?array $params = null) - { - return $this->call('put', $path, $params); - } - - /** - * Performss a PATCH request - * - * @return FeatureResponse - * - * @throws Exception - * @throws RedirectException - */ - public function patch(string $path, ?array $params = null) - { - return $this->call('patch', $path, $params); - } - - /** - * Performs a DELETE request. - * - * @return FeatureResponse - * - * @throws Exception - * @throws RedirectException - */ - public function delete(string $path, ?array $params = null) - { - return $this->call('delete', $path, $params); - } - - /** - * Performs an OPTIONS request. - * - * @return FeatureResponse - * - * @throws Exception - * @throws RedirectException - */ - public function options(string $path, ?array $params = null) - { - return $this->call('options', $path, $params); - } - - /** - * Setup a Request object to use so that CodeIgniter - * won't try to auto-populate some of the items. - */ - protected function setupRequest(string $method, ?string $path = null): IncomingRequest - { - $config = config(App::class); - $uri = new URI(rtrim($config->baseURL, '/') . '/' . trim($path, '/ ')); - - $request = new IncomingRequest($config, clone $uri, null, new UserAgent()); - $request->uri = $uri; - - $request->setMethod($method); - $request->setProtocolVersion('1.1'); - - if ($config->forceGlobalSecureRequests) { - $_SERVER['HTTPS'] = 'test'; - } - - return $request; - } - - /** - * Setup the custom request's headers - * - * @return IncomingRequest - */ - protected function setupHeaders(IncomingRequest $request) - { - foreach ($this->headers as $name => $value) { - $request->setHeader($name, $value); - } - - return $request; - } - - /** - * Populates the data of our Request with "global" data - * relevant to the request, like $_POST data. - * - * Always populate the GET vars based on the URI. - * - * @param CLIRequest|IncomingRequest $request - * - * @return CLIRequest|IncomingRequest - * - * @throws ReflectionException - */ - protected function populateGlobals(string $method, $request, ?array $params = null) - { - // $params should set the query vars if present, - // otherwise set it from the URL. - $get = ($params !== null && $params !== [] && $method === 'get') - ? $params - : $this->getPrivateProperty($request->getUri(), 'query'); - - $request->setGlobal('get', $get); - if ($method !== 'get') { - $request->setGlobal($method, $params); - } - - $request->setGlobal('request', $params); - - $_SESSION = $this->session ?? []; - - return $request; - } - - /** - * Set the request's body formatted according to the value in $this->bodyFormat. - * This allows the body to be formatted in a way that the controller is going to - * expect as in the case of testing a JSON or XML API. - * - * @param CLIRequest|IncomingRequest $request - * @param array|null $params The parameters to be formatted and put in the body. If this is empty, it will get the - * what has been loaded into the request global of the request class. - * - * @return CLIRequest|IncomingRequest - */ - protected function setRequestBody($request, ?array $params = null) - { - if (isset($this->requestBody) && $this->requestBody !== '') { - $request->setBody($this->requestBody); - - return $request; - } - - if (isset($this->bodyFormat) && $this->bodyFormat !== '') { - if ($params === null || $params === []) { - $params = $request->fetchGlobal('request'); - } - - $formatMime = ''; - - if ($this->bodyFormat === 'json') { - $formatMime = 'application/json'; - } elseif ($this->bodyFormat === 'xml') { - $formatMime = 'application/xml'; - } - - if ($formatMime !== '' && ! ($params === null || $params === [])) { - $formatted = Services::format()->getFormatter($formatMime)->format($params); - $request->setBody($formatted); - $request->setHeader('Content-Type', $formatMime); - } - } - - return $request; - } -} diff --git a/system4.4.6/Test/FeatureTestTrait.php b/system4.4.6/Test/FeatureTestTrait.php deleted file mode 100644 index 565e4e89..00000000 --- a/system4.4.6/Test/FeatureTestTrait.php +++ /dev/null @@ -1,397 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test; - -use CodeIgniter\Events\Events; -use CodeIgniter\HTTP\Exceptions\RedirectException; -use CodeIgniter\HTTP\IncomingRequest; -use CodeIgniter\HTTP\Request; -use CodeIgniter\HTTP\SiteURI; -use CodeIgniter\HTTP\URI; -use Config\App; -use Config\Services; -use Exception; -use ReflectionException; - -/** - * Trait FeatureTestTrait - * - * Provides additional utilities for doing full HTTP testing - * against your application in trait format. - */ -trait FeatureTestTrait -{ - /** - * Sets a RouteCollection that will override - * the application's route collection. - * - * Example routes: - * [ - * ['get', 'home', 'Home::index'] - * ] - * - * @param array|null $routes Array to set routes - * - * @return $this - */ - protected function withRoutes(?array $routes = null) - { - $collection = Services::routes(); - - if ($routes !== null) { - $collection->resetRoutes(); - - foreach ($routes as $route) { - if (isset($route[3])) { - $collection->{$route[0]}($route[1], $route[2], $route[3]); - } else { - $collection->{$route[0]}($route[1], $route[2]); - } - } - } - - $this->routes = $collection; - - return $this; - } - - /** - * Sets any values that should exist during this session. - * - * @param array|null $values Array of values, or null to use the current $_SESSION - * - * @return $this - */ - public function withSession(?array $values = null) - { - $this->session = $values ?? $_SESSION; - - return $this; - } - - /** - * Set request's headers - * - * Example of use - * withHeaders([ - * 'Authorization' => 'Token' - * ]) - * - * @param array $headers Array of headers - * - * @return $this - */ - public function withHeaders(array $headers = []) - { - $this->headers = $headers; - - return $this; - } - - /** - * Set the format the request's body should have. - * - * @param string $format The desired format. Currently supported formats: xml, json - * - * @return $this - */ - public function withBodyFormat(string $format) - { - $this->bodyFormat = $format; - - return $this; - } - - /** - * Set the raw body for the request - * - * @param string $body - * - * @return $this - */ - public function withBody($body) - { - $this->requestBody = $body; - - return $this; - } - - /** - * Don't run any events while running this test. - * - * @return $this - */ - public function skipEvents() - { - Events::simulate(true); - - return $this; - } - - /** - * Calls a single URI, executes it, and returns a TestResponse - * instance that can be used to run many assertions against. - * - * @param string $method HTTP verb - * - * @return TestResponse - */ - public function call(string $method, string $path, ?array $params = null) - { - // Simulate having a blank session - $_SESSION = []; - $_SERVER['REQUEST_METHOD'] = $method; - - $request = $this->setupRequest($method, $path); - $request = $this->setupHeaders($request); - $request = $this->populateGlobals($method, $request, $params); - $request = $this->setRequestBody($request, $params); - - // Initialize the RouteCollection - if (! $routes = $this->routes) { - $routes = Services::routes()->loadRoutes(); - } - - $routes->setHTTPVerb($method); - - // Make sure any other classes that might call the request - // instance get the right one. - Services::injectMock('request', $request); - - // Make sure filters are reset between tests - Services::injectMock('filters', Services::filters(null, false)); - - // Make sure validation is reset between tests - Services::injectMock('validation', Services::validation(null, false)); - - $response = $this->app - ->setContext('web') - ->setRequest($request) - ->run($routes, true); - - // Reset directory if it has been set - Services::router()->setDirectory(null); - - return new TestResponse($response); - } - - /** - * Performs a GET request. - * - * @param string $path URI path relative to baseURL. May include query. - * - * @return TestResponse - * - * @throws RedirectException - * @throws Exception - */ - public function get(string $path, ?array $params = null) - { - return $this->call('get', $path, $params); - } - - /** - * Performs a POST request. - * - * @return TestResponse - * - * @throws RedirectException - * @throws Exception - */ - public function post(string $path, ?array $params = null) - { - return $this->call('post', $path, $params); - } - - /** - * Performs a PUT request - * - * @return TestResponse - * - * @throws RedirectException - * @throws Exception - */ - public function put(string $path, ?array $params = null) - { - return $this->call('put', $path, $params); - } - - /** - * Performss a PATCH request - * - * @return TestResponse - * - * @throws RedirectException - * @throws Exception - */ - public function patch(string $path, ?array $params = null) - { - return $this->call('patch', $path, $params); - } - - /** - * Performs a DELETE request. - * - * @return TestResponse - * - * @throws RedirectException - * @throws Exception - */ - public function delete(string $path, ?array $params = null) - { - return $this->call('delete', $path, $params); - } - - /** - * Performs an OPTIONS request. - * - * @return TestResponse - * - * @throws RedirectException - * @throws Exception - */ - public function options(string $path, ?array $params = null) - { - return $this->call('options', $path, $params); - } - - /** - * Setup a Request object to use so that CodeIgniter - * won't try to auto-populate some of the items. - * - * @param string $method HTTP verb - */ - protected function setupRequest(string $method, ?string $path = null): IncomingRequest - { - $config = config(App::class); - $uri = new SiteURI($config); - - // $path may have a query in it - $path = URI::removeDotSegments($path); - $parts = explode('?', $path); - $path = $parts[0]; - $query = $parts[1] ?? ''; - - $superglobals = Services::superglobals(); - $superglobals->setServer('QUERY_STRING', $query); - - $uri->setPath($path); - $uri->setQuery($query); - - Services::injectMock('uri', $uri); - - $request = Services::incomingrequest($config, false); - - $request->setMethod($method); - $request->setProtocolVersion('1.1'); - - if ($config->forceGlobalSecureRequests) { - $_SERVER['HTTPS'] = 'test'; - $server = $request->getServer(); - $server['HTTPS'] = 'test'; - $request->setGlobal('server', $server); - } - - return $request; - } - - /** - * Setup the custom request's headers - * - * @return IncomingRequest - */ - protected function setupHeaders(IncomingRequest $request) - { - if (! empty($this->headers)) { - foreach ($this->headers as $name => $value) { - $request->setHeader($name, $value); - } - } - - return $request; - } - - /** - * Populates the data of our Request with "global" data - * relevant to the request, like $_POST data. - * - * Always populate the GET vars based on the URI. - * - * @param string $method HTTP verb - * @param non-empty-array|null $params - * - * @return Request - * - * @throws ReflectionException - */ - protected function populateGlobals(string $method, Request $request, ?array $params = null) - { - // $params should set the query vars if present, - // otherwise set it from the URL. - $get = ($params !== null && $params !== [] && $method === 'get') - ? $params - : $this->getPrivateProperty($request->getUri(), 'query'); - - $request->setGlobal('get', $get); - - if ($method === 'get') { - $request->setGlobal('request', $request->fetchGlobal('get')); - } - - if ($method === 'post') { - $request->setGlobal($method, $params); - $request->setGlobal( - 'request', - $request->fetchGlobal('post') + $request->fetchGlobal('get') - ); - } - - $_SESSION = $this->session ?? []; - - return $request; - } - - /** - * Set the request's body formatted according to the value in $this->bodyFormat. - * This allows the body to be formatted in a way that the controller is going to - * expect as in the case of testing a JSON or XML API. - * - * @param array|null $params The parameters to be formatted and put in the body. - */ - protected function setRequestBody(Request $request, ?array $params = null): Request - { - if ($this->requestBody !== '') { - $request->setBody($this->requestBody); - } - - if ($this->bodyFormat !== '') { - $formatMime = ''; - if ($this->bodyFormat === 'json') { - $formatMime = 'application/json'; - } elseif ($this->bodyFormat === 'xml') { - $formatMime = 'application/xml'; - } - - if ($formatMime !== '') { - $request->setHeader('Content-Type', $formatMime); - } - - if ($params !== null && $formatMime !== '') { - $formatted = Services::format()->getFormatter($formatMime)->format($params); - // "withBodyFormat() and $params of call()" has higher priority than withBody(). - $request->setBody($formatted); - } - } - - return $request; - } -} diff --git a/system4.4.6/Test/FilterTestTrait.php b/system4.4.6/Test/FilterTestTrait.php deleted file mode 100644 index 523717e5..00000000 --- a/system4.4.6/Test/FilterTestTrait.php +++ /dev/null @@ -1,308 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test; - -use Closure; -use CodeIgniter\Filters\Exceptions\FilterException; -use CodeIgniter\Filters\FilterInterface; -use CodeIgniter\Filters\Filters; -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\ResponseInterface; -use CodeIgniter\Router\RouteCollection; -use Config\Filters as FiltersConfig; -use Config\Services; -use InvalidArgumentException; -use RuntimeException; - -/** - * Filter Test Trait - * - * Provides functionality for testing - * filters and their route associations. - * - * @mixin CIUnitTestCase - */ -trait FilterTestTrait -{ - /** - * Have the one-time classes been instantiated? - * - * @var bool - */ - private $doneFilterSetUp = false; - - /** - * The active IncomingRequest or CLIRequest - * - * @var RequestInterface - */ - protected $request; - - /** - * The active Response instance - * - * @var ResponseInterface - */ - protected $response; - - /** - * The Filters configuration to use. - * Extracted for access to aliases - * during Filters::discoverFilters(). - * - * @var FiltersConfig|null - */ - protected $filtersConfig; - - /** - * The prepared Filters library. - * - * @var Filters|null - */ - protected $filters; - - /** - * The default App and discovered - * routes to check for filters. - * - * @var RouteCollection|null - */ - protected $collection; - - // -------------------------------------------------------------------- - // Staging - // -------------------------------------------------------------------- - - /** - * Initializes dependencies once. - */ - protected function setUpFilterTestTrait(): void - { - if ($this->doneFilterSetUp === true) { - return; - } - - // Create our own Request and Response so we can - // use the same ones for Filters and FilterInterface - // yet isolate them from outside influence - $this->request ??= clone Services::request(); - $this->response ??= clone Services::response(); - - // Create our config and Filters instance to reuse for performance - $this->filtersConfig ??= config(FiltersConfig::class); - $this->filters ??= new Filters($this->filtersConfig, $this->request, $this->response); - - if ($this->collection === null) { - $this->collection = Services::routes()->loadRoutes(); - } - - $this->doneFilterSetUp = true; - } - - // -------------------------------------------------------------------- - // Utility - // -------------------------------------------------------------------- - - /** - * Returns a callable method for a filter position - * using the local HTTP instances. - * - * @param FilterInterface|string $filter The filter instance, class, or alias - * @param string $position "before" or "after" - */ - protected function getFilterCaller($filter, string $position): Closure - { - if (! in_array($position, ['before', 'after'], true)) { - throw new InvalidArgumentException('Invalid filter position passed: ' . $position); - } - - if ($filter instanceof FilterInterface) { - $filterInstances = [$filter]; - } - - if (is_string($filter)) { - // Check for an alias (no namespace) - if (strpos($filter, '\\') === false) { - if (! isset($this->filtersConfig->aliases[$filter])) { - throw new RuntimeException("No filter found with alias '{$filter}'"); - } - - $filterClasses = (array) $this->filtersConfig->aliases[$filter]; - } else { - // FQCN - $filterClasses = [$filter]; - } - - $filterInstances = []; - - foreach ($filterClasses as $class) { - // Get an instance - $filter = new $class(); - - if (! $filter instanceof FilterInterface) { - throw FilterException::forIncorrectInterface(get_class($filter)); - } - - $filterInstances[] = $filter; - } - } - - $request = clone $this->request; - - if ($position === 'before') { - return static function (?array $params = null) use ($filterInstances, $request) { - foreach ($filterInstances as $filter) { - $result = $filter->before($request, $params); - - // @TODO The following logic is in Filters class. - // Should use Filters class. - if ($result instanceof RequestInterface) { - $request = $result; - - continue; - } - if ($result instanceof ResponseInterface) { - return $result; - } - if (empty($result)) { - continue; - } - } - - return $result; - }; - } - - $response = clone $this->response; - - return static function (?array $params = null) use ($filterInstances, $request, $response) { - foreach ($filterInstances as $filter) { - $result = $filter->after($request, $response, $params); - - // @TODO The following logic is in Filters class. - // Should use Filters class. - if ($result instanceof ResponseInterface) { - $response = $result; - - continue; - } - } - - return $result; - }; - } - - /** - * Gets an array of filter aliases enabled - * for the given route at position. - * - * @param string $route The route to test - * @param string $position "before" or "after" - * - * @return string[] The filter aliases - */ - protected function getFiltersForRoute(string $route, string $position): array - { - if (! in_array($position, ['before', 'after'], true)) { - throw new InvalidArgumentException('Invalid filter position passed:' . $position); - } - - $this->filters->reset(); - - if ($routeFilters = $this->collection->getFiltersForRoute($route)) { - $this->filters->enableFilters($routeFilters, $position); - } - - $aliases = $this->filters->initialize($route)->getFilters(); - - $this->filters->reset(); - - return $aliases[$position]; - } - - // -------------------------------------------------------------------- - // Assertions - // -------------------------------------------------------------------- - - /** - * Asserts that the given route at position uses - * the filter (by its alias). - * - * @param string $route The route to test - * @param string $position "before" or "after" - * @param string $alias Alias for the anticipated filter - */ - protected function assertFilter(string $route, string $position, string $alias): void - { - $filters = $this->getFiltersForRoute($route, $position); - - $this->assertContains( - $alias, - $filters, - "Filter '{$alias}' does not apply to '{$route}'.", - ); - } - - /** - * Asserts that the given route at position does not - * use the filter (by its alias). - * - * @param string $route The route to test - * @param string $position "before" or "after" - * @param string $alias Alias for the anticipated filter - */ - protected function assertNotFilter(string $route, string $position, string $alias) - { - $filters = $this->getFiltersForRoute($route, $position); - - $this->assertNotContains( - $alias, - $filters, - "Filter '{$alias}' applies to '{$route}' when it should not.", - ); - } - - /** - * Asserts that the given route at position has - * at least one filter set. - * - * @param string $route The route to test - * @param string $position "before" or "after" - */ - protected function assertHasFilters(string $route, string $position) - { - $filters = $this->getFiltersForRoute($route, $position); - - $this->assertNotEmpty( - $filters, - "No filters found for '{$route}' when at least one was expected.", - ); - } - - /** - * Asserts that the given route at position has - * no filters set. - * - * @param string $route The route to test - * @param string $position "before" or "after" - */ - protected function assertNotHasFilters(string $route, string $position) - { - $filters = $this->getFiltersForRoute($route, $position); - - $this->assertSame( - [], - $filters, - "Found filters for '{$route}' when none were expected: " . implode(', ', $filters) . '.', - ); - } -} diff --git a/system4.4.6/Test/Filters/CITestStreamFilter.php b/system4.4.6/Test/Filters/CITestStreamFilter.php deleted file mode 100644 index edcd4dbf..00000000 --- a/system4.4.6/Test/Filters/CITestStreamFilter.php +++ /dev/null @@ -1,102 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Filters; - -use php_user_filter; - -/** - * Used to capture output during unit testing, so that it can - * be used in assertions. - */ -class CITestStreamFilter extends php_user_filter -{ - /** - * Buffer to capture stream content. - * - * @var string - */ - public static $buffer = ''; - - protected static bool $registered = false; - - /** - * @var resource|null - */ - private static $err; - - /** - * @var resource|null - */ - private static $out; - - /** - * This method is called whenever data is read from or written to the - * attached stream (such as with fread() or fwrite()). - * - * @param resource $in - * @param resource $out - * @param int $consumed - * @param bool $closing - */ - public function filter($in, $out, &$consumed, $closing): int - { - while ($bucket = stream_bucket_make_writeable($in)) { - static::$buffer .= $bucket->data; - - $consumed += $bucket->datalen; - } - - return PSFS_PASS_ON; - } - - public static function registration(): void - { - if (! static::$registered) { - static::$registered = stream_filter_register('CITestStreamFilter', self::class); // @codeCoverageIgnore - } - - static::$buffer = ''; - } - - public static function addErrorFilter(): void - { - self::removeFilter(self::$err); - self::$err = stream_filter_append(STDERR, 'CITestStreamFilter'); - } - - public static function addOutputFilter(): void - { - self::removeFilter(self::$out); - self::$out = stream_filter_append(STDOUT, 'CITestStreamFilter'); - } - - public static function removeErrorFilter(): void - { - self::removeFilter(self::$err); - } - - public static function removeOutputFilter(): void - { - self::removeFilter(self::$out); - } - - /** - * @param resource $stream - */ - protected static function removeFilter(&$stream): void - { - if (is_resource($stream)) { - stream_filter_remove($stream); - $stream = null; - } - } -} diff --git a/system4.4.6/Test/IniTestTrait.php b/system4.4.6/Test/IniTestTrait.php deleted file mode 100644 index 5820cfc1..00000000 --- a/system4.4.6/Test/IniTestTrait.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test; - -trait IniTestTrait -{ - private array $iniSettings = []; - - private function backupIniValues(array $keys): void - { - foreach ($keys as $key) { - $this->iniSettings[$key] = ini_get($key); - } - } - - private function restoreIniValues(): void - { - foreach ($this->iniSettings as $key => $value) { - ini_set($key, $value); - } - - $this->iniSettings = []; - } -} diff --git a/system4.4.6/Test/Interfaces/FabricatorModel.php b/system4.4.6/Test/Interfaces/FabricatorModel.php deleted file mode 100644 index 7173838a..00000000 --- a/system4.4.6/Test/Interfaces/FabricatorModel.php +++ /dev/null @@ -1,84 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Interfaces; - -use Faker\Generator; -use ReflectionException; - -/** - * FabricatorModel - * - * An interface defining the required methods and properties - * needed for a model to qualify for use with the Fabricator class. - * While interfaces cannot enforce properties, the following - * are required for use with Fabricator: - * - * @property string $returnType - * @property string $primaryKey - * @property string $dateFormat - */ -interface FabricatorModel -{ - /** - * Fetches the row of database from $this->table with a primary key - * matching $id. - * - * @param array|mixed|null $id One primary key or an array of primary keys - * - * @return array|object|null The resulting row of data, or null. - */ - public function find($id = null); - - /** - * Inserts data into the current table. If an object is provided, - * it will attempt to convert it to an array. - * - * @param array|object $data - * @param bool $returnID Whether insert ID should be returned or not. - * - * @return bool|int|string - * - * @throws ReflectionException - */ - public function insert($data = null, bool $returnID = true); - - /** - * The following properties and methods are optional, but if present should - * adhere to their definitions. - * - * @property array $allowedFields - * @property string $useSoftDeletes - * @property string $useTimestamps - * @property string $createdField - * @property string $updatedField - * @property string $deletedField - */ - - /* - * Sets $useSoftDeletes value so that we can temporarily override - * the softdeletes settings. Can be used for all find* methods. - * - * @param bool $val - * - * @return Model - */ - // public function withDeleted($val = true); - - /** - * Faked data for Fabricator. - * - * @param Generator $faker - * - * @return array|object - */ - // public function fake(Generator &$faker); -} diff --git a/system4.4.6/Test/Mock/MockAppConfig.php b/system4.4.6/Test/Mock/MockAppConfig.php deleted file mode 100644 index 0f1d5bf5..00000000 --- a/system4.4.6/Test/Mock/MockAppConfig.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Mock; - -use Config\App; - -class MockAppConfig extends App -{ - public string $baseURL = 'http://example.com/'; - public string $uriProtocol = 'REQUEST_URI'; - public array $proxyIPs = []; - public bool $CSPEnabled = false; - public string $defaultLocale = 'en'; - public bool $negotiateLocale = false; - public array $supportedLocales = [ - 'en', - 'es', - ]; -} diff --git a/system4.4.6/Test/Mock/MockAutoload.php b/system4.4.6/Test/Mock/MockAutoload.php deleted file mode 100644 index 291974c6..00000000 --- a/system4.4.6/Test/Mock/MockAutoload.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Mock; - -use Config\Autoload; - -class MockAutoload extends Autoload -{ - public $psr4 = []; - public $classmap = []; - - public function __construct() - { - // Don't call the parent since we don't want the default mappings. - // parent::__construct(); - } -} diff --git a/system4.4.6/Test/Mock/MockBuilder.php b/system4.4.6/Test/Mock/MockBuilder.php deleted file mode 100644 index ae28190b..00000000 --- a/system4.4.6/Test/Mock/MockBuilder.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Mock; - -use CodeIgniter\Database\BaseBuilder; - -class MockBuilder extends BaseBuilder -{ - protected $supportedIgnoreStatements = [ - 'update' => 'IGNORE', - 'insert' => 'IGNORE', - 'delete' => 'IGNORE', - ]; -} diff --git a/system4.4.6/Test/Mock/MockCLIConfig.php b/system4.4.6/Test/Mock/MockCLIConfig.php deleted file mode 100644 index a1756f41..00000000 --- a/system4.4.6/Test/Mock/MockCLIConfig.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Mock; - -use Config\App; - -class MockCLIConfig extends App -{ - public string $baseURL = 'http://example.com/'; - public string $uriProtocol = 'REQUEST_URI'; - public array $proxyIPs = []; - public string $CSRFTokenName = 'csrf_test_name'; - public string $CSRFCookieName = 'csrf_cookie_name'; - public int $CSRFExpire = 7200; - public bool $CSRFRegenerate = true; - public $CSRFExcludeURIs = ['http://example.com']; - public string $CSRFSameSite = 'Lax'; - public bool $CSPEnabled = false; - public string $defaultLocale = 'en'; - public bool $negotiateLocale = false; - public array $supportedLocales = [ - 'en', - 'es', - ]; -} diff --git a/system4.4.6/Test/Mock/MockCURLRequest.php b/system4.4.6/Test/Mock/MockCURLRequest.php deleted file mode 100644 index 9ee38247..00000000 --- a/system4.4.6/Test/Mock/MockCURLRequest.php +++ /dev/null @@ -1,56 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Mock; - -use CodeIgniter\HTTP\CURLRequest; - -/** - * Class MockCURLRequest - * - * Simply allows us to not actually call cURL during the - * test runs. Instead, we can set the desired output - * and get back the set options. - */ -class MockCURLRequest extends CURLRequest -{ - public $curl_options; - protected $output = ''; - - public function setOutput($output) - { - $this->output = $output; - - return $this; - } - - protected function sendRequest(array $curlOptions = []): string - { - $this->response = clone $this->responseOrig; - - // Save so we can access later. - $this->curl_options = $curlOptions; - - return $this->output; - } - - // for testing purposes only - public function getBaseURI() - { - return $this->baseURI; - } - - // for testing purposes only - public function getDelay() - { - return $this->delay; - } -} diff --git a/system4.4.6/Test/Mock/MockCache.php b/system4.4.6/Test/Mock/MockCache.php deleted file mode 100644 index 082807b5..00000000 --- a/system4.4.6/Test/Mock/MockCache.php +++ /dev/null @@ -1,300 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Mock; - -use Closure; -use CodeIgniter\Cache\CacheInterface; -use CodeIgniter\Cache\Handlers\BaseHandler; -use CodeIgniter\I18n\Time; -use PHPUnit\Framework\Assert; - -class MockCache extends BaseHandler implements CacheInterface -{ - /** - * Mock cache storage. - * - * @var array<string, mixed> - */ - protected $cache = []; - - /** - * Expiration times. - * - * @var ?int[] - */ - protected $expirations = []; - - /** - * If true, will not cache any data. - * - * @var bool - */ - protected $bypass = false; - - /** - * Takes care of any handler-specific setup that must be done. - * - * @return void - */ - public function initialize() - { - } - - /** - * Attempts to fetch an item from the cache store. - * - * @param string $key Cache item name - * - * @return mixed - */ - public function get(string $key) - { - $key = static::validateKey($key, $this->prefix); - - return array_key_exists($key, $this->cache) ? $this->cache[$key] : null; - } - - /** - * Get an item from the cache, or execute the given Closure and store the result. - * - * @return mixed - */ - public function remember(string $key, int $ttl, Closure $callback) - { - $value = $this->get($key); - - if ($value !== null) { - return $value; - } - - $this->save($key, $value = $callback(), $ttl); - - return $value; - } - - /** - * Saves an item to the cache store. - * - * The $raw parameter is only utilized by Mamcache in order to - * allow usage of increment() and decrement(). - * - * @param string $key Cache item name - * @param mixed $value the data to save - * @param int $ttl Time To Live, in seconds (default 60) - * @param bool $raw Whether to store the raw value. - * - * @return bool - */ - public function save(string $key, $value, int $ttl = 60, bool $raw = false) - { - if ($this->bypass) { - return false; - } - - $key = static::validateKey($key, $this->prefix); - - $this->cache[$key] = $value; - $this->expirations[$key] = $ttl > 0 ? Time::now()->getTimestamp() + $ttl : null; - - return true; - } - - /** - * Deletes a specific item from the cache store. - * - * @return bool - */ - public function delete(string $key) - { - $key = static::validateKey($key, $this->prefix); - - if (! isset($this->cache[$key])) { - return false; - } - - unset($this->cache[$key], $this->expirations[$key]); - - return true; - } - - /** - * Deletes items from the cache store matching a given pattern. - * - * @return int - */ - public function deleteMatching(string $pattern) - { - $count = 0; - - foreach (array_keys($this->cache) as $key) { - if (fnmatch($pattern, $key)) { - $count++; - unset($this->cache[$key], $this->expirations[$key]); - } - } - - return $count; - } - - /** - * Performs atomic incrementation of a raw stored value. - * - * @return bool - */ - public function increment(string $key, int $offset = 1) - { - $key = static::validateKey($key, $this->prefix); - $data = $this->cache[$key] ?: null; - - if ($data === null) { - $data = 0; - } elseif (! is_int($data)) { - return false; - } - - return $this->save($key, $data + $offset); - } - - /** - * Performs atomic decrementation of a raw stored value. - * - * @return bool - */ - public function decrement(string $key, int $offset = 1) - { - $key = static::validateKey($key, $this->prefix); - - $data = $this->cache[$key] ?: null; - - if ($data === null) { - $data = 0; - } elseif (! is_int($data)) { - return false; - } - - return $this->save($key, $data - $offset); - } - - /** - * Will delete all items in the entire cache. - * - * @return bool - */ - public function clean() - { - $this->cache = []; - $this->expirations = []; - - return true; - } - - /** - * Returns information on the entire cache. - * - * The information returned and the structure of the data - * varies depending on the handler. - * - * @return string[] Keys currently present in the store - */ - public function getCacheInfo() - { - return array_keys($this->cache); - } - - /** - * Returns detailed information about the specific item in the cache. - * - * @return array|null Returns null if the item does not exist, otherwise array<string, mixed> - * with at least the 'expire' key for absolute epoch expiry (or null). - */ - public function getMetaData(string $key) - { - // Misses return null - if (! array_key_exists($key, $this->expirations)) { - return null; - } - - // Count expired items as a miss - if (is_int($this->expirations[$key]) && $this->expirations[$key] > Time::now()->getTimestamp()) { - return null; - } - - return ['expire' => $this->expirations[$key]]; - } - - /** - * Determine if the driver is supported on this system. - */ - public function isSupported(): bool - { - return true; - } - - // -------------------------------------------------------------------- - // Test Helpers - // -------------------------------------------------------------------- - - /** - * Instructs the class to ignore all - * requests to cache an item, and always "miss" - * when checked for existing data. - * - * @return $this - */ - public function bypass(bool $bypass = true) - { - $this->clean(); - $this->bypass = $bypass; - - return $this; - } - - // -------------------------------------------------------------------- - // Additional Assertions - // -------------------------------------------------------------------- - - /** - * Asserts that the cache has an item named $key. - * The value is not checked since storing false or null - * values is valid. - */ - public function assertHas(string $key) - { - Assert::assertNotNull($this->get($key), "The cache does not have an item named: `{$key}`"); - } - - /** - * Asserts that the cache has an item named $key with a value matching $value. - * - * @param mixed $value - */ - public function assertHasValue(string $key, $value = null) - { - $item = $this->get($key); - - // Let assertHas() handle throwing the error for consistency - // if the key is not found - if ($item === null) { - $this->assertHas($key); - } - - Assert::assertSame($value, $this->get($key), "The cached item `{$key}` does not equal match expectation. Found: " . print_r($value, true)); - } - - /** - * Asserts that the cache does NOT have an item named $key. - */ - public function assertMissing(string $key) - { - Assert::assertArrayNotHasKey($key, $this->cache, "The cached item named `{$key}` exists."); - } -} diff --git a/system4.4.6/Test/Mock/MockCodeIgniter.php b/system4.4.6/Test/Mock/MockCodeIgniter.php deleted file mode 100644 index 200c92fa..00000000 --- a/system4.4.6/Test/Mock/MockCodeIgniter.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Mock; - -use CodeIgniter\CodeIgniter; - -class MockCodeIgniter extends CodeIgniter -{ - protected ?string $context = 'web'; - - /** - * @param int $code - * - * @deprecated 4.4.0 No longer Used. Moved to index.php. - */ - protected function callExit($code) - { - // Do not call exit() in testing. - } -} diff --git a/system4.4.6/Test/Mock/MockCommon.php b/system4.4.6/Test/Mock/MockCommon.php deleted file mode 100644 index d8ba4613..00000000 --- a/system4.4.6/Test/Mock/MockCommon.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -if (! function_exists('is_cli')) { - /** - * Is CLI? - * - * Test to see if a request was made from the command line. - * You can set the return value for testing. - * - * @param bool $newReturn return value to set - */ - function is_cli(?bool $newReturn = null): bool - { - // PHPUnit always runs via CLI. - static $returnValue = true; - - if ($newReturn !== null) { - $returnValue = $newReturn; - } - - return $returnValue; - } -} diff --git a/system4.4.6/Test/Mock/MockConnection.php b/system4.4.6/Test/Mock/MockConnection.php deleted file mode 100644 index 2e9ebe3b..00000000 --- a/system4.4.6/Test/Mock/MockConnection.php +++ /dev/null @@ -1,246 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Mock; - -use CodeIgniter\CodeIgniter; -use CodeIgniter\Database\BaseConnection; -use CodeIgniter\Database\BaseResult; -use CodeIgniter\Database\Query; - -/** - * @extends BaseConnection<object|resource, object|resource> - */ -class MockConnection extends BaseConnection -{ - protected $returnValues = []; - - /** - * Database schema for Postgre and SQLSRV - * - * @var string - */ - protected $schema; - - public $database; - public $lastQuery; - - public function shouldReturn(string $method, $return) - { - $this->returnValues[$method] = $return; - - return $this; - } - - /** - * Orchestrates a query against the database. Queries must use - * Database\Statement objects to store the query and build it. - * This method works with the cache. - * - * Should automatically handle different connections for read/write - * queries if needed. - * - * @param mixed ...$binds - * - * @return BaseResult|bool|Query - * - * @todo BC set $queryClass default as null in 4.1 - */ - public function query(string $sql, $binds = null, bool $setEscapeFlags = true, string $queryClass = '') - { - $queryClass = str_replace('Connection', 'Query', static::class); - - $query = new $queryClass($this); - - $query->setQuery($sql, $binds, $setEscapeFlags); - - if ($this->swapPre !== '' && $this->DBPrefix !== '') { - $query->swapPrefix($this->DBPrefix, $this->swapPre); - } - - $startTime = microtime(true); - - $this->lastQuery = $query; - - // Run the query - if (false === ($this->resultID = $this->simpleQuery($query->getQuery()))) { - $query->setDuration($startTime, $startTime); - - // @todo deal with errors - - return false; - } - - $query->setDuration($startTime); - - // resultID is not false, so it must be successful - if ($query->isWriteType()) { - return true; - } - - // query is not write-type, so it must be read-type query; return QueryResult - $resultClass = str_replace('Connection', 'Result', static::class); - - return new $resultClass($this->connID, $this->resultID); - } - - /** - * Connect to the database. - * - * @return mixed - */ - public function connect(bool $persistent = false) - { - $return = $this->returnValues['connect'] ?? true; - - if (is_array($return)) { - // By removing the top item here, we can - // get a different value for, say, testing failover connections. - $return = array_shift($this->returnValues['connect']); - } - - return $return; - } - - /** - * Keep or establish the connection if no queries have been sent for - * a length of time exceeding the server's idle timeout. - */ - public function reconnect(): bool - { - return true; - } - - /** - * Select a specific database table to use. - * - * @return mixed - */ - public function setDatabase(string $databaseName) - { - $this->database = $databaseName; - - return $this; - } - - /** - * Returns a string containing the version of the database being used. - */ - public function getVersion(): string - { - return CodeIgniter::CI_VERSION; - } - - /** - * Executes the query against the database. - * - * @return bool|object - */ - protected function execute(string $sql) - { - return $this->returnValues['execute']; - } - - /** - * Returns the total number of rows affected by this query. - */ - public function affectedRows(): int - { - return 1; - } - - /** - * Returns the last error code and message. - * - * Must return an array with keys 'code' and 'message': - * - * return ['code' => null, 'message' => null); - */ - public function error(): array - { - return [ - 'code' => 0, - 'message' => '', - ]; - } - - /** - * Insert ID - */ - public function insertID(): int - { - return $this->connID->insert_id; - } - - /** - * Generates the SQL for listing tables in a platform-dependent manner. - * - * @param string|null $tableName If $tableName is provided will return only this table if exists. - */ - protected function _listTables(bool $constrainByPrefix = false, ?string $tableName = null): string - { - return ''; - } - - /** - * Generates a platform-specific query string so that the column names can be fetched. - */ - protected function _listColumns(string $table = ''): string - { - return ''; - } - - protected function _fieldData(string $table): array - { - return []; - } - - protected function _indexData(string $table): array - { - return []; - } - - protected function _foreignKeyData(string $table): array - { - return []; - } - - /** - * Close the connection. - */ - protected function _close() - { - } - - /** - * Begin Transaction - */ - protected function _transBegin(): bool - { - return true; - } - - /** - * Commit Transaction - */ - protected function _transCommit(): bool - { - return true; - } - - /** - * Rollback Transaction - */ - protected function _transRollback(): bool - { - return true; - } -} diff --git a/system4.4.6/Test/Mock/MockEmail.php b/system4.4.6/Test/Mock/MockEmail.php deleted file mode 100644 index 3683ee88..00000000 --- a/system4.4.6/Test/Mock/MockEmail.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Mock; - -use CodeIgniter\Email\Email; -use CodeIgniter\Events\Events; - -class MockEmail extends Email -{ - /** - * Value to return from mocked send(). - * - * @var bool - */ - public $returnValue = true; - - public function send($autoClear = true) - { - if ($this->returnValue) { - $this->setArchiveValues(); - - if ($autoClear) { - $this->clear(); - } - - Events::trigger('email', $this->archive); - } - - return $this->returnValue; - } -} diff --git a/system4.4.6/Test/Mock/MockEvents.php b/system4.4.6/Test/Mock/MockEvents.php deleted file mode 100644 index e4f556af..00000000 --- a/system4.4.6/Test/Mock/MockEvents.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Mock; - -use CodeIgniter\Events\Events; - -/** - * Events - */ -class MockEvents extends Events -{ - public function getListeners() - { - return self::$listeners; - } - - public function getEventsFile() - { - return self::$files; - } - - public function getSimulate() - { - return self::$simulate; - } - - public function unInitialize() - { - static::$initialized = false; - } -} diff --git a/system4.4.6/Test/Mock/MockFileLogger.php b/system4.4.6/Test/Mock/MockFileLogger.php deleted file mode 100644 index 7422221b..00000000 --- a/system4.4.6/Test/Mock/MockFileLogger.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Mock; - -use CodeIgniter\Log\Handlers\FileHandler; - -/** - * Class MockFileLogger - * - * Extends FileHandler, exposing some inner workings - */ -class MockFileLogger extends FileHandler -{ - /** - * Where would the log be written? - */ - public $destination; - - public function __construct(array $config) - { - parent::__construct($config); - $this->handles = $config['handles'] ?? []; - $this->destination = $this->path . 'log-' . date('Y-m-d') . '.' . $this->fileExtension; - } -} diff --git a/system4.4.6/Test/Mock/MockIncomingRequest.php b/system4.4.6/Test/Mock/MockIncomingRequest.php deleted file mode 100644 index 03ab0d6c..00000000 --- a/system4.4.6/Test/Mock/MockIncomingRequest.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Mock; - -use CodeIgniter\HTTP\IncomingRequest; - -class MockIncomingRequest extends IncomingRequest -{ -} diff --git a/system4.4.6/Test/Mock/MockLanguage.php b/system4.4.6/Test/Mock/MockLanguage.php deleted file mode 100644 index 267114e2..00000000 --- a/system4.4.6/Test/Mock/MockLanguage.php +++ /dev/null @@ -1,56 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Mock; - -use CodeIgniter\Language\Language; - -class MockLanguage extends Language -{ - /** - * Stores the data that should be - * returned by the 'requireFile()' method. - * - * @var mixed - */ - protected $data; - - /** - * Sets the data that should be returned by the - * 'requireFile()' method to allow easy overrides - * during testing. - * - * @return $this - */ - public function setData(string $file, array $data, ?string $locale = null) - { - $this->language[$locale ?? $this->locale][$file] = $data; - - return $this; - } - - /** - * Provides an override that allows us to set custom - * data to be returned easily during testing. - */ - protected function requireFile(string $path): array - { - return $this->data ?? []; - } - - /** - * Arbitrarily turnoff internationalization support for testing - */ - public function disableIntlSupport() - { - $this->intlSupport = false; - } -} diff --git a/system4.4.6/Test/Mock/MockLogger.php b/system4.4.6/Test/Mock/MockLogger.php deleted file mode 100644 index 2ee2500b..00000000 --- a/system4.4.6/Test/Mock/MockLogger.php +++ /dev/null @@ -1,103 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Mock; - -use Tests\Support\Log\Handlers\TestHandler; - -class MockLogger -{ - /* - |-------------------------------------------------------------------------- - | Error Logging Threshold - |-------------------------------------------------------------------------- - | - | You can enable error logging by setting a threshold over zero. The - | threshold determines what gets logged. Any values below or equal to the - | threshold will be logged. Threshold options are: - | - | 0 = Disables logging, Error logging TURNED OFF - | 1 = Emergency Messages - System is unusable - | 2 = Alert Messages - Action Must Be Taken Immediately - | 3 = Critical Messages - Application component unavailable, unexpected exception. - | 4 = Runtime Errors - Don't need immediate action, but should be monitored. - | 5 = Warnings - Exceptional occurrences that are not errors. - | 6 = Notices - Normal but significant events. - | 7 = Info - Interesting events, like user logging in, etc. - | 8 = Debug - Detailed debug information. - | 9 = All Messages - | - | You can also pass an array with threshold levels to show individual error types - | - | array(1, 2, 3, 8) = Emergency, Alert, Critical, and Debug messages - | - | For a live site you'll usually enable Critical or higher (3) to be logged otherwise - | your log files will fill up very fast. - | - */ - - public $threshold = 9; - - /* - |-------------------------------------------------------------------------- - | Date Format for Logs - |-------------------------------------------------------------------------- - | - | Each item that is logged has an associated date. You can use PHP date - | codes to set your own date formatting - | - */ - public $dateFormat = 'Y-m-d'; - - /* - |-------------------------------------------------------------------------- - | Log Handlers - |-------------------------------------------------------------------------- - | - | The logging system supports multiple actions to be taken when something - | is logged. This is done by allowing for multiple Handlers, special classes - | designed to write the log to their chosen destinations, whether that is - | a file on the server, a cloud-based service, or even taking actions such - | as emailing the dev team. - | - | Each handler is defined by the class name used for that handler, and it - | MUST implement the CodeIgniter\Log\Handlers\HandlerInterface interface. - | - | The value of each key is an array of configuration items that are sent - | to the constructor of each handler. The only required configuration item - | is the 'handles' element, which must be an array of integer log levels. - | This is most easily handled by using the constants defined in the - | Psr\Log\LogLevel class. - | - | Handlers are executed in the order defined in this array, starting with - | the handler on top and continuing down. - | - */ - public $handlers = [ - // File Handler - TestHandler::class => [ - // The log levels that this handler will handle. - 'handles' => [ - 'critical', - 'alert', - 'emergency', - 'debug', - 'error', - 'info', - 'notice', - 'warning', - ], - - // Logging Directory Path - 'path' => '', - ], - ]; -} diff --git a/system4.4.6/Test/Mock/MockQuery.php b/system4.4.6/Test/Mock/MockQuery.php deleted file mode 100644 index c67c4763..00000000 --- a/system4.4.6/Test/Mock/MockQuery.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Mock; - -use CodeIgniter\Database\Query; - -class MockQuery extends Query -{ -} diff --git a/system4.4.6/Test/Mock/MockResourceController.php b/system4.4.6/Test/Mock/MockResourceController.php deleted file mode 100644 index 2d5871f4..00000000 --- a/system4.4.6/Test/Mock/MockResourceController.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Mock; - -use CodeIgniter\RESTful\ResourceController; - -class MockResourceController extends ResourceController -{ - public function getModel() - { - return $this->model; - } - - public function getModelName() - { - return $this->modelName; - } - - public function getFormat() - { - return $this->format; - } -} diff --git a/system4.4.6/Test/Mock/MockResourcePresenter.php b/system4.4.6/Test/Mock/MockResourcePresenter.php deleted file mode 100644 index 26f01323..00000000 --- a/system4.4.6/Test/Mock/MockResourcePresenter.php +++ /dev/null @@ -1,35 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Mock; - -use CodeIgniter\API\ResponseTrait; -use CodeIgniter\RESTful\ResourcePresenter; - -class MockResourcePresenter extends ResourcePresenter -{ - use ResponseTrait; - - public function getModel() - { - return $this->model; - } - - public function getModelName() - { - return $this->modelName; - } - - public function getFormat() - { - return $this->format; - } -} diff --git a/system4.4.6/Test/Mock/MockResponse.php b/system4.4.6/Test/Mock/MockResponse.php deleted file mode 100644 index 53312921..00000000 --- a/system4.4.6/Test/Mock/MockResponse.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Mock; - -use CodeIgniter\HTTP\Response; - -/** - * Class MockResponse - */ -class MockResponse extends Response -{ - /** - * If true, will not write output. Useful during testing. - * - * @var bool - */ - protected $pretend = true; - - // for testing - public function getPretend() - { - return $this->pretend; - } - - // artificial error for testing - public function misbehave() - { - $this->statusCode = 0; - } -} diff --git a/system4.4.6/Test/Mock/MockResult.php b/system4.4.6/Test/Mock/MockResult.php deleted file mode 100644 index 87654b1d..00000000 --- a/system4.4.6/Test/Mock/MockResult.php +++ /dev/null @@ -1,101 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Mock; - -use CodeIgniter\Database\BaseResult; -use stdClass; - -/** - * @extends BaseResult<object|resource, object|resource> - */ -class MockResult extends BaseResult -{ - /** - * Gets the number of fields in the result set. - */ - public function getFieldCount(): int - { - return 0; - } - - /** - * Generates an array of column names in the result set. - */ - public function getFieldNames(): array - { - return []; - } - - /** - * Generates an array of objects representing field meta-data. - */ - public function getFieldData(): array - { - return []; - } - - /** - * Frees the current result. - * - * @return void - */ - public function freeResult() - { - } - - /** - * Moves the internal pointer to the desired offset. This is called - * internally before fetching results to make sure the result set - * starts at zero. - * - * @param int $n - * - * @return bool - */ - public function dataSeek($n = 0) - { - return true; - } - - /** - * Returns the result set as an array. - * - * Overridden by driver classes. - * - * @return mixed - */ - protected function fetchAssoc() - { - } - - /** - * Returns the result set as an object. - * - * Overridden by child classes. - * - * @param string $className - * - * @return object|stdClass - */ - protected function fetchObject($className = 'stdClass') - { - return new $className(); - } - - /** - * Gets the number of fields in the result set. - */ - public function getNumRows(): int - { - return 0; - } -} diff --git a/system4.4.6/Test/Mock/MockSecurity.php b/system4.4.6/Test/Mock/MockSecurity.php deleted file mode 100644 index a078154b..00000000 --- a/system4.4.6/Test/Mock/MockSecurity.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Mock; - -use CodeIgniter\Security\Security; - -class MockSecurity extends Security -{ - protected function doSendCookie(): void - { - $_COOKIE['csrf_cookie_name'] = $this->hash; - } - - protected function randomize(string $hash): string - { - $keyBinary = hex2bin('005513c290126d34d41bf41c5265e0f1'); - $hashBinary = hex2bin($hash); - - return bin2hex(($hashBinary ^ $keyBinary) . $keyBinary); - } -} diff --git a/system4.4.6/Test/Mock/MockSecurityConfig.php b/system4.4.6/Test/Mock/MockSecurityConfig.php deleted file mode 100644 index 00171049..00000000 --- a/system4.4.6/Test/Mock/MockSecurityConfig.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Mock; - -use Config\Security; - -/** - * @deprecated - * - * @codeCoverageIgnore - */ -class MockSecurityConfig extends Security -{ - public string $tokenName = 'csrf_test_name'; - public string $headerName = 'X-CSRF-TOKEN'; - public string $cookieName = 'csrf_cookie_name'; - public int $expires = 7200; - public bool $regenerate = true; - public bool $redirect = false; - public string $samesite = 'Lax'; - public $excludeURIs = ['http://example.com']; -} diff --git a/system4.4.6/Test/Mock/MockServices.php b/system4.4.6/Test/Mock/MockServices.php deleted file mode 100644 index f1870042..00000000 --- a/system4.4.6/Test/Mock/MockServices.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Mock; - -use CodeIgniter\Autoloader\FileLocator; -use CodeIgniter\Config\BaseService; - -class MockServices extends BaseService -{ - public $psr4 = [ - 'Tests/Support' => TESTPATH . '_support/', - ]; - public $classmap = []; - - public function __construct() - { - // Don't call the parent since we don't want the default mappings. - // parent::__construct(); - } - - public static function locator(bool $getShared = true) - { - return new FileLocator(static::autoloader()); - } -} diff --git a/system4.4.6/Test/Mock/MockSession.php b/system4.4.6/Test/Mock/MockSession.php deleted file mode 100644 index 9f558e10..00000000 --- a/system4.4.6/Test/Mock/MockSession.php +++ /dev/null @@ -1,71 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Mock; - -use CodeIgniter\Cookie\Cookie; -use CodeIgniter\I18n\Time; -use CodeIgniter\Session\Session; - -/** - * Class MockSession - * - * Provides a safe way to test the Session class itself, - * that doesn't interact with the session or cookies at all. - */ -class MockSession extends Session -{ - /** - * Holds our "cookie" data. - * - * @var Cookie[] - */ - public $cookies = []; - - public $didRegenerate = false; - - /** - * Sets the driver as the session handler in PHP. - * Extracted for easier testing. - */ - protected function setSaveHandler() - { - // session_set_save_handler($this->driver, true); - } - - /** - * Starts the session. - * Extracted for testing reasons. - */ - protected function startSession() - { - // session_start(); - $this->setCookie(); - } - - /** - * Takes care of setting the cookie on the client side. - * Extracted for testing reasons. - */ - protected function setCookie() - { - $expiration = $this->config->expiration === 0 ? 0 : Time::now()->getTimestamp() + $this->config->expiration; - $this->cookie = $this->cookie->withValue(session_id())->withExpires($expiration); - - $this->cookies[] = $this->cookie; - } - - public function regenerate(bool $destroy = false) - { - $this->didRegenerate = true; - $_SESSION['__ci_last_regenerate'] = Time::now()->getTimestamp(); - } -} diff --git a/system4.4.6/Test/Mock/MockTable.php b/system4.4.6/Test/Mock/MockTable.php deleted file mode 100644 index 697e72b1..00000000 --- a/system4.4.6/Test/Mock/MockTable.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test\Mock; - -use BadMethodCallException; -use CodeIgniter\View\Table; - -class MockTable extends Table -{ - // Override inaccessible protected method - public function __call($method, $params) - { - if (is_callable([$this, '_' . $method])) { - return call_user_func_array([$this, '_' . $method], $params); - } - - throw new BadMethodCallException('Method ' . $method . ' was not found'); - } -} diff --git a/system4.4.6/Test/PhpStreamWrapper.php b/system4.4.6/Test/PhpStreamWrapper.php deleted file mode 100644 index 9ef3d7d4..00000000 --- a/system4.4.6/Test/PhpStreamWrapper.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test; - -/** - * StreamWrapper for php protocol - * - * This class is used for mocking `php://stdin`. - * - * See https://www.php.net/manual/en/class.streamwrapper.php - */ -final class PhpStreamWrapper -{ - /** - * @var resource|null - */ - public $context; - - private static string $content = ''; - private int $position = 0; - - public static function setContent(string $content) - { - self::$content = $content; - } - - public static function register() - { - stream_wrapper_unregister('php'); - stream_wrapper_register('php', self::class); - } - - public static function restore() - { - stream_wrapper_restore('php'); - } - - public function stream_open(string $path): bool - { - return true; - } - - /** - * @return false|string - */ - public function stream_read(int $count) - { - $return = substr(self::$content, $this->position, $count); - $this->position += strlen($return); - - return $return; - } - - /** - * @return array|false - */ - public function stream_stat() - { - return []; - } - - public function stream_eof(): bool - { - return $this->position >= strlen(self::$content); - } -} diff --git a/system4.4.6/Test/ReflectionHelper.php b/system4.4.6/Test/ReflectionHelper.php deleted file mode 100644 index 4c25e3de..00000000 --- a/system4.4.6/Test/ReflectionHelper.php +++ /dev/null @@ -1,101 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test; - -use Closure; -use ReflectionClass; -use ReflectionException; -use ReflectionMethod; -use ReflectionObject; -use ReflectionProperty; - -/** - * Testing helper. - */ -trait ReflectionHelper -{ - /** - * Find a private method invoker. - * - * @param object|string $obj object or class name - * @param string $method method name - * - * @return Closure - * - * @throws ReflectionException - */ - public static function getPrivateMethodInvoker($obj, $method) - { - $refMethod = new ReflectionMethod($obj, $method); - $refMethod->setAccessible(true); - $obj = (gettype($obj) === 'object') ? $obj : null; - - return static fn (...$args) => $refMethod->invokeArgs($obj, $args); - } - - /** - * Find an accessible property. - * - * @param object|string $obj - * @param string $property - * - * @return ReflectionProperty - * - * @throws ReflectionException - */ - private static function getAccessibleRefProperty($obj, $property) - { - $refClass = is_object($obj) ? new ReflectionObject($obj) : new ReflectionClass($obj); - - $refProperty = $refClass->getProperty($property); - $refProperty->setAccessible(true); - - return $refProperty; - } - - /** - * Set a private property. - * - * @param object|string $obj object or class name - * @param string $property property name - * @param mixed $value value - * - * @throws ReflectionException - */ - public static function setPrivateProperty($obj, $property, $value) - { - $refProperty = self::getAccessibleRefProperty($obj, $property); - - if (is_object($obj)) { - $refProperty->setValue($obj, $value); - } else { - $refProperty->setValue(null, $value); - } - } - - /** - * Retrieve a private property. - * - * @param object|string $obj object or class name - * @param string $property property name - * - * @return mixed value - * - * @throws ReflectionException - */ - public static function getPrivateProperty($obj, $property) - { - $refProperty = self::getAccessibleRefProperty($obj, $property); - - return is_string($obj) ? $refProperty->getValue() : $refProperty->getValue($obj); - } -} diff --git a/system4.4.6/Test/StreamFilterTrait.php b/system4.4.6/Test/StreamFilterTrait.php deleted file mode 100644 index 873576ec..00000000 --- a/system4.4.6/Test/StreamFilterTrait.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test; - -use CodeIgniter\Test\Filters\CITestStreamFilter; - -trait StreamFilterTrait -{ - protected function setUpStreamFilterTrait(): void - { - CITestStreamFilter::registration(); - CITestStreamFilter::addOutputFilter(); - CITestStreamFilter::addErrorFilter(); - } - - protected function tearDownStreamFilterTrait(): void - { - CITestStreamFilter::removeOutputFilter(); - CITestStreamFilter::removeErrorFilter(); - } - - protected function getStreamFilterBuffer(): string - { - return CITestStreamFilter::$buffer; - } - - protected function resetStreamFilterBuffer(): void - { - CITestStreamFilter::$buffer = ''; - } -} diff --git a/system4.4.6/Test/TestLogger.php b/system4.4.6/Test/TestLogger.php deleted file mode 100644 index fa2f3568..00000000 --- a/system4.4.6/Test/TestLogger.php +++ /dev/null @@ -1,106 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test; - -use CodeIgniter\Log\Logger; - -/** - * @see \CodeIgniter\Test\TestLoggerTest - */ -class TestLogger extends Logger -{ - /** - * @var list<array{level: mixed, message: string, file: string|null}> - */ - protected static $op_logs = []; - - /** - * The log method is overridden so that we can store log history during - * the tests to allow us to check ->assertLogged() methods. - * - * @param mixed $level - * @param string $message - */ - public function log($level, $message, array $context = []): bool - { - // While this requires duplicate work, we want to ensure - // we have the final message to test against. - $logMessage = $this->interpolate($message, $context); - - // Determine the file and line by finding the first - // backtrace that is not part of our logging system. - $trace = debug_backtrace(); - $file = null; - - foreach ($trace as $row) { - if (! in_array($row['function'], ['log', 'log_message'], true)) { - $file = basename($row['file'] ?? ''); - break; - } - } - - self::$op_logs[] = [ - 'level' => $level, - 'message' => $logMessage, - 'file' => $file, - ]; - - // Let the parent do it's thing. - return parent::log($level, $message, $context); - } - - /** - * Used by CIUnitTestCase class to provide ->assertLogged() methods. - * - * @param string $message - * - * @return bool - */ - public static function didLog(string $level, $message, bool $useExactComparison = true) - { - $lowerLevel = strtolower($level); - - foreach (self::$op_logs as $log) { - if (strtolower($log['level']) !== $lowerLevel) { - continue; - } - - if ($useExactComparison) { - if ($log['message'] === $message) { - return true; - } - - continue; - } - - if (strpos($log['message'], $message) !== false) { - return true; - } - } - - return false; - } - - /** - * Expose filenames. - * - * @param string $file - * - * @return string - * - * @deprecated No longer needed as underlying protected method is also deprecated. - */ - public function cleanup($file) - { - return clean_path($file); - } -} diff --git a/system4.4.6/Test/TestResponse.php b/system4.4.6/Test/TestResponse.php deleted file mode 100644 index 215942d5..00000000 --- a/system4.4.6/Test/TestResponse.php +++ /dev/null @@ -1,503 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Test; - -use CodeIgniter\HTTP\RedirectResponse; -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\ResponseInterface; -use CodeIgniter\I18n\Time; -use Config\Services; -use Exception; -use PHPUnit\Framework\Constraint\IsEqual; -use PHPUnit\Framework\TestCase; - -/** - * Test Response Class - * - * Consolidated response processing - * for test results. - * - * @no-final - * - * @internal - * - * @mixin DOMParser - * @see \CodeIgniter\Test\TestResponseTest - */ -class TestResponse extends TestCase -{ - /** - * The request. - * - * @var RequestInterface|null - */ - protected $request; - - /** - * The response. - * - * @var ResponseInterface - */ - protected $response; - - /** - * DOM for the body. - * - * @var DOMParser - */ - protected $domParser; - - /** - * Stores or the Response and parses the body in the DOM. - */ - public function __construct(ResponseInterface $response) - { - $this->setResponse($response); - } - - // -------------------------------------------------------------------- - // Getters / Setters - // -------------------------------------------------------------------- - - /** - * Sets the request. - * - * @return $this - */ - public function setRequest(RequestInterface $request) - { - $this->request = $request; - - return $this; - } - - /** - * Sets the Response and updates the DOM. - * - * @return $this - */ - public function setResponse(ResponseInterface $response) - { - $this->response = $response; - $this->domParser = new DOMParser(); - - $body = $response->getBody(); - if (is_string($body) && $body !== '') { - $this->domParser->withString($body); - } - - return $this; - } - - /** - * Request accessor. - * - * @return RequestInterface|null - */ - public function request() - { - return $this->request; - } - - /** - * Response accessor. - * - * @return ResponseInterface - */ - public function response() - { - return $this->response; - } - - // -------------------------------------------------------------------- - // Status Checks - // -------------------------------------------------------------------- - - /** - * Boils down the possible responses into a boolean valid/not-valid - * response type. - */ - public function isOK(): bool - { - $status = $this->response->getStatusCode(); - - // Only 200 and 300 range status codes - // are considered valid. - if ($status >= 400 || $status < 200) { - return false; - } - - $body = (string) $this->response->getBody(); - - // Empty bodies are not considered valid, unless in redirects - return ! ($status < 300 && $body === ''); - } - - /** - * Asserts that the status is a specific value. - * - * @throws Exception - */ - public function assertStatus(int $code) - { - $this->assertSame($code, $this->response->getStatusCode()); - } - - /** - * Asserts that the Response is considered OK. - * - * @throws Exception - */ - public function assertOK() - { - $this->assertTrue($this->isOK(), "{$this->response->getStatusCode()} is not a successful status code, or the Response has an empty body."); - } - - /** - * Asserts that the Response is considered OK. - * - * @throws Exception - */ - public function assertNotOK() - { - $this->assertFalse($this->isOK(), "{$this->response->getStatusCode()} is an unexpected successful status code, or the Response has body content."); - } - - // -------------------------------------------------------------------- - // Redirection - // -------------------------------------------------------------------- - - /** - * Returns whether or not the Response was a redirect or RedirectResponse - */ - public function isRedirect(): bool - { - return $this->response instanceof RedirectResponse - || $this->response->hasHeader('Location') - || $this->response->hasHeader('Refresh'); - } - - /** - * Assert that the given response was a redirect. - * - * @throws Exception - */ - public function assertRedirect() - { - $this->assertTrue($this->isRedirect(), 'Response is not a redirect or RedirectResponse.'); - } - - /** - * Assert that a given response was a redirect - * and it was redirect to a specific URI. - * - * @throws Exception - */ - public function assertRedirectTo(string $uri) - { - $this->assertRedirect(); - - $uri = trim(strtolower($uri)); - $redirectUri = strtolower($this->getRedirectUrl()); - - $matches = $uri === $redirectUri - || strtolower(site_url($uri)) === $redirectUri - || $uri === site_url($redirectUri); - - $this->assertTrue($matches, "Redirect URL `{$uri}` does not match `{$redirectUri}`"); - } - - /** - * Assert that the given response was not a redirect. - * - * @throws Exception - */ - public function assertNotRedirect() - { - $this->assertFalse($this->isRedirect(), 'Response is an unexpected redirect or RedirectResponse.'); - } - - /** - * Returns the URL set for redirection. - */ - public function getRedirectUrl(): ?string - { - if (! $this->isRedirect()) { - return null; - } - - if ($this->response->hasHeader('Location')) { - return $this->response->getHeaderLine('Location'); - } - - if ($this->response->hasHeader('Refresh')) { - return str_replace('0;url=', '', $this->response->getHeaderLine('Refresh')); - } - - return null; - } - - // -------------------------------------------------------------------- - // Session - // -------------------------------------------------------------------- - - /** - * Asserts that an SESSION key has been set and, optionally, test it's value. - * - * @param mixed $value - * - * @throws Exception - */ - public function assertSessionHas(string $key, $value = null) - { - $this->assertArrayHasKey($key, $_SESSION, "'{$key}' is not in the current \$_SESSION"); - - if ($value === null) { - return; - } - - if (is_scalar($value)) { - $this->assertSame($value, $_SESSION[$key], "The value of '{$key}' ({$value}) does not match expected value."); - } else { - $this->assertSame($value, $_SESSION[$key], "The value of '{$key}' does not match expected value."); - } - } - - /** - * Asserts the session is missing $key. - * - * @throws Exception - */ - public function assertSessionMissing(string $key) - { - $this->assertArrayNotHasKey($key, $_SESSION, "'{$key}' should not be present in \$_SESSION."); - } - - // -------------------------------------------------------------------- - // Headers - // -------------------------------------------------------------------- - - /** - * Asserts that the Response contains a specific header. - * - * @param string|null $value - * - * @throws Exception - */ - public function assertHeader(string $key, $value = null) - { - $this->assertTrue($this->response->hasHeader($key), "'{$key}' is not a valid Response header."); - - if ($value !== null) { - $this->assertSame($value, $this->response->getHeaderLine($key), "The value of '{$key}' header ({$this->response->getHeaderLine($key)}) does not match expected value."); - } - } - - /** - * Asserts the Response headers does not contain the specified header. - * - * @throws Exception - */ - public function assertHeaderMissing(string $key) - { - $this->assertFalse($this->response->hasHeader($key), "'{$key}' should not be in the Response headers."); - } - - // -------------------------------------------------------------------- - // Cookies - // -------------------------------------------------------------------- - - /** - * Asserts that the response has the specified cookie. - * - * @param string|null $value - * - * @throws Exception - */ - public function assertCookie(string $key, $value = null, string $prefix = '') - { - $this->assertTrue($this->response->hasCookie($key, $value, $prefix), "No cookie found named '{$key}'."); - } - - /** - * Assert the Response does not have the specified cookie set. - */ - public function assertCookieMissing(string $key) - { - $this->assertFalse($this->response->hasCookie($key), "Cookie named '{$key}' should not be set."); - } - - /** - * Asserts that a cookie exists and has an expired time. - * - * @throws Exception - */ - public function assertCookieExpired(string $key, string $prefix = '') - { - $this->assertTrue($this->response->hasCookie($key, null, $prefix)); - $this->assertGreaterThan(Time::now()->getTimestamp(), $this->response->getCookie($key, $prefix)->getExpiresTimestamp()); - } - - // -------------------------------------------------------------------- - // JSON - // -------------------------------------------------------------------- - - /** - * Returns the response's body as JSON - * - * @return false|string - */ - public function getJSON() - { - $response = $this->response->getJSON(); - - if ($response === null) { - return false; - } - - return $response; - } - - /** - * Test that the response contains a matching JSON fragment. - * - * @throws Exception - */ - public function assertJSONFragment(array $fragment, bool $strict = false) - { - $json = json_decode($this->getJSON(), true); - $this->assertIsArray($json, 'Response does not have valid json'); - $patched = array_replace_recursive($json, $fragment); - - if ($strict) { - $this->assertSame($json, $patched, 'Response does not contain a matching JSON fragment.'); - } else { - $this->assertThat($patched, new IsEqual($json), 'Response does not contain a matching JSON fragment.'); - } - } - - /** - * Asserts that the JSON exactly matches the passed in data. - * If the value being passed in is a string, it must be a json_encoded string. - * - * @param array|object|string $test - * - * @throws Exception - */ - public function assertJSONExact($test) - { - $json = $this->getJSON(); - - if (is_object($test)) { - $test = method_exists($test, 'toArray') ? $test->toArray() : (array) $test; - } - - if (is_array($test)) { - $test = Services::format()->getFormatter('application/json')->format($test); - } - - $this->assertJsonStringEqualsJsonString($test, $json, 'Response does not contain matching JSON.'); - } - - // -------------------------------------------------------------------- - // XML Methods - // -------------------------------------------------------------------- - - /** - * Returns the response' body as XML - * - * @return mixed|string - */ - public function getXML() - { - return $this->response->getXML(); - } - - // -------------------------------------------------------------------- - // DomParser - // -------------------------------------------------------------------- - - /** - * Assert that the desired text can be found in the result body. - * - * @throws Exception - */ - public function assertSee(?string $search = null, ?string $element = null) - { - $this->assertTrue($this->domParser->see($search, $element), "Do not see '{$search}' in response."); - } - - /** - * Asserts that we do not see the specified text. - * - * @throws Exception - */ - public function assertDontSee(?string $search = null, ?string $element = null) - { - $this->assertTrue($this->domParser->dontSee($search, $element), "I should not see '{$search}' in response."); - } - - /** - * Assert that we see an element selected via a CSS selector. - * - * @throws Exception - */ - public function assertSeeElement(string $search) - { - $this->assertTrue($this->domParser->seeElement($search), "Do not see element with selector '{$search} in response.'"); - } - - /** - * Assert that we do not see an element selected via a CSS selector. - * - * @throws Exception - */ - public function assertDontSeeElement(string $search) - { - $this->assertTrue($this->domParser->dontSeeElement($search), "I should not see an element with selector '{$search}' in response.'"); - } - - /** - * Assert that we see a link with the matching text and/or class. - * - * @throws Exception - */ - public function assertSeeLink(string $text, ?string $details = null) - { - $this->assertTrue($this->domParser->seeLink($text, $details), "Do no see anchor tag with the text {$text} in response."); - } - - /** - * Assert that we see an input with name/value. - * - * @throws Exception - */ - public function assertSeeInField(string $field, ?string $value = null) - { - $this->assertTrue($this->domParser->seeInField($field, $value), "Do no see input named {$field} with value {$value} in response."); - } - - /** - * Forward any unrecognized method calls to our DOMParser instance. - * - * @param string $function Method name - * @param mixed $params Any method parameters - * - * @return mixed - */ - public function __call($function, $params) - { - if (method_exists($this->domParser, $function)) { - return $this->domParser->{$function}(...$params); - } - } -} diff --git a/system4.4.6/Test/bootstrap.php b/system4.4.6/Test/bootstrap.php deleted file mode 100644 index 57196190..00000000 --- a/system4.4.6/Test/bootstrap.php +++ /dev/null @@ -1,91 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -use CodeIgniter\Config\DotEnv; -use Config\Autoload; -use Config\Modules; -use Config\Paths; -use Config\Services; - -error_reporting(E_ALL); -ini_set('display_errors', '1'); -ini_set('display_startup_errors', '1'); - -// Make sure it recognizes that we're testing. -$_SERVER['CI_ENVIRONMENT'] = 'testing'; -define('ENVIRONMENT', 'testing'); -defined('CI_DEBUG') || define('CI_DEBUG', true); - -// Often these constants are pre-defined, but query the current directory structure as a fallback -defined('HOMEPATH') || define('HOMEPATH', realpath(rtrim(getcwd(), '\\/ ')) . DIRECTORY_SEPARATOR); -$source = is_dir(HOMEPATH . 'app') - ? HOMEPATH - : (is_dir('vendor/codeigniter4/framework/') ? 'vendor/codeigniter4/framework/' : 'vendor/codeigniter4/codeigniter4/'); -defined('CONFIGPATH') || define('CONFIGPATH', realpath($source . 'app/Config') . DIRECTORY_SEPARATOR); -defined('PUBLICPATH') || define('PUBLICPATH', realpath($source . 'public') . DIRECTORY_SEPARATOR); -unset($source); - -// Load framework paths from their config file -require CONFIGPATH . 'Paths.php'; -$paths = new Paths(); - -// Define necessary framework path constants -defined('APPPATH') || define('APPPATH', realpath(rtrim($paths->appDirectory, '\\/ ')) . DIRECTORY_SEPARATOR); -defined('WRITEPATH') || define('WRITEPATH', realpath(rtrim($paths->writableDirectory, '\\/ ')) . DIRECTORY_SEPARATOR); -defined('SYSTEMPATH') || define('SYSTEMPATH', realpath(rtrim($paths->systemDirectory, '\\/')) . DIRECTORY_SEPARATOR); -defined('ROOTPATH') || define('ROOTPATH', realpath(APPPATH . '../') . DIRECTORY_SEPARATOR); -defined('CIPATH') || define('CIPATH', realpath(SYSTEMPATH . '../') . DIRECTORY_SEPARATOR); -defined('FCPATH') || define('FCPATH', realpath(PUBLICPATH) . DIRECTORY_SEPARATOR); -defined('TESTPATH') || define('TESTPATH', realpath(HOMEPATH . 'tests/') . DIRECTORY_SEPARATOR); -defined('SUPPORTPATH') || define('SUPPORTPATH', realpath(TESTPATH . '_support/') . DIRECTORY_SEPARATOR); -defined('COMPOSER_PATH') || define('COMPOSER_PATH', (string) realpath(HOMEPATH . 'vendor/autoload.php')); -defined('VENDORPATH') || define('VENDORPATH', realpath(HOMEPATH . 'vendor') . DIRECTORY_SEPARATOR); - -// Load Common.php from App then System -if (is_file(APPPATH . 'Common.php')) { - require_once APPPATH . 'Common.php'; -} - -require_once SYSTEMPATH . 'Common.php'; - -// Set environment values that would otherwise stop the framework from functioning during tests. -if (! isset($_SERVER['app.baseURL'])) { - $_SERVER['app.baseURL'] = 'http://example.com/'; -} - -// Load necessary components -require_once SYSTEMPATH . 'Config/AutoloadConfig.php'; -require_once APPPATH . 'Config/Autoload.php'; -require_once APPPATH . 'Config/Constants.php'; -require_once SYSTEMPATH . 'Modules/Modules.php'; -require_once APPPATH . 'Config/Modules.php'; - -require_once SYSTEMPATH . 'Autoloader/Autoloader.php'; -require_once SYSTEMPATH . 'Config/BaseService.php'; -require_once SYSTEMPATH . 'Config/Services.php'; -require_once APPPATH . 'Config/Services.php'; - -// Initialize and register the loader with the SPL autoloader stack. -Services::autoloader()->initialize(new Autoload(), new Modules())->register(); -Services::autoloader()->loadHelpers(); - -// Now load Composer's if it's available -if (is_file(COMPOSER_PATH)) { - require_once COMPOSER_PATH; -} - -// Load environment settings from .env files into $_SERVER and $_ENV -require_once SYSTEMPATH . 'Config/DotEnv.php'; - -$env = new DotEnv(ROOTPATH); -$env->load(); - -Services::routes()->loadRoutes(); diff --git a/system4.4.6/ThirdParty/Escaper/Escaper.php b/system4.4.6/ThirdParty/Escaper/Escaper.php deleted file mode 100644 index d6a02e14..00000000 --- a/system4.4.6/ThirdParty/Escaper/Escaper.php +++ /dev/null @@ -1,412 +0,0 @@ -<?php - -declare(strict_types=1); - -namespace Laminas\Escaper; - -use function bin2hex; -use function ctype_digit; -use function hexdec; -use function htmlspecialchars; -use function in_array; -use function mb_convert_encoding; -use function ord; -use function preg_match; -use function preg_replace_callback; -use function rawurlencode; -use function sprintf; -use function strlen; -use function strtolower; -use function strtoupper; -use function substr; - -use const ENT_QUOTES; -use const ENT_SUBSTITUTE; - -/** - * Context specific methods for use in secure output escaping - */ -class Escaper -{ - /** - * Entity Map mapping Unicode codepoints to any available named HTML entities. - * - * While HTML supports far more named entities, the lowest common denominator - * has become HTML5's XML Serialisation which is restricted to the those named - * entities that XML supports. Using HTML entities would result in this error: - * XML Parsing Error: undefined entity - * - * @var array<int, string> - */ - protected static $htmlNamedEntityMap = [ - 34 => 'quot', // quotation mark - 38 => 'amp', // ampersand - 60 => 'lt', // less-than sign - 62 => 'gt', // greater-than sign - ]; - - /** - * Current encoding for escaping. If not UTF-8, we convert strings from this encoding - * pre-escaping and back to this encoding post-escaping. - * - * @var string - */ - protected $encoding = 'utf-8'; - - /** - * Holds the value of the special flags passed as second parameter to - * htmlspecialchars(). - * - * @var int - */ - protected $htmlSpecialCharsFlags; - - /** - * Static Matcher which escapes characters for HTML Attribute contexts - * - * @var callable - * @psalm-var callable(array<array-key, string>):string - */ - protected $htmlAttrMatcher; - - /** - * Static Matcher which escapes characters for Javascript contexts - * - * @var callable - * @psalm-var callable(array<array-key, string>):string - */ - protected $jsMatcher; - - /** - * Static Matcher which escapes characters for CSS Attribute contexts - * - * @var callable - * @psalm-var callable(array<array-key, string>):string - */ - protected $cssMatcher; - - /** - * List of all encoding supported by this class - * - * @var array - */ - protected $supportedEncodings = [ - 'iso-8859-1', - 'iso8859-1', - 'iso-8859-5', - 'iso8859-5', - 'iso-8859-15', - 'iso8859-15', - 'utf-8', - 'cp866', - 'ibm866', - '866', - 'cp1251', - 'windows-1251', - 'win-1251', - '1251', - 'cp1252', - 'windows-1252', - '1252', - 'koi8-r', - 'koi8-ru', - 'koi8r', - 'big5', - '950', - 'gb2312', - '936', - 'big5-hkscs', - 'shift_jis', - 'sjis', - 'sjis-win', - 'cp932', - '932', - 'euc-jp', - 'eucjp', - 'eucjp-win', - 'macroman', - ]; - - /** - * Constructor: Single parameter allows setting of global encoding for use by - * the current object. - * - * @throws Exception\InvalidArgumentException - */ - public function __construct(?string $encoding = null) - { - if ($encoding !== null) { - if ($encoding === '') { - throw new Exception\InvalidArgumentException( - static::class . ' constructor parameter does not allow a blank value' - ); - } - - $encoding = strtolower($encoding); - if (! in_array($encoding, $this->supportedEncodings)) { - throw new Exception\InvalidArgumentException( - 'Value of \'' . $encoding . '\' passed to ' . static::class - . ' constructor parameter is invalid. Provide an encoding supported by htmlspecialchars()' - ); - } - - $this->encoding = $encoding; - } - - // We take advantage of ENT_SUBSTITUTE flag to correctly deal with invalid UTF-8 sequences. - $this->htmlSpecialCharsFlags = ENT_QUOTES | ENT_SUBSTITUTE; - - // set matcher callbacks - $this->htmlAttrMatcher = [$this, 'htmlAttrMatcher']; - $this->jsMatcher = [$this, 'jsMatcher']; - $this->cssMatcher = [$this, 'cssMatcher']; - } - - /** - * Return the encoding that all output/input is expected to be encoded in. - * - * @return string - */ - public function getEncoding() - { - return $this->encoding; - } - - /** - * Escape a string for the HTML Body context where there are very few characters - * of special meaning. Internally this will use htmlspecialchars(). - * - * @return string - */ - public function escapeHtml(string $string) - { - return htmlspecialchars($string, $this->htmlSpecialCharsFlags, $this->encoding); - } - - /** - * Escape a string for the HTML Attribute context. We use an extended set of characters - * to escape that are not covered by htmlspecialchars() to cover cases where an attribute - * might be unquoted or quoted illegally (e.g. backticks are valid quotes for IE). - * - * @return string - */ - public function escapeHtmlAttr(string $string) - { - $string = $this->toUtf8($string); - if ($string === '' || ctype_digit($string)) { - return $string; - } - - $result = preg_replace_callback('/[^a-z0-9,\.\-_]/iSu', $this->htmlAttrMatcher, $string); - return $this->fromUtf8($result); - } - - /** - * Escape a string for the Javascript context. This does not use json_encode(). An extended - * set of characters are escaped beyond ECMAScript's rules for Javascript literal string - * escaping in order to prevent misinterpretation of Javascript as HTML leading to the - * injection of special characters and entities. The escaping used should be tolerant - * of cases where HTML escaping was not applied on top of Javascript escaping correctly. - * Backslash escaping is not used as it still leaves the escaped character as-is and so - * is not useful in a HTML context. - * - * @return string - */ - public function escapeJs(string $string) - { - $string = $this->toUtf8($string); - if ($string === '' || ctype_digit($string)) { - return $string; - } - - $result = preg_replace_callback('/[^a-z0-9,\._]/iSu', $this->jsMatcher, $string); - return $this->fromUtf8($result); - } - - /** - * Escape a string for the URI or Parameter contexts. This should not be used to escape - * an entire URI - only a subcomponent being inserted. The function is a simple proxy - * to rawurlencode() which now implements RFC 3986 since PHP 5.3 completely. - * - * @return string - */ - public function escapeUrl(string $string) - { - return rawurlencode($string); - } - - /** - * Escape a string for the CSS context. CSS escaping can be applied to any string being - * inserted into CSS and escapes everything except alphanumerics. - * - * @return string - */ - public function escapeCss(string $string) - { - $string = $this->toUtf8($string); - if ($string === '' || ctype_digit($string)) { - return $string; - } - - $result = preg_replace_callback('/[^a-z0-9]/iSu', $this->cssMatcher, $string); - return $this->fromUtf8($result); - } - - /** - * Callback function for preg_replace_callback that applies HTML Attribute - * escaping to all matches. - * - * @param array<array-key, string> $matches - * @return string - */ - protected function htmlAttrMatcher($matches) - { - $chr = $matches[0]; - $ord = ord($chr); - - /** - * The following replaces characters undefined in HTML with the - * hex entity for the Unicode replacement character. - */ - if ( - ($ord <= 0x1f && $chr !== "\t" && $chr !== "\n" && $chr !== "\r") - || ($ord >= 0x7f && $ord <= 0x9f) - ) { - return '�'; - } - - /** - * Check if the current character to escape has a name entity we should - * replace it with while grabbing the integer value of the character. - */ - if (strlen($chr) > 1) { - $chr = $this->convertEncoding($chr, 'UTF-32BE', 'UTF-8'); - } - - $hex = bin2hex($chr); - $ord = hexdec($hex); - if (isset(static::$htmlNamedEntityMap[$ord])) { - return '&' . static::$htmlNamedEntityMap[$ord] . ';'; - } - - /** - * Per OWASP recommendations, we'll use upper hex entities - * for any other characters where a named entity does not exist. - */ - if ($ord > 255) { - return sprintf('&#x%04X;', $ord); - } - return sprintf('&#x%02X;', $ord); - } - - /** - * Callback function for preg_replace_callback that applies Javascript - * escaping to all matches. - * - * @param array<array-key, string> $matches - * @return string - */ - protected function jsMatcher($matches) - { - $chr = $matches[0]; - if (strlen($chr) === 1) { - return sprintf('\\x%02X', ord($chr)); - } - $chr = $this->convertEncoding($chr, 'UTF-16BE', 'UTF-8'); - $hex = strtoupper(bin2hex($chr)); - if (strlen($hex) <= 4) { - return sprintf('\\u%04s', $hex); - } - $highSurrogate = substr($hex, 0, 4); - $lowSurrogate = substr($hex, 4, 4); - return sprintf('\\u%04s\\u%04s', $highSurrogate, $lowSurrogate); - } - - /** - * Callback function for preg_replace_callback that applies CSS - * escaping to all matches. - * - * @param array<array-key, string> $matches - * @return string - */ - protected function cssMatcher($matches) - { - $chr = $matches[0]; - if (strlen($chr) === 1) { - $ord = ord($chr); - } else { - $chr = $this->convertEncoding($chr, 'UTF-32BE', 'UTF-8'); - $ord = hexdec(bin2hex($chr)); - } - return sprintf('\\%X ', $ord); - } - - /** - * Converts a string to UTF-8 from the base encoding. The base encoding is set via this - * - * @param string $string - * @throws Exception\RuntimeException - * @return string - */ - protected function toUtf8($string) - { - if ($this->getEncoding() === 'utf-8') { - $result = $string; - } else { - $result = $this->convertEncoding($string, 'UTF-8', $this->getEncoding()); - } - - if (! $this->isUtf8($result)) { - throw new Exception\RuntimeException( - sprintf('String to be escaped was not valid UTF-8 or could not be converted: %s', $result) - ); - } - - return $result; - } - - /** - * Converts a string from UTF-8 to the base encoding. The base encoding is set via this - * - * @param string $string - * @return string - */ - protected function fromUtf8($string) - { - if ($this->getEncoding() === 'utf-8') { - return $string; - } - - return $this->convertEncoding($string, $this->getEncoding(), 'UTF-8'); - } - - /** - * Checks if a given string appears to be valid UTF-8 or not. - * - * @param string $string - * @return bool - */ - protected function isUtf8($string) - { - return $string === '' || preg_match('/^./su', $string); - } - - /** - * Encoding conversion helper which wraps mb_convert_encoding - * - * @param string $string - * @param string $to - * @param array|string $from - * @return string - */ - protected function convertEncoding($string, $to, $from) - { - $result = mb_convert_encoding($string, $to, $from); - - if ($result === false) { - return ''; // return non-fatal blank string on encoding errors from users - } - - return $result; - } -} diff --git a/system4.4.6/ThirdParty/Escaper/Exception/ExceptionInterface.php b/system4.4.6/ThirdParty/Escaper/Exception/ExceptionInterface.php deleted file mode 100644 index 8f5fd89a..00000000 --- a/system4.4.6/ThirdParty/Escaper/Exception/ExceptionInterface.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - -declare(strict_types=1); - -namespace Laminas\Escaper\Exception; - -use Throwable; - -interface ExceptionInterface extends Throwable -{ -} diff --git a/system4.4.6/ThirdParty/Escaper/Exception/InvalidArgumentException.php b/system4.4.6/ThirdParty/Escaper/Exception/InvalidArgumentException.php deleted file mode 100644 index 48e646dc..00000000 --- a/system4.4.6/ThirdParty/Escaper/Exception/InvalidArgumentException.php +++ /dev/null @@ -1,13 +0,0 @@ -<?php - -declare(strict_types=1); - -namespace Laminas\Escaper\Exception; - -/** - * Invalid argument exception - */ -class InvalidArgumentException extends \InvalidArgumentException implements - ExceptionInterface -{ -} diff --git a/system4.4.6/ThirdParty/Escaper/Exception/RuntimeException.php b/system4.4.6/ThirdParty/Escaper/Exception/RuntimeException.php deleted file mode 100644 index 5004c4c4..00000000 --- a/system4.4.6/ThirdParty/Escaper/Exception/RuntimeException.php +++ /dev/null @@ -1,13 +0,0 @@ -<?php - -declare(strict_types=1); - -namespace Laminas\Escaper\Exception; - -/** - * Invalid argument exception - */ -class RuntimeException extends \RuntimeException implements - ExceptionInterface -{ -} diff --git a/system4.4.6/ThirdParty/Escaper/LICENSE.md b/system4.4.6/ThirdParty/Escaper/LICENSE.md deleted file mode 100644 index 10b40f14..00000000 --- a/system4.4.6/ThirdParty/Escaper/LICENSE.md +++ /dev/null @@ -1,26 +0,0 @@ -Copyright (c) 2020 Laminas Project a Series of LF Projects, LLC. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -- Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -- Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -- Neither the name of Laminas Foundation nor the names of its contributors may - be used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/system4.4.6/ThirdParty/Kint/CallFinder.php b/system4.4.6/ThirdParty/Kint/CallFinder.php deleted file mode 100644 index f85b1ae0..00000000 --- a/system4.4.6/ThirdParty/Kint/CallFinder.php +++ /dev/null @@ -1,568 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint; - -/** - * @psalm-type PhpTokenArray = array{int, string, int} - * @psalm-type PhpToken = string|PhpTokenArray - */ -class CallFinder -{ - private static $ignore = [ - T_CLOSE_TAG => true, - T_COMMENT => true, - T_DOC_COMMENT => true, - T_INLINE_HTML => true, - T_OPEN_TAG => true, - T_OPEN_TAG_WITH_ECHO => true, - T_WHITESPACE => true, - ]; - - /** - * Things we need to do specially for operator tokens: - * - Refuse to strip spaces around them - * - Wrap the access path in parentheses if there - * are any of these in the final short parameter. - */ - private static $operator = [ - T_AND_EQUAL => true, - T_BOOLEAN_AND => true, - T_BOOLEAN_OR => true, - T_ARRAY_CAST => true, - T_BOOL_CAST => true, - T_CLASS => true, - T_CLONE => true, - T_CONCAT_EQUAL => true, - T_DEC => true, - T_DIV_EQUAL => true, - T_DOUBLE_CAST => true, - T_FUNCTION => true, - T_INC => true, - T_INCLUDE => true, - T_INCLUDE_ONCE => true, - T_INSTANCEOF => true, - T_INT_CAST => true, - T_IS_EQUAL => true, - T_IS_GREATER_OR_EQUAL => true, - T_IS_IDENTICAL => true, - T_IS_NOT_EQUAL => true, - T_IS_NOT_IDENTICAL => true, - T_IS_SMALLER_OR_EQUAL => true, - T_LOGICAL_AND => true, - T_LOGICAL_OR => true, - T_LOGICAL_XOR => true, - T_MINUS_EQUAL => true, - T_MOD_EQUAL => true, - T_MUL_EQUAL => true, - T_NEW => true, - T_OBJECT_CAST => true, - T_OR_EQUAL => true, - T_PLUS_EQUAL => true, - T_REQUIRE => true, - T_REQUIRE_ONCE => true, - T_SL => true, - T_SL_EQUAL => true, - T_SR => true, - T_SR_EQUAL => true, - T_STRING_CAST => true, - T_UNSET_CAST => true, - T_XOR_EQUAL => true, - T_POW => true, - T_POW_EQUAL => true, - T_SPACESHIP => true, - T_DOUBLE_ARROW => true, - '!' => true, - '%' => true, - '&' => true, - '*' => true, - '+' => true, - '-' => true, - '.' => true, - '/' => true, - ':' => true, - '<' => true, - '=' => true, - '>' => true, - '?' => true, - '^' => true, - '|' => true, - '~' => true, - ]; - - private static $strip = [ - '(' => true, - ')' => true, - '[' => true, - ']' => true, - '{' => true, - '}' => true, - T_OBJECT_OPERATOR => true, - T_DOUBLE_COLON => true, - T_NS_SEPARATOR => true, - ]; - - private static $classcalls = [ - T_DOUBLE_COLON => true, - T_OBJECT_OPERATOR => true, - ]; - - private static $namespace = [ - T_STRING => true, - ]; - - /** - * @psalm-param callable-array|callable-string $function - * - * @psalm-return list<array{parameters: list, modifiers: list<PhpToken>}> - * - * @return array List of matching calls on the relevant line - */ - public static function getFunctionCalls(string $source, int $line, $function): array - { - static $up = [ - '(' => true, - '[' => true, - '{' => true, - T_CURLY_OPEN => true, - T_DOLLAR_OPEN_CURLY_BRACES => true, - ]; - static $down = [ - ')' => true, - ']' => true, - '}' => true, - ]; - static $modifiers = [ - '!' => true, - '@' => true, - '~' => true, - '+' => true, - '-' => true, - ]; - static $identifier = [ - T_DOUBLE_COLON => true, - T_STRING => true, - T_NS_SEPARATOR => true, - ]; - - if (KINT_PHP74) { - self::$operator[T_FN] = true; - self::$operator[T_COALESCE_EQUAL] = true; - } - - if (KINT_PHP80) { - $up[T_ATTRIBUTE] = true; - self::$operator[T_MATCH] = true; - self::$strip[T_NULLSAFE_OBJECT_OPERATOR] = true; - self::$classcalls[T_NULLSAFE_OBJECT_OPERATOR] = true; - self::$namespace[T_NAME_FULLY_QUALIFIED] = true; - self::$namespace[T_NAME_QUALIFIED] = true; - self::$namespace[T_NAME_RELATIVE] = true; - $identifier[T_NAME_FULLY_QUALIFIED] = true; - $identifier[T_NAME_QUALIFIED] = true; - $identifier[T_NAME_RELATIVE] = true; - } - - /** @psalm-var list<PhpToken> */ - $tokens = \token_get_all($source); - $cursor = 1; - $function_calls = []; - - // Performance optimization preventing backwards loops - /** @psalm-var array<PhpToken|null> */ - $prev_tokens = [null, null, null]; - - if (\is_array($function)) { - $class = \explode('\\', $function[0]); - $class = \strtolower(\end($class)); - $function = \strtolower($function[1]); - } else { - $class = null; - /** - * @psalm-suppress RedundantFunctionCallGivenDocblockType - */ - $function = \strtolower($function); - } - - // Loop through tokens - foreach ($tokens as $index => $token) { - if (!\is_array($token)) { - continue; - } - - // Count newlines for line number instead of using $token[2] - // since certain situations (String tokens after whitespace) may - // not have the correct line number unless you do this manually - $cursor += \substr_count($token[1], "\n"); - if ($cursor > $line) { - break; - } - - // Store the last real tokens for later - if (isset(self::$ignore[$token[0]])) { - continue; - } - - $prev_tokens = [$prev_tokens[1], $prev_tokens[2], $token]; - - // Check if it's the right type to be the function we're looking for - if (!isset(self::$namespace[$token[0]])) { - continue; - } - - $ns = \explode('\\', \strtolower($token[1])); - - if (\end($ns) !== $function) { - continue; - } - - // Check if it's a function call - $nextReal = self::realTokenIndex($tokens, $index); - if (!isset($nextReal, $tokens[$nextReal]) || '(' !== $tokens[$nextReal]) { - continue; - } - - // Check if it matches the signature - if (null === $class) { - if ($prev_tokens[1] && isset(self::$classcalls[$prev_tokens[1][0]])) { - continue; - } - } else { - if (!$prev_tokens[1] || T_DOUBLE_COLON !== $prev_tokens[1][0]) { - continue; - } - - if (!$prev_tokens[0] || !isset(self::$namespace[$prev_tokens[0][0]])) { - continue; - } - - // All self::$namespace tokens are T_ constants - /** @psalm-var PhpTokenArray $prev_tokens[0] */ - $ns = \explode('\\', \strtolower($prev_tokens[0][1])); - - if (\end($ns) !== $class) { - continue; - } - } - - $inner_cursor = $cursor; - $depth = 1; // The depth respective to the function call - $offset = $nextReal + 1; // The start of the function call - $instring = false; // Whether we're in a string or not - $realtokens = false; // Whether the current scope contains anything meaningful or not - $paramrealtokens = false; // Whether the current parameter contains anything meaningful - $params = []; // All our collected parameters - $shortparam = []; // The short version of the parameter - $param_start = $offset; // The distance to the start of the parameter - - // Loop through the following tokens until the function call ends - while (isset($tokens[$offset])) { - $token = $tokens[$offset]; - - // Ensure that the $inner_cursor is correct and - // that $token is either a T_ constant or a string - if (\is_array($token)) { - $inner_cursor += \substr_count($token[1], "\n"); - } - - if (!isset(self::$ignore[$token[0]]) && !isset($down[$token[0]])) { - $paramrealtokens = $realtokens = true; - } - - // If it's a token that makes us to up a level, increase the depth - if (isset($up[$token[0]])) { - if (1 === $depth) { - $shortparam[] = $token; - $realtokens = false; - } - - ++$depth; - } elseif (isset($down[$token[0]])) { - --$depth; - - // If this brings us down to the parameter level, and we've had - // real tokens since going up, fill the $shortparam with an ellipsis - if (1 === $depth) { - if ($realtokens) { - $shortparam[] = '...'; - } - $shortparam[] = $token; - } - } elseif ('"' === $token[0]) { - // Strings use the same symbol for up and down, but we can - // only ever be inside one string, so just use a bool for that - if ($instring) { - --$depth; - if (1 === $depth) { - $shortparam[] = '...'; - } - } else { - ++$depth; - } - - $instring = !$instring; - - $shortparam[] = '"'; - } elseif (1 === $depth) { - if (',' === $token[0]) { - $params[] = [ - 'full' => \array_slice($tokens, $param_start, $offset - $param_start), - 'short' => $shortparam, - ]; - $shortparam = []; - $paramrealtokens = false; - $param_start = $offset + 1; - } elseif (T_CONSTANT_ENCAPSED_STRING === $token[0] && \strlen($token[1]) > 2) { - $shortparam[] = $token[1][0].'...'.$token[1][0]; - } else { - $shortparam[] = $token; - } - } - - // Depth has dropped to 0 (So we've hit the closing paren) - if ($depth <= 0) { - if ($paramrealtokens) { - $params[] = [ - 'full' => \array_slice($tokens, $param_start, $offset - $param_start), - 'short' => $shortparam, - ]; - } - - break; - } - - ++$offset; - } - - // If we're not passed (or at) the line at the end - // of the function call, we're too early so skip it - if ($inner_cursor < $line) { - continue; - } - - // Format the final output parameters - foreach ($params as &$param) { - $name = self::tokensFormatted($param['short']); - - $expression = false; - foreach ($name as $token) { - if (self::tokenIsOperator($token)) { - $expression = true; - break; - } - } - - $param = [ - 'name' => self::tokensToString($name), - 'path' => self::tokensToString(self::tokensTrim($param['full'])), - 'expression' => $expression, - ]; - } - - // Skip first-class callables - /** @psalm-var list<array{name: string, path: string, expression: bool}> $params */ - if (KINT_PHP81 && 1 === \count($params) && '...' === \reset($params)['path']) { - continue; - } - - // Get the modifiers - --$index; - - while (isset($tokens[$index])) { - if (!isset(self::$ignore[$tokens[$index][0]]) && !isset($identifier[$tokens[$index][0]])) { - break; - } - - --$index; - } - - $mods = []; - - while (isset($tokens[$index])) { - if (isset(self::$ignore[$tokens[$index][0]])) { - --$index; - continue; - } - - if (isset($modifiers[$tokens[$index][0]])) { - $mods[] = $tokens[$index]; - --$index; - continue; - } - - break; - } - - $function_calls[] = [ - 'parameters' => $params, - 'modifiers' => $mods, - ]; - } - - return $function_calls; - } - - /** - * @psalm-param PhpToken[] $tokens - */ - private static function realTokenIndex(array $tokens, int $index): ?int - { - ++$index; - - while (isset($tokens[$index])) { - if (!isset(self::$ignore[$tokens[$index][0]])) { - return $index; - } - - ++$index; - } - - return null; - } - - /** - * We need a separate method to check if tokens are operators because we - * occasionally add "..." to short parameter versions. If we simply check - * for `$token[0]` then "..." will incorrectly match the "." operator. - * - * @psalm-param PhpToken $token The token to check - */ - private static function tokenIsOperator($token): bool - { - return '...' !== $token && isset(self::$operator[$token[0]]); - } - - /** - * @psalm-param PhpToken[] $tokens - */ - private static function tokensToString(array $tokens): string - { - $out = ''; - - foreach ($tokens as $token) { - if (\is_string($token)) { - $out .= $token; - } else { - $out .= $token[1]; - } - } - - return $out; - } - - /** - * @psalm-param PhpToken[] $tokens - */ - private static function tokensTrim(array $tokens): array - { - foreach ($tokens as $index => $token) { - if (isset(self::$ignore[$token[0]])) { - unset($tokens[$index]); - } else { - break; - } - } - - $tokens = \array_reverse($tokens); - - foreach ($tokens as $index => $token) { - if (isset(self::$ignore[$token[0]])) { - unset($tokens[$index]); - } else { - break; - } - } - - return \array_reverse($tokens); - } - - /** - * @psalm-param PhpToken[] $tokens - * - * @psalm-return PhpToken[] - */ - private static function tokensFormatted(array $tokens): array - { - $tokens = self::tokensTrim($tokens); - - $space = false; - $attribute = false; - // Keep space between "strip" symbols for different behavior for matches or closures - // Normally we want to strip spaces between strip tokens: $x{...}[...] - // However with closures and matches we don't: function (...) {...} - $ignorestrip = false; - $output = []; - $last = null; - - if (T_FUNCTION === $tokens[0][0] || - (KINT_PHP74 && T_FN === $tokens[0][0]) || - (KINT_PHP80 && T_MATCH === $tokens[0][0]) - ) { - $ignorestrip = true; - } - - foreach ($tokens as $index => $token) { - if (isset(self::$ignore[$token[0]])) { - if ($space) { - continue; - } - - $next = self::realTokenIndex($tokens, $index); - if (null === $next) { - // This should be impossible, since we always call tokensTrim first - break; // @codeCoverageIgnore - } - $next = $tokens[$next]; - - /** @psalm-var PhpToken $last */ - if ($attribute && ']' === $last[0]) { - $attribute = false; - } elseif (!$ignorestrip && isset(self::$strip[$last[0]]) && !self::tokenIsOperator($next)) { - continue; - } - - if (!$ignorestrip && isset(self::$strip[$next[0]]) && $last && !self::tokenIsOperator($last)) { - continue; - } - - $token = ' '; - $space = true; - } else { - if (KINT_PHP80 && $last && T_ATTRIBUTE == $last[0]) { - $attribute = true; - } - - $space = false; - $last = $token; - } - - $output[] = $token; - } - - return $output; - } -} diff --git a/system4.4.6/ThirdParty/Kint/FacadeInterface.php b/system4.4.6/ThirdParty/Kint/FacadeInterface.php deleted file mode 100644 index da4badcd..00000000 --- a/system4.4.6/ThirdParty/Kint/FacadeInterface.php +++ /dev/null @@ -1,49 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint; - -use Kint\Parser\Parser; -use Kint\Renderer\RendererInterface; -use Kint\Zval\Value; - -interface FacadeInterface -{ - public function __construct(Parser $p, RendererInterface $r); - - public function setStatesFromStatics(array $statics): void; - - public function setStatesFromCallInfo(array $info): void; - - /** - * Renders a list of vars including the pre and post renders. - * - * @param array $vars Data to dump - * @param Value[] $base The base value objects - */ - public function dumpAll(array $vars, array $base): string; -} diff --git a/system4.4.6/ThirdParty/Kint/Kint.php b/system4.4.6/ThirdParty/Kint/Kint.php deleted file mode 100644 index 418c1f3f..00000000 --- a/system4.4.6/ThirdParty/Kint/Kint.php +++ /dev/null @@ -1,729 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint; - -use InvalidArgumentException; -use Kint\Parser\ConstructablePluginInterface; -use Kint\Parser\Parser; -use Kint\Parser\PluginInterface; -use Kint\Renderer\RendererInterface; -use Kint\Renderer\TextRenderer; -use Kint\Zval\Value; - -/** - * @psalm-consistent-constructor - */ -class Kint implements FacadeInterface -{ - public const MODE_RICH = 'r'; - public const MODE_TEXT = 't'; - public const MODE_CLI = 'c'; - public const MODE_PLAIN = 'p'; - - /** - * @var mixed Kint mode - * - * false: Disabled - * true: Enabled, default mode selection - * other: Manual mode selection - */ - public static $enabled_mode = true; - - /** - * Default mode. - * - * @var string - */ - public static $mode_default = self::MODE_RICH; - - /** - * Default mode in CLI with cli_detection on. - * - * @var string - */ - public static $mode_default_cli = self::MODE_CLI; - - /** - * @var bool Return output instead of echoing - */ - public static $return; - - /** - * @var string format of the link to the source file in trace entries. - * - * Use %f for file path, %l for line number. - * - * [!] EXAMPLE (works with for phpStorm and RemoteCall Plugin): - * - * Kint::$file_link_format = 'http://localhost:8091/?message=%f:%l'; - */ - public static $file_link_format = ''; - - /** - * @var bool whether to display where kint was called from - */ - public static $display_called_from = true; - - /** - * @var array base directories of your application that will be displayed instead of the full path. - * - * Keys are paths, values are replacement strings - * - * [!] EXAMPLE (for Laravel 5): - * - * Kint::$app_root_dirs = [ - * base_path() => '<BASE>', - * app_path() => '<APP>', - * config_path() => '<CONFIG>', - * database_path() => '<DATABASE>', - * public_path() => '<PUBLIC>', - * resource_path() => '<RESOURCE>', - * storage_path() => '<STORAGE>', - * ]; - * - * Defaults to [$_SERVER['DOCUMENT_ROOT'] => '<ROOT>'] - */ - public static $app_root_dirs = []; - - /** - * @var int depth limit for array/object traversal. 0 for no limit - */ - public static $depth_limit = 7; - - /** - * @var bool expand all trees by default for rich view - */ - public static $expanded = false; - - /** - * @var bool enable detection when Kint is command line. - * - * Formats output with whitespace only; does not HTML-escape it - */ - public static $cli_detection = true; - - /** - * @var array Kint aliases. Add debug functions in Kint wrappers here to fix modifiers and backtraces - */ - public static $aliases = [ - ['Kint\\Kint', 'dump'], - ['Kint\\Kint', 'trace'], - ['Kint\\Kint', 'dumpAll'], - ]; - - /** - * @psalm-var class-string[] Array of modes to renderer class names - */ - public static $renderers = [ - self::MODE_RICH => \Kint\Renderer\RichRenderer::class, - self::MODE_PLAIN => \Kint\Renderer\PlainRenderer::class, - self::MODE_TEXT => \Kint\Renderer\TextRenderer::class, - self::MODE_CLI => \Kint\Renderer\CliRenderer::class, - ]; - - /** - * @psalm-var class-string[] - */ - public static $plugins = [ - \Kint\Parser\ArrayLimitPlugin::class, - \Kint\Parser\ArrayObjectPlugin::class, - \Kint\Parser\Base64Plugin::class, - \Kint\Parser\BlacklistPlugin::class, - \Kint\Parser\ClassMethodsPlugin::class, - \Kint\Parser\ClassStaticsPlugin::class, - \Kint\Parser\ClosurePlugin::class, - \Kint\Parser\ColorPlugin::class, - \Kint\Parser\DateTimePlugin::class, - \Kint\Parser\EnumPlugin::class, - \Kint\Parser\FsPathPlugin::class, - \Kint\Parser\IteratorPlugin::class, - \Kint\Parser\JsonPlugin::class, - \Kint\Parser\MicrotimePlugin::class, - \Kint\Parser\SimpleXMLElementPlugin::class, - \Kint\Parser\SplFileInfoPlugin::class, - \Kint\Parser\SplObjectStoragePlugin::class, - \Kint\Parser\StreamPlugin::class, - \Kint\Parser\TablePlugin::class, - \Kint\Parser\ThrowablePlugin::class, - \Kint\Parser\TimestampPlugin::class, - \Kint\Parser\TracePlugin::class, - \Kint\Parser\XmlPlugin::class, - ]; - - protected static $plugin_pool = []; - - protected $parser; - protected $renderer; - - public function __construct(Parser $p, RendererInterface $r) - { - $this->parser = $p; - $this->renderer = $r; - } - - public function setParser(Parser $p): void - { - $this->parser = $p; - } - - public function getParser(): Parser - { - return $this->parser; - } - - public function setRenderer(RendererInterface $r): void - { - $this->renderer = $r; - } - - public function getRenderer(): RendererInterface - { - return $this->renderer; - } - - public function setStatesFromStatics(array $statics): void - { - $this->renderer->setStatics($statics); - - $this->parser->setDepthLimit(isset($statics['depth_limit']) ? $statics['depth_limit'] : 0); - $this->parser->clearPlugins(); - - if (!isset($statics['plugins'])) { - return; - } - - $plugins = []; - - foreach ($statics['plugins'] as $plugin) { - if ($plugin instanceof PluginInterface) { - $plugins[] = $plugin; - } elseif (\is_string($plugin) && \is_subclass_of($plugin, ConstructablePluginInterface::class)) { - if (!isset(static::$plugin_pool[$plugin])) { - $p = new $plugin(); - static::$plugin_pool[$plugin] = $p; - } - $plugins[] = static::$plugin_pool[$plugin]; - } - } - - $plugins = $this->renderer->filterParserPlugins($plugins); - - foreach ($plugins as $plugin) { - $this->parser->addPlugin($plugin); - } - } - - public function setStatesFromCallInfo(array $info): void - { - $this->renderer->setCallInfo($info); - - if (isset($info['modifiers']) && \is_array($info['modifiers']) && \in_array('+', $info['modifiers'], true)) { - $this->parser->setDepthLimit(0); - } - - $this->parser->setCallerClass(isset($info['caller']['class']) ? $info['caller']['class'] : null); - } - - public function dumpAll(array $vars, array $base): string - { - if (\array_keys($vars) !== \array_keys($base)) { - throw new InvalidArgumentException('Kint::dumpAll requires arrays of identical size and keys as arguments'); - } - - $output = $this->renderer->preRender(); - - if ([] === $vars) { - $output .= $this->renderer->renderNothing(); - } - - foreach ($vars as $key => $arg) { - if (!$base[$key] instanceof Value) { - throw new InvalidArgumentException('Kint::dumpAll requires all elements of the second argument to be Value instances'); - } - $output .= $this->dumpVar($arg, $base[$key]); - } - - $output .= $this->renderer->postRender(); - - return $output; - } - - /** - * Dumps and renders a var. - * - * @param mixed &$var Data to dump - * @param Value $base Base object - */ - protected function dumpVar(&$var, Value $base): string - { - return $this->renderer->render( - $this->parser->parse($var, $base) - ); - } - - /** - * Gets all static settings at once. - * - * @return array Current static settings - */ - public static function getStatics(): array - { - return [ - 'aliases' => static::$aliases, - 'app_root_dirs' => static::$app_root_dirs, - 'cli_detection' => static::$cli_detection, - 'depth_limit' => static::$depth_limit, - 'display_called_from' => static::$display_called_from, - 'enabled_mode' => static::$enabled_mode, - 'expanded' => static::$expanded, - 'file_link_format' => static::$file_link_format, - 'mode_default' => static::$mode_default, - 'mode_default_cli' => static::$mode_default_cli, - 'plugins' => static::$plugins, - 'renderers' => static::$renderers, - 'return' => static::$return, - ]; - } - - /** - * Creates a Kint instance based on static settings. - * - * @param array $statics array of statics as returned by getStatics - */ - public static function createFromStatics(array $statics): ?FacadeInterface - { - $mode = false; - - if (isset($statics['enabled_mode'])) { - $mode = $statics['enabled_mode']; - - if (true === $mode && isset($statics['mode_default'])) { - $mode = $statics['mode_default']; - - if (PHP_SAPI === 'cli' && !empty($statics['cli_detection']) && isset($statics['mode_default_cli'])) { - $mode = $statics['mode_default_cli']; - } - } - } - - if (false === $mode) { - return null; - } - - /** @psalm-var class-string[] $statics['renderers'] */ - if (isset($statics['renderers'][$mode]) && \is_subclass_of($statics['renderers'][$mode], RendererInterface::class)) { - $renderer = new $statics['renderers'][$mode](); - } else { - $renderer = new TextRenderer(); - } - - return new static(new Parser(), $renderer); - } - - /** - * Creates base objects given parameter info. - * - * @param array $params Parameters as returned from getCallInfo - * @param int $argc Number of arguments the helper was called with - * - * @return Value[] Base objects for the arguments - */ - public static function getBasesFromParamInfo(array $params, int $argc): array - { - static $blacklist = [ - 'null', - 'true', - 'false', - 'array(...)', - 'array()', - '[...]', - '[]', - '(...)', - '()', - '"..."', - 'b"..."', - "'...'", - "b'...'", - ]; - - $params = \array_values($params); - $bases = []; - - for ($i = 0; $i < $argc; ++$i) { - $param = $params[$i] ?? null; - - if (!isset($param['name']) || \is_numeric($param['name'])) { - $name = null; - } elseif (\in_array(\strtolower($param['name']), $blacklist, true)) { - $name = null; - } else { - $name = $param['name']; - } - - if (isset($param['path'])) { - $access_path = $param['path']; - - if (!empty($param['expression'])) { - $access_path = '('.$access_path.')'; - } - } else { - $access_path = '$'.$i; - } - - $bases[] = Value::blank($name, $access_path); - } - - return $bases; - } - - /** - * Gets call info from the backtrace, alias, and argument count. - * - * Aliases must be normalized beforehand (Utils::normalizeAliases) - * - * @param array $aliases Call aliases as found in Kint::$aliases - * @param array[] $trace Backtrace - * @param array $args Arguments - * - * @return array Call info - */ - public static function getCallInfo(array $aliases, array $trace, array $args): array - { - $found = false; - $callee = null; - $caller = null; - $miniTrace = []; - - foreach ($trace as $index => $frame) { - if (Utils::traceFrameIsListed($frame, $aliases)) { - $found = true; - $miniTrace = []; - } - - if (!Utils::traceFrameIsListed($frame, ['spl_autoload_call'])) { - $miniTrace[] = $frame; - } - } - - if ($found) { - $callee = \reset($miniTrace) ?: null; - $caller = \next($miniTrace) ?: null; - } - - foreach ($miniTrace as $index => $frame) { - if ((0 === $index && $callee === $frame) || isset($frame['file'], $frame['line'])) { - unset($frame['object'], $frame['args']); - $miniTrace[$index] = $frame; - } else { - unset($miniTrace[$index]); - } - } - - $miniTrace = \array_values($miniTrace); - - $call = static::getSingleCall($callee ?: [], $args); - - $ret = [ - 'params' => null, - 'modifiers' => [], - 'callee' => $callee, - 'caller' => $caller, - 'trace' => $miniTrace, - ]; - - if ($call) { - $ret['params'] = $call['parameters']; - $ret['modifiers'] = $call['modifiers']; - } - - return $ret; - } - - /** - * Dumps a backtrace. - * - * Functionally equivalent to Kint::dump(1) or Kint::dump(debug_backtrace(true)) - * - * @return int|string - */ - public static function trace() - { - if (false === static::$enabled_mode) { - return 0; - } - - Utils::normalizeAliases(static::$aliases); - - $call_info = static::getCallInfo(static::$aliases, \debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS), []); - - $statics = static::getStatics(); - - if (\in_array('~', $call_info['modifiers'], true)) { - $statics['enabled_mode'] = static::MODE_TEXT; - } - - $kintstance = static::createFromStatics($statics); - if (!$kintstance) { - return 0; - } - - if (\in_array('-', $call_info['modifiers'], true)) { - while (\ob_get_level()) { - \ob_end_clean(); - } - } - - $kintstance->setStatesFromStatics($statics); - $kintstance->setStatesFromCallInfo($call_info); - - $trimmed_trace = []; - $trace = \debug_backtrace(); - - foreach ($trace as $frame) { - if (Utils::traceFrameIsListed($frame, static::$aliases)) { - $trimmed_trace = []; - } - - $trimmed_trace[] = $frame; - } - - \array_shift($trimmed_trace); - - $output = $kintstance->dumpAll( - [$trimmed_trace], - [Value::blank('Kint\\Kint::trace()', 'debug_backtrace()')] - ); - - if (static::$return || \in_array('@', $call_info['modifiers'], true)) { - return $output; - } - - echo $output; - - if (\in_array('-', $call_info['modifiers'], true)) { - \flush(); // @codeCoverageIgnore - } - - return 0; - } - - /** - * Dumps some data. - * - * Functionally equivalent to Kint::dump(1) or Kint::dump(debug_backtrace()) - * - * @psalm-param array ...$args - * - * @return int|string - */ - public static function dump(...$args) - { - if (false === static::$enabled_mode) { - return 0; - } - - Utils::normalizeAliases(static::$aliases); - - $call_info = static::getCallInfo(static::$aliases, \debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS), $args); - - $statics = static::getStatics(); - - if (\in_array('~', $call_info['modifiers'], true)) { - $statics['enabled_mode'] = static::MODE_TEXT; - } - - $kintstance = static::createFromStatics($statics); - if (!$kintstance) { - return 0; - } - - if (\in_array('-', $call_info['modifiers'], true)) { - while (\ob_get_level()) { - \ob_end_clean(); - } - } - - $kintstance->setStatesFromStatics($statics); - $kintstance->setStatesFromCallInfo($call_info); - - $bases = static::getBasesFromParamInfo($call_info['params'] ?? [], \count($args)); - $output = $kintstance->dumpAll(\array_values($args), $bases); - - if (static::$return || \in_array('@', $call_info['modifiers'], true)) { - return $output; - } - - echo $output; - - if (\in_array('-', $call_info['modifiers'], true)) { - \flush(); // @codeCoverageIgnore - } - - return 0; - } - - /** - * generic path display callback, can be configured in app_root_dirs; purpose is - * to show relevant path info and hide as much of the path as possible. - */ - public static function shortenPath(string $file): string - { - $file = \array_values(\array_filter(\explode('/', \str_replace('\\', '/', $file)), 'strlen')); - - $longest_match = 0; - $match = '/'; - - foreach (static::$app_root_dirs as $path => $alias) { - /** @psalm-var string $path */ - if (empty($path)) { - continue; - } - - $path = \array_values(\array_filter(\explode('/', \str_replace('\\', '/', $path)), 'strlen')); - - if (\array_slice($file, 0, \count($path)) === $path && \count($path) > $longest_match) { - $longest_match = \count($path); - $match = $alias; - } - } - - if ($longest_match) { - $file = \array_merge([$match], \array_slice($file, $longest_match)); - - return \implode('/', $file); - } - - // fallback to find common path with Kint dir - $kint = \array_values(\array_filter(\explode('/', \str_replace('\\', '/', KINT_DIR)), 'strlen')); - - foreach ($file as $i => $part) { - if (!isset($kint[$i]) || $kint[$i] !== $part) { - return ($i ? '.../' : '/').\implode('/', \array_slice($file, $i)); - } - } - - return '/'.\implode('/', $file); - } - - public static function getIdeLink(string $file, int $line): string - { - return \str_replace(['%f', '%l'], [$file, $line], static::$file_link_format); - } - - /** - * Returns specific function call info from a stack trace frame, or null if no match could be found. - * - * @param array $frame The stack trace frame in question - * @param array $args The arguments - * - * @return ?array params and modifiers, or null if a specific call could not be determined - */ - protected static function getSingleCall(array $frame, array $args): ?array - { - if ( - !isset($frame['file'], $frame['line'], $frame['function']) || - !\is_readable($frame['file']) || - !$source = \file_get_contents($frame['file']) - ) { - return null; - } - - if (empty($frame['class'])) { - $callfunc = $frame['function']; - } else { - $callfunc = [$frame['class'], $frame['function']]; - } - - $calls = CallFinder::getFunctionCalls($source, $frame['line'], $callfunc); - - $argc = \count($args); - - $return = null; - - foreach ($calls as $call) { - $is_unpack = false; - - // Handle argument unpacking as a last resort - foreach ($call['parameters'] as $i => &$param) { - if (0 === \strpos($param['name'], '...')) { - $is_unpack = true; - - // If we're on the last param - if ($i < $argc && $i === \count($call['parameters']) - 1) { - unset($call['parameters'][$i]); - - if (Utils::isAssoc($args)) { - // Associated unpacked arrays can be accessed by key - $keys = \array_slice(\array_keys($args), $i); - - foreach ($keys as $key) { - $call['parameters'][] = [ - 'name' => \substr($param['name'], 3).'['.\var_export($key, true).']', - 'path' => \substr($param['path'], 3).'['.\var_export($key, true).']', - 'expression' => false, - ]; - } - } else { - // Numeric unpacked arrays have their order blown away like a pass - // through array_values so we can't access them directly at all - for ($j = 0; $j + $i < $argc; ++$j) { - $call['parameters'][] = [ - 'name' => 'array_values('.\substr($param['name'], 3).')['.$j.']', - 'path' => 'array_values('.\substr($param['path'], 3).')['.$j.']', - 'expression' => false, - ]; - } - } - - $call['parameters'] = \array_values($call['parameters']); - } else { - $call['parameters'] = \array_slice($call['parameters'], 0, $i); - } - - break; - } - - if ($i >= $argc) { - continue 2; - } - } - - if ($is_unpack || \count($call['parameters']) === $argc) { - if (null === $return) { - $return = $call; - } else { - // If we have multiple calls on the same line with the same amount of arguments, - // we can't be sure which it is so just return null and let them figure it out - return null; - } - } - } - - return $return; - } -} diff --git a/system4.4.6/ThirdParty/Kint/LICENSE b/system4.4.6/ThirdParty/Kint/LICENSE deleted file mode 100644 index 01718d49..00000000 --- a/system4.4.6/ThirdParty/Kint/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/system4.4.6/ThirdParty/Kint/Parser/AbstractPlugin.php b/system4.4.6/ThirdParty/Kint/Parser/AbstractPlugin.php deleted file mode 100644 index a3f89684..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/AbstractPlugin.php +++ /dev/null @@ -1,45 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -/** - * @psalm-consistent-constructor - */ -abstract class AbstractPlugin implements ConstructablePluginInterface -{ - protected $parser; - - public function __construct() - { - } - - public function setParser(Parser $p): void - { - $this->parser = $p; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/ArrayLimitPlugin.php b/system4.4.6/ThirdParty/Kint/Parser/ArrayLimitPlugin.php deleted file mode 100644 index 2e7fca93..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/ArrayLimitPlugin.php +++ /dev/null @@ -1,144 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use InvalidArgumentException; -use Kint\Utils; -use Kint\Zval\Value; - -class ArrayLimitPlugin extends AbstractPlugin -{ - /** - * Maximum size of arrays before limiting. - * - * @var int - */ - public static $trigger = 1000; - - /** - * Maximum amount of items to show in a limited array. - * - * @var int - */ - public static $limit = 50; - - /** - * Don't limit arrays with string keys. - * - * @var bool - */ - public static $numeric_only = true; - - public function getTypes(): array - { - return ['array']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_BEGIN; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - if (self::$limit >= self::$trigger) { - throw new InvalidArgumentException('ArrayLimitPlugin::$limit can not be lower than ArrayLimitPlugin::$trigger'); - } - - $depth = $this->parser->getDepthLimit(); - - if (!$depth) { - return; - } - - if ($o->depth >= $depth - 1) { - return; - } - - if (\count($var) < self::$trigger) { - return; - } - - if (self::$numeric_only && Utils::isAssoc($var)) { - return; - } - - $base = clone $o; - $base->depth = $depth - 1; - $obj = $this->parser->parse($var, $base); - - if ('array' != $obj->type) { - return; // @codeCoverageIgnore - } - - $obj->depth = $o->depth; - $i = 0; - - foreach ($obj->value->contents as $child) { - // We only bother setting the correct depth for the first child, - // any deeper children should be cancelled by the depth limit - $child->depth = $o->depth + 1; - $this->recalcDepthLimit($child); - } - - $var2 = \array_slice($var, 0, self::$limit, true); - $base = clone $o; - $slice = $this->parser->parse($var2, $base); - - \array_splice($obj->value->contents, 0, self::$limit, $slice->value->contents); - - $o = $obj; - - $this->parser->haltParse(); - } - - protected function recalcDepthLimit(Value $o): void - { - $hintkey = \array_search('depth_limit', $o->hints, true); - if (false !== $hintkey) { - $o->hints[$hintkey] = 'array_limit'; - } - - $reps = $o->getRepresentations(); - if ($o->value) { - $reps[] = $o->value; - } - - foreach ($reps as $rep) { - if ($rep->contents instanceof Value) { - $this->recalcDepthLimit($rep->contents); - } elseif (\is_array($rep->contents)) { - foreach ($rep->contents as $child) { - if ($child instanceof Value) { - $this->recalcDepthLimit($child); - } - } - } - } - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/ArrayObjectPlugin.php b/system4.4.6/ThirdParty/Kint/Parser/ArrayObjectPlugin.php deleted file mode 100644 index 82ff7593..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/ArrayObjectPlugin.php +++ /dev/null @@ -1,65 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use ArrayObject; -use Kint\Zval\Value; - -class ArrayObjectPlugin extends AbstractPlugin -{ - public function getTypes(): array - { - return ['object']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_BEGIN; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - if (!$var instanceof ArrayObject) { - return; - } - - $flags = $var->getFlags(); - - if (ArrayObject::STD_PROP_LIST === $flags) { - return; - } - - $var->setFlags(ArrayObject::STD_PROP_LIST); - - $o = $this->parser->parse($var, $o); - - $var->setFlags($flags); - - $this->parser->haltParse(); - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/Base64Plugin.php b/system4.4.6/ThirdParty/Kint/Parser/Base64Plugin.php deleted file mode 100644 index a25a7343..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/Base64Plugin.php +++ /dev/null @@ -1,96 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use Kint\Zval\Representation\Representation; -use Kint\Zval\Value; - -class Base64Plugin extends AbstractPlugin -{ - /** - * The minimum length before a string will be considered for base64 decoding. - * - * @var int - */ - public static $min_length_hard = 16; - - /** - * The minimum length before the base64 decoding will take precedence. - * - * @var int - */ - public static $min_length_soft = 50; - - public function getTypes(): array - { - return ['string']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_SUCCESS; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - if (\strlen($var) < self::$min_length_hard || \strlen($var) % 4) { - return; - } - - if (\preg_match('/^[A-Fa-f0-9]+$/', $var)) { - return; - } - - if (!\preg_match('/^[A-Za-z0-9+\\/=]+$/', $var)) { - return; - } - - $data = \base64_decode($var, true); - - if (false === $data) { - return; - } - - $base_obj = new Value(); - $base_obj->depth = $o->depth + 1; - $base_obj->name = 'base64_decode('.$o->name.')'; - - if ($o->access_path) { - $base_obj->access_path = 'base64_decode('.$o->access_path.')'; - } - - $r = new Representation('Base64'); - $r->contents = $this->parser->parse($data, $base_obj); - - if (\strlen($var) > self::$min_length_soft) { - $o->addRepresentation($r, 0); - } else { - $o->addRepresentation($r); - } - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/BinaryPlugin.php b/system4.4.6/ThirdParty/Kint/Parser/BinaryPlugin.php deleted file mode 100644 index 56cf68a3..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/BinaryPlugin.php +++ /dev/null @@ -1,51 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use Kint\Zval\BlobValue; -use Kint\Zval\Value; - -class BinaryPlugin extends AbstractPlugin -{ - public function getTypes(): array - { - return ['string']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_SUCCESS; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - if (!$o instanceof BlobValue || !\in_array($o->encoding, ['ASCII', 'UTF-8'], true)) { - $o->value->hints[] = 'binary'; - } - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/BlacklistPlugin.php b/system4.4.6/ThirdParty/Kint/Parser/BlacklistPlugin.php deleted file mode 100644 index fa54a3a6..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/BlacklistPlugin.php +++ /dev/null @@ -1,101 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use Kint\Zval\InstanceValue; -use Kint\Zval\Value; -use Psr\Container\ContainerInterface; - -class BlacklistPlugin extends AbstractPlugin -{ - /** - * List of classes and interfaces to blacklist. - * - * @var array - */ - public static $blacklist = []; - - /** - * List of classes and interfaces to blacklist except when dumped directly. - * - * @var array - */ - public static $shallow_blacklist = [ContainerInterface::class]; - - public function getTypes(): array - { - return ['object']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_BEGIN; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - foreach (self::$blacklist as $class) { - if ($var instanceof $class) { - $this->blacklistValue($var, $o); - - return; - } - } - - if ($o->depth <= 0) { - return; - } - - foreach (self::$shallow_blacklist as $class) { - if ($var instanceof $class) { - $this->blacklistValue($var, $o); - - return; - } - } - } - - /** - * @param object &$var - */ - protected function blacklistValue(&$var, Value &$o): void - { - $object = new InstanceValue(); - $object->transplant($o); - $object->classname = \get_class($var); - $object->spl_object_hash = \spl_object_hash($var); - $object->clearRepresentations(); - $object->value = null; - $object->size = null; - $object->hints[] = 'blacklist'; - - $o = $object; - - $this->parser->haltParse(); - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/ClassMethodsPlugin.php b/system4.4.6/ThirdParty/Kint/Parser/ClassMethodsPlugin.php deleted file mode 100644 index e71d537a..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/ClassMethodsPlugin.php +++ /dev/null @@ -1,115 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use Kint\Zval\InstanceValue; -use Kint\Zval\MethodValue; -use Kint\Zval\Representation\Representation; -use Kint\Zval\Value; -use ReflectionClass; - -class ClassMethodsPlugin extends AbstractPlugin -{ - private static $cache = []; - - public function getTypes(): array - { - return ['object']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_SUCCESS; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - $class = \get_class($var); - - // assuming class definition will not change inside one request - if (!isset(self::$cache[$class])) { - $methods = []; - - $reflection = new ReflectionClass($class); - - foreach ($reflection->getMethods() as $method) { - $methods[] = new MethodValue($method); - } - - \usort($methods, ['Kint\\Parser\\ClassMethodsPlugin', 'sort']); - - self::$cache[$class] = $methods; - } - - if (!empty(self::$cache[$class])) { - $rep = new Representation('Available methods', 'methods'); - - // Can't cache access paths - foreach (self::$cache[$class] as $m) { - $method = clone $m; - $method->depth = $o->depth + 1; - - if (!$this->parser->childHasPath($o, $method)) { - $method->access_path = null; - } else { - $method->setAccessPathFrom($o); - } - - if ($method->owner_class !== $class && $d = $method->getRepresentation('method_definition')) { - $d = clone $d; - $d->inherited = true; - $method->replaceRepresentation($d); - } - - $rep->contents[] = $method; - } - - $o->addRepresentation($rep); - } - } - - private static function sort(MethodValue $a, MethodValue $b): int - { - $sort = ((int) $a->static) - ((int) $b->static); - if ($sort) { - return $sort; - } - - $sort = Value::sortByAccess($a, $b); - if ($sort) { - return $sort; - } - - $sort = InstanceValue::sortByHierarchy($a->owner_class, $b->owner_class); - if ($sort) { - return $sort; - } - - return $a->startline - $b->startline; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/ClassStaticsPlugin.php b/system4.4.6/ThirdParty/Kint/Parser/ClassStaticsPlugin.php deleted file mode 100644 index 5435da93..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/ClassStaticsPlugin.php +++ /dev/null @@ -1,154 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use Kint\Zval\InstanceValue; -use Kint\Zval\Representation\Representation; -use Kint\Zval\Value; -use ReflectionClass; -use ReflectionClassConstant; -use ReflectionProperty; -use UnitEnum; - -class ClassStaticsPlugin extends AbstractPlugin -{ - private static $cache = []; - - public function getTypes(): array - { - return ['object']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_SUCCESS; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - if (!$o instanceof InstanceValue) { - return; - } - - $class = \get_class($var); - $reflection = new ReflectionClass($class); - - // Constants - if (!isset(self::$cache[$class])) { - $consts = []; - - foreach ($reflection->getConstants() as $name => $val) { - // Skip enum constants - if ($var instanceof UnitEnum && $val instanceof UnitEnum && $o->classname == \get_class($val)) { - continue; - } - - $const = Value::blank($name); - $const->const = true; - $const->depth = $o->depth + 1; - $const->owner_class = $class; - $const->operator = Value::OPERATOR_STATIC; - - $creflection = new ReflectionClassConstant($class, $name); - - $const->access = Value::ACCESS_PUBLIC; - if ($creflection->isProtected()) { - $const->access = Value::ACCESS_PROTECTED; - } elseif ($creflection->isPrivate()) { - $const->access = Value::ACCESS_PRIVATE; - } - - if ($this->parser->childHasPath($o, $const)) { - $const->access_path = '\\'.$class.'::'.$name; - } - - $const = $this->parser->parse($val, $const); - - $consts[] = $const; - } - - self::$cache[$class] = $consts; - } - - $statics = new Representation('Static class properties', 'statics'); - $statics->contents = self::$cache[$class]; - - foreach ($reflection->getProperties(ReflectionProperty::IS_STATIC) as $static) { - $prop = new Value(); - $prop->name = '$'.$static->getName(); - $prop->depth = $o->depth + 1; - $prop->static = true; - $prop->operator = Value::OPERATOR_STATIC; - $prop->owner_class = $static->getDeclaringClass()->name; - - $prop->access = Value::ACCESS_PUBLIC; - if ($static->isProtected()) { - $prop->access = Value::ACCESS_PROTECTED; - } elseif ($static->isPrivate()) { - $prop->access = Value::ACCESS_PRIVATE; - } - - if ($this->parser->childHasPath($o, $prop)) { - $prop->access_path = '\\'.$prop->owner_class.'::'.$prop->name; - } - - $static->setAccessible(true); - - if (KINT_PHP74 && !$static->isInitialized()) { - $prop->type = 'uninitialized'; - $statics->contents[] = $prop; - } else { - $static = $static->getValue(); - $statics->contents[] = $this->parser->parse($static, $prop); - } - } - - if (empty($statics->contents)) { - return; - } - - \usort($statics->contents, ['Kint\\Parser\\ClassStaticsPlugin', 'sort']); - - $o->addRepresentation($statics); - } - - private static function sort(Value $a, Value $b): int - { - $sort = ((int) $a->const) - ((int) $b->const); - if ($sort) { - return $sort; - } - - $sort = Value::sortByAccess($a, $b); - if ($sort) { - return $sort; - } - - return InstanceValue::sortByHierarchy($a->owner_class, $b->owner_class); - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/ClosurePlugin.php b/system4.4.6/ThirdParty/Kint/Parser/ClosurePlugin.php deleted file mode 100644 index 84ea5826..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/ClosurePlugin.php +++ /dev/null @@ -1,96 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use Closure; -use Kint\Zval\ClosureValue; -use Kint\Zval\ParameterValue; -use Kint\Zval\Representation\Representation; -use Kint\Zval\Value; -use ReflectionFunction; - -class ClosurePlugin extends AbstractPlugin -{ - public function getTypes(): array - { - return ['object']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_SUCCESS; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - if (!$var instanceof Closure) { - return; - } - - $object = new ClosureValue(); - $object->transplant($o); - $o = $object; - $object->removeRepresentation('properties'); - - $closure = new ReflectionFunction($var); - - $o->filename = $closure->getFileName(); - $o->startline = $closure->getStartLine(); - - foreach ($closure->getParameters() as $param) { - $o->parameters[] = new ParameterValue($param); - } - - $p = new Representation('Parameters'); - $p->contents = $o->parameters; - $o->addRepresentation($p, 0); - - $statics = []; - - if ($v = $closure->getClosureThis()) { - $statics = ['this' => $v]; - } - - if (\count($statics = $statics + $closure->getStaticVariables())) { - $statics_parsed = []; - - foreach ($statics as $name => &$static) { - $obj = Value::blank('$'.$name); - $obj->depth = $o->depth + 1; - $statics_parsed[$name] = $this->parser->parse($static, $obj); - if (null === $statics_parsed[$name]->value) { - $statics_parsed[$name]->access_path = null; - } - } - - $r = new Representation('Uses'); - $r->contents = $statics_parsed; - $o->addRepresentation($r, 0); - } - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/ColorPlugin.php b/system4.4.6/ThirdParty/Kint/Parser/ColorPlugin.php deleted file mode 100644 index 2a58cb9a..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/ColorPlugin.php +++ /dev/null @@ -1,65 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use Kint\Zval\Representation\ColorRepresentation; -use Kint\Zval\Value; - -class ColorPlugin extends AbstractPlugin -{ - public function getTypes(): array - { - return ['string']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_SUCCESS; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - if (\strlen($var) > 32) { - return; - } - - $trimmed = \strtolower(\trim($var)); - - if (!isset(ColorRepresentation::$color_map[$trimmed]) && !\preg_match('/^(?:(?:rgb|hsl)[^\\)]{6,}\\)|#[0-9a-fA-F]{3,8})$/', $trimmed)) { - return; - } - - $rep = new ColorRepresentation($var); - - if ($rep->variant) { - $o->removeRepresentation($o->value); - $o->addRepresentation($rep, 0); - $o->hints[] = 'color'; - } - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/ConstructablePluginInterface.php b/system4.4.6/ThirdParty/Kint/Parser/ConstructablePluginInterface.php deleted file mode 100644 index 689b24e6..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/ConstructablePluginInterface.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -interface ConstructablePluginInterface extends PluginInterface -{ - public function __construct(); -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/DOMDocumentPlugin.php b/system4.4.6/ThirdParty/Kint/Parser/DOMDocumentPlugin.php deleted file mode 100644 index 84cfbf83..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/DOMDocumentPlugin.php +++ /dev/null @@ -1,356 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use DOMNamedNodeMap; -use DOMNode; -use DOMNodeList; -use InvalidArgumentException; -use Kint\Zval\BlobValue; -use Kint\Zval\InstanceValue; -use Kint\Zval\Representation\Representation; -use Kint\Zval\Value; - -/** - * The DOMDocument parser plugin is particularly useful as it is both the only - * way to see inside the DOMNode without print_r, and the only way to see mixed - * text and node inside XML (SimpleXMLElement will strip out the text). - */ -class DOMDocumentPlugin extends AbstractPlugin -{ - /** - * List of properties to skip parsing. - * - * The properties of a DOMNode can do a *lot* of damage to debuggers. The - * DOMNode contains not one, not two, not three, not four, not 5, not 6, - * not 7 but 8 different ways to recurse into itself: - * * firstChild - * * lastChild - * * previousSibling - * * nextSibling - * * ownerDocument - * * parentNode - * * childNodes - * * attributes - * - * All of this combined: the tiny SVGs used as the caret in Kint are already - * enough to make parsing and rendering take over a second, and send memory - * usage over 128 megs. So we blacklist every field we don't strictly need - * and hope that that's good enough. - * - * In retrospect - this is probably why print_r does the same - * - * @var array - */ - public static $blacklist = [ - 'parentNode' => 'DOMNode', - 'firstChild' => 'DOMNode', - 'lastChild' => 'DOMNode', - 'previousSibling' => 'DOMNode', - 'nextSibling' => 'DOMNode', - 'ownerDocument' => 'DOMDocument', - ]; - - /** - * Show all properties and methods. - * - * @var bool - */ - public static $verbose = false; - - public function getTypes(): array - { - return ['object']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_SUCCESS; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - if (!$o instanceof InstanceValue) { - return; - } - - if ($var instanceof DOMNamedNodeMap || $var instanceof DOMNodeList) { - $this->parseList($var, $o, $trigger); - - return; - } - - if ($var instanceof DOMNode) { - $this->parseNode($var, $o); - - return; - } - } - - /** - * @param DOMNamedNodeMap|DOMNodeList &$var - */ - protected function parseList($var, InstanceValue &$o, int $trigger): void - { - if (!$var instanceof DOMNamedNodeMap && !$var instanceof DOMNodeList) { - return; - } - - // Recursion should never happen, should always be stopped at the parent - // DOMNode. Depth limit on the other hand we're going to skip since - // that would show an empty iterator and rather useless. Let the depth - // limit hit the children (DOMNodeList only has DOMNode as children) - if ($trigger & Parser::TRIGGER_RECURSION) { - return; - } - - $o->size = $var->length; - if (0 === $o->size) { - $o->replaceRepresentation(new Representation('Iterator')); - $o->size = null; - - return; - } - - // Depth limit - // Make empty iterator representation since we need it in DOMNode to point out depth limits - if ($this->parser->getDepthLimit() && $o->depth + 1 >= $this->parser->getDepthLimit()) { - $b = new Value(); - $b->name = $o->classname.' Iterator Contents'; - $b->access_path = 'iterator_to_array('.$o->access_path.')'; - $b->depth = $o->depth + 1; - $b->hints[] = 'depth_limit'; - - $r = new Representation('Iterator'); - $r->contents = [$b]; - $o->replaceRepresentation($r, 0); - - return; - } - - $r = new Representation('Iterator'); - $o->replaceRepresentation($r, 0); - - foreach ($var as $key => $item) { - $base_obj = new Value(); - $base_obj->depth = $o->depth + 1; - $base_obj->name = $item->nodeName; - - if ($o->access_path) { - if ($var instanceof DOMNamedNodeMap) { - // We can't use getNamedItem() for attributes without a - // namespace because it will pick the first matching - // attribute of *any* namespace. - // - // Contrary to the PHP docs, getNamedItemNS takes null - // as a namespace argument for an unnamespaced item. - $base_obj->access_path = $o->access_path.'->getNamedItemNS('; - $base_obj->access_path .= \var_export($item->namespaceURI, true); - $base_obj->access_path .= ', '; - $base_obj->access_path .= \var_export($item->name, true); - $base_obj->access_path .= ')'; - } else { // DOMNodeList - $base_obj->access_path = $o->access_path.'->item('.\var_export($key, true).')'; - } - } - - $r->contents[] = $this->parser->parse($item, $base_obj); - } - } - - /** - * @psalm-param-out Value &$o - */ - protected function parseNode(DOMNode $var, InstanceValue &$o): void - { - // Fill the properties - // They can't be enumerated through reflection or casting, - // so we have to trust the docs and try them one at a time - $known_properties = [ - 'nodeValue', - 'childNodes', - 'attributes', - ]; - - if (self::$verbose) { - $known_properties = [ - 'nodeName', - 'nodeValue', - 'nodeType', - 'parentNode', - 'childNodes', - 'firstChild', - 'lastChild', - 'previousSibling', - 'nextSibling', - 'attributes', - 'ownerDocument', - 'namespaceURI', - 'prefix', - 'localName', - 'baseURI', - 'textContent', - ]; - } - - $childNodes = null; - $attributes = null; - - $rep = $o->value; - - foreach ($known_properties as $prop) { - $prop_obj = $this->parseProperty($o, $prop, $var); - $rep->contents[] = $prop_obj; - - if ('childNodes' === $prop) { - $childNodes = $prop_obj->getRepresentation('iterator'); - } elseif ('attributes' === $prop) { - $attributes = $prop_obj->getRepresentation('iterator'); - } - } - - if (!self::$verbose) { - $o->removeRepresentation('methods'); - $o->removeRepresentation('properties'); - } - - // Attributes and comments and text nodes don't - // need children or attributes of their own - if (\in_array($o->classname, ['DOMAttr', 'DOMText', 'DOMComment'], true)) { - $o = self::textualNodeToString($o); - - return; - } - - // Set the attributes - if ($attributes) { - $a = new Representation('Attributes'); - foreach ($attributes->contents as $attribute) { - $a->contents[] = $attribute; - } - $o->addRepresentation($a, 0); - } - - // Set the children - if ($childNodes) { - $c = new Representation('Children'); - - if (1 === \count($childNodes->contents) && ($node = \reset($childNodes->contents)) && \in_array('depth_limit', $node->hints, true)) { - $n = new InstanceValue(); - $n->transplant($node); - $n->name = 'childNodes'; - $n->classname = 'DOMNodeList'; - $c->contents = [$n]; - } else { - foreach ($childNodes->contents as $node) { - // Remove text nodes if theyre empty - if ($node instanceof BlobValue && '#text' === $node->name && (\ctype_space($node->value->contents) || '' === $node->value->contents)) { - continue; - } - - $c->contents[] = $node; - } - } - - $o->addRepresentation($c, 0); - } - - if ($childNodes) { - $o->size = \count($childNodes->contents); - } - - if (!$o->size) { - $o->size = null; - } - } - - protected function parseProperty(InstanceValue $o, string $prop, DOMNode &$var): Value - { - // Duplicating (And slightly optimizing) the Parser::parseObject() code here - $base_obj = new Value(); - $base_obj->depth = $o->depth + 1; - $base_obj->owner_class = $o->classname; - $base_obj->name = $prop; - $base_obj->operator = Value::OPERATOR_OBJECT; - $base_obj->access = Value::ACCESS_PUBLIC; - - if (null !== $o->access_path) { - $base_obj->access_path = $o->access_path; - - if (\preg_match('/^[A-Za-z0-9_]+$/', $base_obj->name)) { - $base_obj->access_path .= '->'.$base_obj->name; - } else { - $base_obj->access_path .= '->{'.\var_export($base_obj->name, true).'}'; - } - } - - if (!isset($var->{$prop})) { - $base_obj->type = 'null'; - } elseif (isset(self::$blacklist[$prop])) { - $b = new InstanceValue(); - $b->transplant($base_obj); - $base_obj = $b; - - $base_obj->hints[] = 'blacklist'; - $base_obj->classname = self::$blacklist[$prop]; - } elseif ('attributes' === $prop) { - // Attributes are strings. If we're too deep set the - // depth limit to enable parsing them, but no deeper. - if ($this->parser->getDepthLimit() && $this->parser->getDepthLimit() - 2 < $base_obj->depth) { - $base_obj->depth = $this->parser->getDepthLimit() - 2; - } - $base_obj = $this->parser->parse($var->{$prop}, $base_obj); - } else { - $base_obj = $this->parser->parse($var->{$prop}, $base_obj); - } - - return $base_obj; - } - - protected static function textualNodeToString(InstanceValue $o): Value - { - if (empty($o->value) || empty($o->value->contents) || empty($o->classname)) { - throw new InvalidArgumentException('Invalid DOMNode passed to DOMDocumentPlugin::textualNodeToString'); - } - - if (!\in_array($o->classname, ['DOMText', 'DOMAttr', 'DOMComment'], true)) { - throw new InvalidArgumentException('Invalid DOMNode passed to DOMDocumentPlugin::textualNodeToString'); - } - - foreach ($o->value->contents as $property) { - if ('nodeValue' === $property->name) { - $ret = clone $property; - $ret->name = $o->name; - - return $ret; - } - } - - throw new InvalidArgumentException('Invalid DOMNode passed to DOMDocumentPlugin::textualNodeToString'); - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/DateTimePlugin.php b/system4.4.6/ThirdParty/Kint/Parser/DateTimePlugin.php deleted file mode 100644 index 038acea1..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/DateTimePlugin.php +++ /dev/null @@ -1,57 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use DateTime; -use Kint\Zval\DateTimeValue; -use Kint\Zval\Value; - -class DateTimePlugin extends AbstractPlugin -{ - public function getTypes(): array - { - return ['object']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_SUCCESS; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - if (!$var instanceof DateTime) { - return; - } - - $object = new DateTimeValue($var); - $object->transplant($o); - - $o = $object; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/EnumPlugin.php b/system4.4.6/ThirdParty/Kint/Parser/EnumPlugin.php deleted file mode 100644 index d5d348aa..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/EnumPlugin.php +++ /dev/null @@ -1,88 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use BackedEnum; -use Kint\Zval\EnumValue; -use Kint\Zval\Representation\Representation; -use Kint\Zval\Value; -use UnitEnum; - -class EnumPlugin extends AbstractPlugin -{ - private static $cache = []; - - public function getTypes(): array - { - return ['object']; - } - - public function getTriggers(): int - { - if (!KINT_PHP81) { - return Parser::TRIGGER_NONE; - } - - return Parser::TRIGGER_SUCCESS; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - if (!$var instanceof UnitEnum) { - return; - } - - $class = \get_class($var); - - if (!isset(self::$cache[$class])) { - $cases = new Representation('Enum values', 'enum'); - $cases->contents = []; - - foreach ($var->cases() as $case) { - $base_obj = Value::blank($class.'::'.$case->name, '\\'.$class.'::'.$case->name); - $base_obj->depth = $o->depth + 1; - - if ($var instanceof BackedEnum) { - $c = $case->value; - $cases->contents[] = $this->parser->parse($c, $base_obj); - } else { - $cases->contents[] = $base_obj; - } - } - - self::$cache[$class] = $cases; - } - - $object = new EnumValue($var); - $object->transplant($o); - - $object->addRepresentation(self::$cache[$class], 0); - - $o = $object; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/FsPathPlugin.php b/system4.4.6/ThirdParty/Kint/Parser/FsPathPlugin.php deleted file mode 100644 index 7ec49de1..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/FsPathPlugin.php +++ /dev/null @@ -1,74 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use Kint\Zval\Representation\SplFileInfoRepresentation; -use Kint\Zval\Value; -use SplFileInfo; - -class FsPathPlugin extends AbstractPlugin -{ - public static $blacklist = ['/', '.']; - - public function getTypes(): array - { - return ['string']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_SUCCESS; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - if (\strlen($var) > 2048) { - return; - } - - if (!\preg_match('/[\\/\\'.DIRECTORY_SEPARATOR.']/', $var)) { - return; - } - - if (\preg_match('/[?<>"*|]/', $var)) { - return; - } - - if (!@\file_exists($var)) { - return; - } - - if (\in_array($var, self::$blacklist, true)) { - return; - } - - $r = new SplFileInfoRepresentation(new SplFileInfo($var)); - $r->hints[] = 'fspath'; - $o->addRepresentation($r, 0); - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/IteratorPlugin.php b/system4.4.6/ThirdParty/Kint/Parser/IteratorPlugin.php deleted file mode 100644 index 7ebfe73e..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/IteratorPlugin.php +++ /dev/null @@ -1,107 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use Kint\Zval\Representation\Representation; -use Kint\Zval\Value; -use Traversable; - -class IteratorPlugin extends AbstractPlugin -{ - /** - * List of classes and interfaces to blacklist. - * - * Certain classes (Such as PDOStatement) irreversibly lose information - * when traversed. Others are just huge. Either way, put them in here - * and you won't have to worry about them being parsed. - * - * @var array - */ - public static $blacklist = [ - 'DOMNamedNodeMap', - 'DOMNodeList', - 'mysqli_result', - 'PDOStatement', - 'SplFileObject', - ]; - - public function getTypes(): array - { - return ['object']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_SUCCESS; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - if (!$var instanceof Traversable) { - return; - } - - foreach (self::$blacklist as $class) { - if ($var instanceof $class) { - $b = new Value(); - $b->name = $class.' Iterator Contents'; - $b->access_path = 'iterator_to_array('.$o->access_path.', true)'; - $b->depth = $o->depth + 1; - $b->hints[] = 'blacklist'; - - $r = new Representation('Iterator'); - $r->contents = [$b]; - - $o->addRepresentation($r); - - return; - } - } - - $data = \iterator_to_array($var); - - $base_obj = new Value(); - $base_obj->depth = $o->depth; - - if ($o->access_path) { - $base_obj->access_path = 'iterator_to_array('.$o->access_path.')'; - } - - $r = new Representation('Iterator'); - $r->contents = $this->parser->parse($data, $base_obj); - $r->contents = $r->contents->value->contents; - - $primary = $o->getRepresentations(); - $primary = \reset($primary); - if ($primary && $primary === $o->value && [] === $primary->contents) { - $o->addRepresentation($r, 0); - } else { - $o->addRepresentation($r); - } - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/JsonPlugin.php b/system4.4.6/ThirdParty/Kint/Parser/JsonPlugin.php deleted file mode 100644 index 6bcf3a61..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/JsonPlugin.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use Kint\Zval\Representation\Representation; -use Kint\Zval\Value; - -class JsonPlugin extends AbstractPlugin -{ - public function getTypes(): array - { - return ['string']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_SUCCESS; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - if (!isset($var[0]) || ('{' !== $var[0] && '[' !== $var[0])) { - return; - } - - $json = \json_decode($var, true); - - if (!$json) { - return; - } - - $json = (array) $json; - - $base_obj = new Value(); - $base_obj->depth = $o->depth; - - if ($o->access_path) { - $base_obj->access_path = 'json_decode('.$o->access_path.', true)'; - } - - $r = new Representation('Json'); - $r->contents = $this->parser->parse($json, $base_obj); - - if (!\in_array('depth_limit', $r->contents->hints, true)) { - $r->contents = $r->contents->value->contents; - } - - $o->addRepresentation($r, 0); - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/MicrotimePlugin.php b/system4.4.6/ThirdParty/Kint/Parser/MicrotimePlugin.php deleted file mode 100644 index 9531bbe7..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/MicrotimePlugin.php +++ /dev/null @@ -1,107 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use Kint\Zval\Representation\MicrotimeRepresentation; -use Kint\Zval\Value; - -class MicrotimePlugin extends AbstractPlugin -{ - private static $last = null; - private static $start = null; - private static $times = 0; - private static $group = 0; - - public function getTypes(): array - { - return ['string', 'double']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_SUCCESS; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - if (0 !== $o->depth) { - return; - } - - if (\is_string($var)) { - if ('microtime()' !== $o->name || !\preg_match('/^0\\.[0-9]{8} [0-9]{10}$/', $var)) { - return; - } - - $usec = (int) \substr($var, 2, 6); - $sec = (int) \substr($var, 11, 10); - } else { - if ('microtime(...)' !== $o->name) { - return; - } - - $sec = (int) \floor($var); - $usec = $var - $sec; - $usec = (int) \floor($usec * 1000000); - } - - $time = $sec + ($usec / 1000000); - - if (null !== self::$last) { - $last_time = self::$last[0] + (self::$last[1] / 1000000); - $lap = $time - $last_time; - ++self::$times; - } else { - $lap = null; - self::$start = $time; - } - - self::$last = [$sec, $usec]; - - if (null !== $lap) { - $total = $time - self::$start; - $r = new MicrotimeRepresentation($sec, $usec, self::$group, $lap, $total, self::$times); - } else { - $r = new MicrotimeRepresentation($sec, $usec, self::$group); - } - $r->contents = $var; - $r->implicit_label = true; - - $o->removeRepresentation($o->value); - $o->addRepresentation($r); - $o->hints[] = 'microtime'; - } - - public static function clean(): void - { - self::$last = null; - self::$start = null; - self::$times = 0; - ++self::$group; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/MysqliPlugin.php b/system4.4.6/ThirdParty/Kint/Parser/MysqliPlugin.php deleted file mode 100644 index 90a4abd6..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/MysqliPlugin.php +++ /dev/null @@ -1,193 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use Kint\Zval\Value; -use mysqli; -use ReflectionClass; -use Throwable; - -/** - * Adds support for mysqli object parsing. - * - * Due to the way mysqli is implemented in PHP, this will cause - * warnings on certain mysqli objects if screaming is enabled. - */ -class MysqliPlugin extends AbstractPlugin -{ - // These 'properties' are actually globals - protected $always_readable = [ - 'client_version' => true, - 'connect_errno' => true, - 'connect_error' => true, - ]; - - // These are readable on empty mysqli objects, but not on failed connections - protected $empty_readable = [ - 'client_info' => true, - 'errno' => true, - 'error' => true, - ]; - - // These are only readable on connected mysqli objects - protected $connected_readable = [ - 'affected_rows' => true, - 'error_list' => true, - 'field_count' => true, - 'host_info' => true, - 'info' => true, - 'insert_id' => true, - 'server_info' => true, - 'server_version' => true, - 'sqlstate' => true, - 'protocol_version' => true, - 'thread_id' => true, - 'warning_count' => true, - ]; - - public function getTypes(): array - { - return ['object']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_COMPLETE; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - if (!$var instanceof mysqli) { - return; - } - - /** @psalm-var ?string $var->sqlstate */ - try { - $connected = \is_string(@$var->sqlstate); - } catch (Throwable $t) { - $connected = false; - } - - /** @psalm-var ?string $var->client_info */ - try { - $empty = !$connected && \is_string(@$var->client_info); - } catch (Throwable $t) { // @codeCoverageIgnore - // Only possible in PHP 8.0. Before 8.0 there's no exception, - // after 8.1 there are no failed connection objects - $empty = false; // @codeCoverageIgnore - } - - foreach ($o->value->contents as $key => $obj) { - if (isset($this->connected_readable[$obj->name])) { - if (!$connected) { - continue; - } - } elseif (isset($this->empty_readable[$obj->name])) { - // No failed connections after PHP 8.1 - if (!$connected && !$empty) { // @codeCoverageIgnore - continue; // @codeCoverageIgnore - } - } elseif (!isset($this->always_readable[$obj->name])) { - continue; - } - - if ('null' !== $obj->type) { - continue; - } - - // @codeCoverageIgnoreStart - // All of this is irellevant after 8.1, - // we have separate logic for that below - - $param = $var->{$obj->name}; - - if (null === $param) { - continue; - } - - $base = Value::blank($obj->name, $obj->access_path); - - $base->depth = $obj->depth; - $base->owner_class = $obj->owner_class; - $base->operator = $obj->operator; - $base->access = $obj->access; - $base->reference = $obj->reference; - - $o->value->contents[$key] = $this->parser->parse($param, $base); - - // @codeCoverageIgnoreEnd - } - - // PHP81 returns an empty array when casting a mysqli instance - if (KINT_PHP81) { - $r = new ReflectionClass(mysqli::class); - - $basepropvalues = []; - - foreach ($r->getProperties() as $prop) { - if ($prop->isStatic()) { - continue; // @codeCoverageIgnore - } - - $pname = $prop->getName(); - $param = null; - - if (isset($this->connected_readable[$pname])) { - if ($connected) { - $param = $var->{$pname}; - } - } else { - $param = $var->{$pname}; - } - - $child = new Value(); - $child->depth = $o->depth + 1; - $child->owner_class = mysqli::class; - $child->operator = Value::OPERATOR_OBJECT; - $child->name = $pname; - - if ($prop->isPublic()) { - $child->access = Value::ACCESS_PUBLIC; - } elseif ($prop->isProtected()) { // @codeCoverageIgnore - $child->access = Value::ACCESS_PROTECTED; // @codeCoverageIgnore - } elseif ($prop->isPrivate()) { // @codeCoverageIgnore - $child->access = Value::ACCESS_PRIVATE; // @codeCoverageIgnore - } - - // We only do base mysqli properties so we don't need to worry about complex names - if ($this->parser->childHasPath($o, $child)) { - $child->access_path .= $o->access_path.'->'.$child->name; - } - - $basepropvalues[] = $this->parser->parse($param, $child); - } - - $o->value->contents = \array_merge($basepropvalues, $o->value->contents); - } - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/Parser.php b/system4.4.6/ThirdParty/Kint/Parser/Parser.php deleted file mode 100644 index f044a9de..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/Parser.php +++ /dev/null @@ -1,655 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use DomainException; -use Exception; -use Kint\Zval\BlobValue; -use Kint\Zval\InstanceValue; -use Kint\Zval\Representation\Representation; -use Kint\Zval\ResourceValue; -use Kint\Zval\Value; -use ReflectionObject; -use ReflectionProperty; -use stdClass; -use TypeError; - -class Parser -{ - /** - * Plugin triggers. - * - * These are constants indicating trigger points for plugins - * - * BEGIN: Before normal parsing - * SUCCESS: After successful parsing - * RECURSION: After parsing cancelled by recursion - * DEPTH_LIMIT: After parsing cancelled by depth limit - * COMPLETE: SUCCESS | RECURSION | DEPTH_LIMIT - * - * While a plugin's getTriggers may return any of these - */ - public const TRIGGER_NONE = 0; - public const TRIGGER_BEGIN = 1; - public const TRIGGER_SUCCESS = 2; - public const TRIGGER_RECURSION = 4; - public const TRIGGER_DEPTH_LIMIT = 8; - public const TRIGGER_COMPLETE = 14; - - protected $caller_class; - protected $depth_limit = 0; - protected $marker; - protected $object_hashes = []; - protected $parse_break = false; - protected $plugins = []; - - /** - * @param int $depth_limit Maximum depth to parse data - * @param ?string $caller Caller class name - */ - public function __construct(int $depth_limit = 0, string $caller = null) - { - $this->marker = "kint\0".\random_bytes(16); - - $this->depth_limit = $depth_limit; - $this->caller_class = $caller; - } - - /** - * Set the caller class. - */ - public function setCallerClass(string $caller = null): void - { - $this->noRecurseCall(); - - $this->caller_class = $caller; - } - - public function getCallerClass(): ?string - { - return $this->caller_class; - } - - /** - * Set the depth limit. - * - * @param int $depth_limit Maximum depth to parse data, 0 for none - */ - public function setDepthLimit(int $depth_limit = 0): void - { - $this->noRecurseCall(); - - $this->depth_limit = $depth_limit; - } - - public function getDepthLimit(): int - { - return $this->depth_limit; - } - - /** - * Parses a variable into a Kint object structure. - * - * @param mixed &$var The input variable - * @param Value $o The base object - */ - public function parse(&$var, Value $o): Value - { - $o->type = \strtolower(\gettype($var)); - - if (!$this->applyPlugins($var, $o, self::TRIGGER_BEGIN)) { - return $o; - } - - switch ($o->type) { - case 'array': - return $this->parseArray($var, $o); - case 'boolean': - case 'double': - case 'integer': - case 'null': - return $this->parseGeneric($var, $o); - case 'object': - return $this->parseObject($var, $o); - case 'resource': - return $this->parseResource($var, $o); - case 'string': - return $this->parseString($var, $o); - case 'unknown type': - case 'resource (closed)': - default: - return $this->parseResourceClosed($var, $o); - } - } - - public function addPlugin(PluginInterface $p): bool - { - if (!$types = $p->getTypes()) { - return false; - } - - if (!$triggers = $p->getTriggers()) { - return false; - } - - $p->setParser($this); - - foreach ($types as $type) { - if (!isset($this->plugins[$type])) { - $this->plugins[$type] = [ - self::TRIGGER_BEGIN => [], - self::TRIGGER_SUCCESS => [], - self::TRIGGER_RECURSION => [], - self::TRIGGER_DEPTH_LIMIT => [], - ]; - } - - foreach ($this->plugins[$type] as $trigger => &$pool) { - if ($triggers & $trigger) { - $pool[] = $p; - } - } - } - - return true; - } - - public function clearPlugins(): void - { - $this->plugins = []; - } - - public function haltParse(): void - { - $this->parse_break = true; - } - - public function childHasPath(InstanceValue $parent, Value $child): bool - { - if ('__PHP_Incomplete_Class' === $parent->classname) { - return false; - } - - if ('object' === $parent->type && (null !== $parent->access_path || $child->static || $child->const)) { - if (Value::ACCESS_PUBLIC === $child->access) { - return true; - } - - if (Value::ACCESS_PRIVATE === $child->access && $this->caller_class) { - if ($this->caller_class === $child->owner_class) { - return true; - } - } elseif (Value::ACCESS_PROTECTED === $child->access && $this->caller_class) { - if ($this->caller_class === $child->owner_class) { - return true; - } - - if (\is_subclass_of($this->caller_class, $child->owner_class)) { - return true; - } - - if (\is_subclass_of($child->owner_class, $this->caller_class)) { - return true; - } - } - } - - return false; - } - - /** - * Returns an array without the recursion marker in it. - * - * DO NOT pass an array that has had it's marker removed back - * into the parser, it will result in an extra recursion - * - * @param array $array Array potentially containing a recursion marker - * - * @return array Array with recursion marker removed - */ - public function getCleanArray(array $array): array - { - unset($array[$this->marker]); - - return $array; - } - - protected function noRecurseCall(): void - { - $bt = \debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS); - - $caller_frame = [ - 'function' => __FUNCTION__, - ]; - - while (isset($bt[0]['object']) && $bt[0]['object'] === $this) { - $caller_frame = \array_shift($bt); - } - - foreach ($bt as $frame) { - if (isset($frame['object']) && $frame['object'] === $this) { - throw new DomainException(__CLASS__.'::'.$caller_frame['function'].' cannot be called from inside a parse'); - } - } - } - - /** - * @param null|bool|float|int &$var - */ - private function parseGeneric(&$var, Value $o): Value - { - $rep = new Representation('Contents'); - $rep->contents = $var; - $rep->implicit_label = true; - $o->addRepresentation($rep); - $o->value = $rep; - - $this->applyPlugins($var, $o, self::TRIGGER_SUCCESS); - - return $o; - } - - /** - * Parses a string into a Kint BlobValue structure. - * - * @param string &$var The input variable - * @param Value $o The base object - */ - private function parseString(string &$var, Value $o): Value - { - $string = new BlobValue(); - $string->transplant($o); - $string->encoding = BlobValue::detectEncoding($var); - $string->size = \strlen($var); - - $rep = new Representation('Contents'); - $rep->contents = $var; - $rep->implicit_label = true; - - $string->addRepresentation($rep); - $string->value = $rep; - - $this->applyPlugins($var, $string, self::TRIGGER_SUCCESS); - - return $string; - } - - /** - * Parses an array into a Kint object structure. - * - * @param array &$var The input variable - * @param Value $o The base object - */ - private function parseArray(array &$var, Value $o): Value - { - $array = new Value(); - $array->transplant($o); - $array->size = \count($var); - - if (isset($var[$this->marker])) { - --$array->size; - $array->hints[] = 'recursion'; - - $this->applyPlugins($var, $array, self::TRIGGER_RECURSION); - - return $array; - } - - $rep = new Representation('Contents'); - $rep->implicit_label = true; - $array->addRepresentation($rep); - $array->value = $rep; - - if (!$array->size) { - $this->applyPlugins($var, $array, self::TRIGGER_SUCCESS); - - return $array; - } - - if ($this->depth_limit && $o->depth >= $this->depth_limit) { - $array->hints[] = 'depth_limit'; - - $this->applyPlugins($var, $array, self::TRIGGER_DEPTH_LIMIT); - - return $array; - } - - $copy = \array_values($var); - - // It's really really hard to access numeric string keys in arrays, - // and it's really really hard to access integer properties in - // objects, so we just use array_values and index by counter to get - // at it reliably for reference testing. This also affects access - // paths since it's pretty much impossible to access these things - // without complicated stuff you should never need to do. - $i = 0; - - // Set the marker for recursion - $var[$this->marker] = $array->depth; - - $refmarker = new stdClass(); - - foreach ($var as $key => &$val) { - if ($key === $this->marker) { - continue; - } - - $child = new Value(); - $child->name = $key; - $child->depth = $array->depth + 1; - $child->access = Value::ACCESS_NONE; - $child->operator = Value::OPERATOR_ARRAY; - - if (null !== $array->access_path) { - if (\is_string($key) && (string) (int) $key === $key) { - $child->access_path = 'array_values('.$array->access_path.')['.$i.']'; // @codeCoverageIgnore - } else { - $child->access_path = $array->access_path.'['.\var_export($key, true).']'; - } - } - - $stash = $val; - try { - $copy[$i] = $refmarker; - } catch (TypeError $e) { - $child->reference = true; - } - if ($val === $refmarker) { - $child->reference = true; - $val = $stash; - } - - $rep->contents[] = $this->parse($val, $child); - ++$i; - } - - $this->applyPlugins($var, $array, self::TRIGGER_SUCCESS); - unset($var[$this->marker]); - - return $array; - } - - /** - * Parses an object into a Kint InstanceValue structure. - * - * @param object &$var The input variable - * @param Value $o The base object - */ - private function parseObject(&$var, Value $o): Value - { - $hash = \spl_object_hash($var); - $values = (array) $var; - - $object = new InstanceValue(); - $object->transplant($o); - $object->classname = \get_class($var); - $object->spl_object_hash = $hash; - $object->size = \count($values); - - if (KINT_PHP72) { - $object->spl_object_id = \spl_object_id($var); - } - - if (isset($this->object_hashes[$hash])) { - $object->hints[] = 'recursion'; - - $this->applyPlugins($var, $object, self::TRIGGER_RECURSION); - - return $object; - } - - $this->object_hashes[$hash] = $object; - - if ($this->depth_limit && $o->depth >= $this->depth_limit) { - $object->hints[] = 'depth_limit'; - - $this->applyPlugins($var, $object, self::TRIGGER_DEPTH_LIMIT); - unset($this->object_hashes[$hash]); - - return $object; - } - - $reflector = new ReflectionObject($var); - - if ($reflector->isUserDefined()) { - $object->filename = $reflector->getFileName(); - $object->startline = $reflector->getStartLine(); - } - - $rep = new Representation('Properties'); - - $readonly = []; - - // Reflection is both slower and more painful to use than array casting - // We only use it to identify readonly and uninitialized properties - if (KINT_PHP74 && '__PHP_Incomplete_Class' != $object->classname) { - $rprops = $reflector->getProperties(); - - while ($reflector = $reflector->getParentClass()) { - $rprops = \array_merge($rprops, $reflector->getProperties(ReflectionProperty::IS_PRIVATE)); - } - - foreach ($rprops as $rprop) { - if ($rprop->isStatic()) { - continue; - } - - $rprop->setAccessible(true); - - if (KINT_PHP81 && $rprop->isReadOnly()) { - if ($rprop->isPublic()) { - $readonly[$rprop->getName()] = true; - } elseif ($rprop->isProtected()) { - $readonly["\0*\0".$rprop->getName()] = true; - } elseif ($rprop->isPrivate()) { - $readonly["\0".$rprop->getDeclaringClass()->getName()."\0".$rprop->getName()] = true; - } - } - - if ($rprop->isInitialized($var)) { - continue; - } - - $undefined = null; - - $child = new Value(); - $child->type = 'undefined'; - $child->depth = $object->depth + 1; - $child->owner_class = $rprop->getDeclaringClass()->getName(); - $child->operator = Value::OPERATOR_OBJECT; - $child->name = $rprop->getName(); - $child->readonly = KINT_PHP81 && $rprop->isReadOnly(); - - if ($rprop->isPublic()) { - $child->access = Value::ACCESS_PUBLIC; - } elseif ($rprop->isProtected()) { - $child->access = Value::ACCESS_PROTECTED; - } elseif ($rprop->isPrivate()) { - $child->access = Value::ACCESS_PRIVATE; - } - - // Can't dynamically add undefined properties, so no need to use var_export - if ($this->childHasPath($object, $child)) { - $child->access_path .= $object->access_path.'->'.$child->name; - } - - if ($this->applyPlugins($undefined, $child, self::TRIGGER_BEGIN)) { - $this->applyPlugins($undefined, $child, self::TRIGGER_SUCCESS); - } - $rep->contents[] = $child; - } - } - - $copy = \array_values($values); - $refmarker = new stdClass(); - $i = 0; - - // Reflection will not show parent classes private properties, and if a - // property was unset it will happly trigger a notice looking for it. - foreach ($values as $key => &$val) { - // Casting object to array: - // private properties show in the form "\0$owner_class_name\0$property_name"; - // protected properties show in the form "\0*\0$property_name"; - // public properties show in the form "$property_name"; - // http://www.php.net/manual/en/language.types.array.php#language.types.array.casting - - $child = new Value(); - $child->depth = $object->depth + 1; - $child->owner_class = $object->classname; - $child->operator = Value::OPERATOR_OBJECT; - $child->access = Value::ACCESS_PUBLIC; - if (isset($readonly[$key])) { - $child->readonly = true; - } - - $split_key = \explode("\0", (string) $key, 3); - - if (3 === \count($split_key) && '' === $split_key[0]) { - $child->name = $split_key[2]; - if ('*' === $split_key[1]) { - $child->access = Value::ACCESS_PROTECTED; - } else { - $child->access = Value::ACCESS_PRIVATE; - $child->owner_class = $split_key[1]; - } - } elseif (KINT_PHP72) { - $child->name = (string) $key; - } else { - $child->name = $key; // @codeCoverageIgnore - } - - if ($this->childHasPath($object, $child)) { - $child->access_path = $object->access_path; - - if (!KINT_PHP72 && \is_int($child->name)) { - $child->access_path = 'array_values((array) '.$child->access_path.')['.$i.']'; // @codeCoverageIgnore - } elseif (\preg_match('/^[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*$/', $child->name)) { - $child->access_path .= '->'.$child->name; - } else { - $child->access_path .= '->{'.\var_export((string) $child->name, true).'}'; - } - } - - $stash = $val; - try { - $copy[$i] = $refmarker; - } catch (TypeError $e) { - $child->reference = true; - } - if ($val === $refmarker) { - $child->reference = true; - $val = $stash; - } - - $rep->contents[] = $this->parse($val, $child); - ++$i; - } - - $object->addRepresentation($rep); - $object->value = $rep; - $this->applyPlugins($var, $object, self::TRIGGER_SUCCESS); - unset($this->object_hashes[$hash]); - - return $object; - } - - /** - * Parses a resource into a Kint ResourceValue structure. - * - * @param resource &$var The input variable - * @param Value $o The base object - */ - private function parseResource(&$var, Value $o): Value - { - $resource = new ResourceValue(); - $resource->transplant($o); - $resource->resource_type = \get_resource_type($var); - - $this->applyPlugins($var, $resource, self::TRIGGER_SUCCESS); - - return $resource; - } - - /** - * Parses a closed resource into a Kint object structure. - * - * @param mixed &$var The input variable - * @param Value $o The base object - */ - private function parseResourceClosed(&$var, Value $o): Value - { - $o->type = 'resource (closed)'; - $this->applyPlugins($var, $o, self::TRIGGER_SUCCESS); - - return $o; - } - - /** - * Applies plugins for an object type. - * - * @param mixed &$var variable - * @param Value $o Kint object parsed so far - * @param int $trigger The trigger to check for the plugins - * - * @return bool Continue parsing - */ - private function applyPlugins(&$var, Value &$o, int $trigger): bool - { - $break_stash = $this->parse_break; - - /** @psalm-var bool */ - $this->parse_break = false; - - $plugins = []; - - if (isset($this->plugins[$o->type][$trigger])) { - $plugins = $this->plugins[$o->type][$trigger]; - } - - foreach ($plugins as $plugin) { - try { - $plugin->parse($var, $o, $trigger); - } catch (Exception $e) { - \trigger_error( - 'An exception ('.\get_class($e).') was thrown in '.$e->getFile().' on line '.$e->getLine().' while executing Kint Parser Plugin "'.\get_class($plugin).'". Error message: '.$e->getMessage(), - E_USER_WARNING - ); - } - - if ($this->parse_break) { - $this->parse_break = $break_stash; - - return false; - } - } - - $this->parse_break = $break_stash; - - return true; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/PluginInterface.php b/system4.4.6/ThirdParty/Kint/Parser/PluginInterface.php deleted file mode 100644 index 3afb1a77..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/PluginInterface.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use Kint\Zval\Value; - -interface PluginInterface -{ - public function setParser(Parser $p): void; - - public function getTypes(): array; - - public function getTriggers(): int; - - /** - * @psalm-param mixed &$var - */ - public function parse(&$var, Value &$o, int $trigger): void; -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/ProxyPlugin.php b/system4.4.6/ThirdParty/Kint/Parser/ProxyPlugin.php deleted file mode 100644 index 97050c6b..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/ProxyPlugin.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use InvalidArgumentException; -use Kint\Zval\Value; - -class ProxyPlugin implements PluginInterface -{ - protected $parser; - protected $types; - protected $triggers; - protected $callback; - - /** - * @param callable $callback - */ - public function __construct(array $types, int $triggers, $callback) - { - if (!\is_callable($callback)) { - throw new InvalidArgumentException('ProxyPlugin callback must be callable'); - } - - $this->types = $types; - $this->triggers = $triggers; - $this->callback = $callback; - } - - public function setParser(Parser $p): void - { - $this->parser = $p; - } - - public function getTypes(): array - { - return $this->types; - } - - public function getTriggers(): int - { - return $this->triggers; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - \call_user_func_array($this->callback, [&$var, &$o, $trigger, $this->parser]); - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/SerializePlugin.php b/system4.4.6/ThirdParty/Kint/Parser/SerializePlugin.php deleted file mode 100644 index 49910878..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/SerializePlugin.php +++ /dev/null @@ -1,109 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use Kint\Zval\Representation\Representation; -use Kint\Zval\Value; - -class SerializePlugin extends AbstractPlugin -{ - /** - * Disables automatic unserialization on arrays and objects. - * - * As the PHP manual notes: - * - * > Unserialization can result in code being loaded and executed due to - * > object instantiation and autoloading, and a malicious user may be able - * > to exploit this. - * - * The natural way to stop that from happening is to just refuse to unserialize - * stuff by default. Which is what we're doing for anything that's not scalar. - * - * @var bool - */ - public static $safe_mode = true; - - /** - * @var bool|class-string[] - */ - public static $allowed_classes = false; - - public function getTypes(): array - { - return ['string']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_SUCCESS; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - $trimmed = \rtrim($var); - - if ('N;' !== $trimmed && !\preg_match('/^(?:[COabis]:\\d+[:;]|d:\\d+(?:\\.\\d+);)/', $trimmed)) { - return; - } - - $options = ['allowed_classes' => self::$allowed_classes]; - - if (!self::$safe_mode || !\in_array($trimmed[0], ['C', 'O', 'a'], true)) { - // Suppress warnings on unserializeable variable - $data = @\unserialize($trimmed, $options); - - if (false === $data && 'b:0;' !== \substr($trimmed, 0, 4)) { - return; - } - } - - $base_obj = new Value(); - $base_obj->depth = $o->depth + 1; - $base_obj->name = 'unserialize('.$o->name.')'; - - if ($o->access_path) { - $base_obj->access_path = 'unserialize('.$o->access_path; - if (true === self::$allowed_classes) { - $base_obj->access_path .= ')'; - } else { - $base_obj->access_path .= ', '.\var_export($options, true).')'; - } - } - - $r = new Representation('Serialized'); - - if (isset($data)) { - $r->contents = $this->parser->parse($data, $base_obj); - } else { - $base_obj->hints[] = 'blacklist'; - $r->contents = $base_obj; - } - - $o->addRepresentation($r, 0); - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/SimpleXMLElementPlugin.php b/system4.4.6/ThirdParty/Kint/Parser/SimpleXMLElementPlugin.php deleted file mode 100644 index db6f9b9c..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/SimpleXMLElementPlugin.php +++ /dev/null @@ -1,221 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use Kint\Zval\BlobValue; -use Kint\Zval\Representation\Representation; -use Kint\Zval\SimpleXMLElementValue; -use Kint\Zval\Value; -use SimpleXMLElement; - -class SimpleXMLElementPlugin extends AbstractPlugin -{ - /** - * Show all properties and methods. - * - * @var bool - */ - public static $verbose = false; - - public function getTypes(): array - { - return ['object']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_SUCCESS; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - if (!$var instanceof SimpleXMLElement) { - return; - } - - if (!self::$verbose) { - $o->removeRepresentation('properties'); - $o->removeRepresentation('iterator'); - $o->removeRepresentation('methods'); - } - - // An invalid SimpleXMLElement can gum up the works with - // warnings if we call stuff children/attributes on it. - if (!$var) { - $o->size = null; - - return; - } - - $x = new SimpleXMLElementValue(); - $x->transplant($o); - - $namespaces = \array_merge([null], $var->getDocNamespaces()); - - // Attributes - $a = new Representation('Attributes'); - - $base_obj = new Value(); - $base_obj->depth = $x->depth; - - if ($x->access_path) { - $base_obj->access_path = '(string) '.$x->access_path; - } - - // Attributes are strings. If we're too deep set the - // depth limit to enable parsing them, but no deeper. - if ($this->parser->getDepthLimit() && $this->parser->getDepthLimit() - 2 < $base_obj->depth) { - $base_obj->depth = $this->parser->getDepthLimit() - 2; - } - - $attribs = []; - - foreach ($namespaces as $nsAlias => $nsUrl) { - if ($nsAttribs = $var->attributes($nsUrl)) { - $cleanAttribs = []; - foreach ($nsAttribs as $name => $attrib) { - $cleanAttribs[(string) $name] = $attrib; - } - - if (null === $nsUrl) { - $obj = clone $base_obj; - if ($obj->access_path) { - $obj->access_path .= '->attributes()'; - } - - $a->contents = $this->parser->parse($cleanAttribs, $obj)->value->contents; - } else { - $obj = clone $base_obj; - if ($obj->access_path) { - $obj->access_path .= '->attributes('.\var_export($nsAlias, true).', true)'; - } - - $cleanAttribs = $this->parser->parse($cleanAttribs, $obj)->value->contents; - - foreach ($cleanAttribs as $attribute) { - $attribute->name = $nsAlias.':'.$attribute->name; - $a->contents[] = $attribute; - } - } - } - } - - if ($a->contents) { - $x->addRepresentation($a, 0); - } - - // Children - $c = new Representation('Children'); - - foreach ($namespaces as $nsAlias => $nsUrl) { - // This is doubling items because of the root namespace - // and the implicit namespace on its children. - $thisNs = $var->getNamespaces(); - if (isset($thisNs['']) && $thisNs[''] === $nsUrl) { - continue; - } - - if ($nsChildren = $var->children($nsUrl)) { - $nsap = []; - foreach ($nsChildren as $name => $child) { - $obj = new Value(); - $obj->depth = $x->depth + 1; - $obj->name = (string) $name; - if ($x->access_path) { - if (null === $nsUrl) { - $obj->access_path = $x->access_path.'->children()->'; - } else { - $obj->access_path = $x->access_path.'->children('.\var_export($nsAlias, true).', true)->'; - } - - if (\preg_match('/^[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]+$/', (string) $name)) { - $obj->access_path .= (string) $name; - } else { - $obj->access_path .= '{'.\var_export((string) $name, true).'}'; - } - - if (isset($nsap[$obj->access_path])) { - ++$nsap[$obj->access_path]; - $obj->access_path .= '['.$nsap[$obj->access_path].']'; - } else { - $nsap[$obj->access_path] = 0; - } - } - - $value = $this->parser->parse($child, $obj); - - if ($value->access_path && 'string' === $value->type) { - $value->access_path = '(string) '.$value->access_path; - } - - $c->contents[] = $value; - } - } - } - - $x->size = \count($c->contents); - - if ($x->size) { - $x->addRepresentation($c, 0); - } else { - $x->size = null; - - if (\strlen((string) $var)) { - $base_obj = new BlobValue(); - $base_obj->depth = $x->depth + 1; - $base_obj->name = $x->name; - if ($x->access_path) { - $base_obj->access_path = '(string) '.$x->access_path; - } - - $value = (string) $var; - - $s = $this->parser->parse($value, $base_obj); - $srep = $s->getRepresentation('contents'); - $svalrep = $s->value && 'contents' == $s->value->getName() ? $s->value : null; - - if ($srep || $svalrep) { - $x->setIsStringValue(true); - $x->value = $srep ?: $svalrep; - - if ($srep) { - $x->replaceRepresentation($srep, 0); - } - } - - $reps = \array_reverse($s->getRepresentations()); - - foreach ($reps as $rep) { - $x->addRepresentation($rep, 0); - } - } - } - - $o = $x; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/SplFileInfoPlugin.php b/system4.4.6/ThirdParty/Kint/Parser/SplFileInfoPlugin.php deleted file mode 100644 index 696f3600..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/SplFileInfoPlugin.php +++ /dev/null @@ -1,57 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use Kint\Zval\Representation\SplFileInfoRepresentation; -use Kint\Zval\Value; -use SplFileInfo; -use SplFileObject; - -class SplFileInfoPlugin extends AbstractPlugin -{ - public function getTypes(): array - { - return ['object']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_COMPLETE; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - if (!$var instanceof SplFileInfo || $var instanceof SplFileObject) { - return; - } - - $r = new SplFileInfoRepresentation(clone $var); - $o->addRepresentation($r, 0); - $o->size = $r->getSize(); - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/SplObjectStoragePlugin.php b/system4.4.6/ThirdParty/Kint/Parser/SplObjectStoragePlugin.php deleted file mode 100644 index bd671ad6..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/SplObjectStoragePlugin.php +++ /dev/null @@ -1,56 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use Kint\Zval\Value; -use SplObjectStorage; - -class SplObjectStoragePlugin extends AbstractPlugin -{ - public function getTypes(): array - { - return ['object']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_COMPLETE; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - if (!$var instanceof SplObjectStorage || !($r = $o->getRepresentation('iterator'))) { - return; - } - - $r = $o->getRepresentation('iterator'); - if ($r) { - $o->size = !\is_array($r->contents) ? null : \count($r->contents); - } - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/StreamPlugin.php b/system4.4.6/ThirdParty/Kint/Parser/StreamPlugin.php deleted file mode 100644 index 748b53c5..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/StreamPlugin.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use Kint\Zval\Representation\Representation; -use Kint\Zval\ResourceValue; -use Kint\Zval\StreamValue; -use Kint\Zval\Value; - -class StreamPlugin extends AbstractPlugin -{ - public function getTypes(): array - { - return ['resource']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_SUCCESS; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - if (!$o instanceof ResourceValue || 'stream' !== $o->resource_type) { - return; - } - - // Doublecheck that the resource is open before we get the metadata - if (!\is_resource($var)) { - return; - } - - $meta = \stream_get_meta_data($var); - - $rep = new Representation('Stream'); - $rep->implicit_label = true; - - $base_obj = new Value(); - $base_obj->depth = $o->depth; - - if ($o->access_path) { - $base_obj->access_path = 'stream_get_meta_data('.$o->access_path.')'; - } - - $rep->contents = $this->parser->parse($meta, $base_obj); - - if (!\in_array('depth_limit', $rep->contents->hints, true)) { - $rep->contents = $rep->contents->value->contents; - } - - $o->addRepresentation($rep, 0); - $o->value = $rep; - - $stream = new StreamValue($meta); - $stream->transplant($o); - $o = $stream; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/TablePlugin.php b/system4.4.6/ThirdParty/Kint/Parser/TablePlugin.php deleted file mode 100644 index 5afe7598..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/TablePlugin.php +++ /dev/null @@ -1,95 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use Kint\Zval\Representation\Representation; -use Kint\Zval\Value; - -// Note: Interaction with ArrayLimitPlugin: -// Any array limited children will be shown in tables identically to -// non-array-limited children since the table only shows that it is an array -// and it's size anyway. Because ArrayLimitPlugin halts the parse on finding -// a limit all other plugins including this one are stopped, so you cannot get -// a tabular representation of an array that is longer than the limit. -class TablePlugin extends AbstractPlugin -{ - public function getTypes(): array - { - return ['array']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_SUCCESS; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - if (empty($o->value->contents)) { - return; - } - - $array = $this->parser->getCleanArray($var); - - if (\count($array) < 2) { - return; - } - - // Ensure this is an array of arrays and that all child arrays have the - // same keys. We don't care about their children - if there's another - // "table" inside we'll just make another one down the value tab - $keys = null; - foreach ($array as $elem) { - if (!\is_array($elem) || \count($elem) < 2) { - return; - } - - if (null === $keys) { - $keys = \array_keys($elem); - } elseif (\array_keys($elem) !== $keys) { - return; - } - } - - // Ensure none of the child arrays are recursion or depth limit. We - // don't care if their children are since they are the table cells - foreach ($o->value->contents as $childarray) { - if (empty($childarray->value->contents)) { - return; - } - } - - // Objects by reference for the win! We can do a copy-paste of the value - // representation contents and just slap a new hint on there and hey - // presto we have our table representation with no extra memory used! - $table = new Representation('Table'); - $table->contents = $o->value->contents; - $table->hints[] = 'table'; - $o->addRepresentation($table, 0); - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/ThrowablePlugin.php b/system4.4.6/ThirdParty/Kint/Parser/ThrowablePlugin.php deleted file mode 100644 index 7fd065f6..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/ThrowablePlugin.php +++ /dev/null @@ -1,61 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use Kint\Zval\Representation\SourceRepresentation; -use Kint\Zval\ThrowableValue; -use Kint\Zval\Value; -use Throwable; - -class ThrowablePlugin extends AbstractPlugin -{ - public function getTypes(): array - { - return ['object']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_SUCCESS; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - if (!$var instanceof Throwable) { - return; - } - - $throw = new ThrowableValue($var); - $throw->transplant($o); - $r = new SourceRepresentation($var->getFile(), $var->getLine()); - $r->showfilename = true; - $throw->addRepresentation($r, 0); - - $o = $throw; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/TimestampPlugin.php b/system4.4.6/ThirdParty/Kint/Parser/TimestampPlugin.php deleted file mode 100644 index 9136ca80..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/TimestampPlugin.php +++ /dev/null @@ -1,77 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use Kint\Zval\Value; - -class TimestampPlugin extends AbstractPlugin -{ - public static $blacklist = [ - 2147483648, - 2147483647, - 1073741824, - 1073741823, - ]; - - public function getTypes(): array - { - return ['string', 'integer']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_SUCCESS; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - if (\is_string($var) && !\ctype_digit($var)) { - return; - } - - if ($var < 0) { - return; - } - - if (\in_array($var, self::$blacklist, true)) { - return; - } - - $len = \strlen((string) $var); - - // Guess for anything between March 1973 and November 2286 - if (9 === $len || 10 === $len) { - // If it's an int or string that's this short it probably has no other meaning - // Additionally it's highly unlikely the shortValue will be clipped for length - // If you're writing a plugin that interferes with this, just put your - // parser plugin further down the list so that it gets loaded afterwards. - $o->value->label = 'Timestamp'; - $o->value->hints[] = 'timestamp'; - } - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/ToStringPlugin.php b/system4.4.6/ThirdParty/Kint/Parser/ToStringPlugin.php deleted file mode 100644 index 478442be..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/ToStringPlugin.php +++ /dev/null @@ -1,69 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use Kint\Zval\Representation\Representation; -use Kint\Zval\Value; -use ReflectionClass; - -class ToStringPlugin extends AbstractPlugin -{ - public static $blacklist = [ - 'SimpleXMLElement', - 'SplFileObject', - ]; - - public function getTypes(): array - { - return ['object']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_SUCCESS; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - $reflection = new ReflectionClass($var); - if (!$reflection->hasMethod('__toString')) { - return; - } - - foreach (self::$blacklist as $class) { - if ($var instanceof $class) { - return; - } - } - - $r = new Representation('toString'); - $r->contents = (string) $var; - - $o->addRepresentation($r); - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/TracePlugin.php b/system4.4.6/ThirdParty/Kint/Parser/TracePlugin.php deleted file mode 100644 index a5f47dcf..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/TracePlugin.php +++ /dev/null @@ -1,120 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use Kint\Utils; -use Kint\Zval\TraceFrameValue; -use Kint\Zval\TraceValue; -use Kint\Zval\Value; - -class TracePlugin extends AbstractPlugin -{ - public static $blacklist = ['spl_autoload_call']; - public static $path_blacklist = []; - - public function getTypes(): array - { - return ['array']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_SUCCESS; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - if (!$o->value) { - return; - } - - $trace = $this->parser->getCleanArray($var); - - if (\count($trace) !== \count($o->value->contents) || !Utils::isTrace($trace)) { - return; - } - - $traceobj = new TraceValue(); - $traceobj->transplant($o); - $rep = $traceobj->value; - - $old_trace = $rep->contents; - - Utils::normalizeAliases(self::$blacklist); - $path_blacklist = self::normalizePaths(self::$path_blacklist); - - $rep->contents = []; - - foreach ($old_trace as $frame) { - $index = $frame->name; - - if (!isset($trace[$index]['function'])) { - // Something's very very wrong here, but it's probably a plugin's fault - continue; - } - - if (Utils::traceFrameIsListed($trace[$index], self::$blacklist)) { - continue; - } - - if (isset($trace[$index]['file']) && ($realfile = \realpath($trace[$index]['file']))) { - foreach ($path_blacklist as $path) { - if (0 === \strpos($realfile, $path)) { - continue 2; - } - } - } - - $rep->contents[$index] = new TraceFrameValue($frame, $trace[$index]); - } - - \ksort($rep->contents); - $rep->contents = \array_values($rep->contents); - - $traceobj->clearRepresentations(); - $traceobj->addRepresentation($rep); - $traceobj->size = \count($rep->contents); - $o = $traceobj; - } - - protected static function normalizePaths(array $paths): array - { - $normalized = []; - - foreach ($paths as $path) { - $realpath = \realpath($path); - if (\is_dir($realpath)) { - $realpath .= DIRECTORY_SEPARATOR; - } - - $normalized[] = $realpath; - } - - return $normalized; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Parser/XmlPlugin.php b/system4.4.6/ThirdParty/Kint/Parser/XmlPlugin.php deleted file mode 100644 index a5a31abd..00000000 --- a/system4.4.6/ThirdParty/Kint/Parser/XmlPlugin.php +++ /dev/null @@ -1,152 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Parser; - -use DOMDocument; -use Exception; -use Kint\Zval\Representation\Representation; -use Kint\Zval\Value; - -class XmlPlugin extends AbstractPlugin -{ - /** - * Which method to parse the variable with. - * - * DOMDocument provides more information including the text between nodes, - * however it's memory usage is very high and it takes longer to parse and - * render. Plus it's a pain to work with. So SimpleXML is the default. - * - * @var string - */ - public static $parse_method = 'SimpleXML'; - - public function getTypes(): array - { - return ['string']; - } - - public function getTriggers(): int - { - return Parser::TRIGGER_SUCCESS; - } - - public function parse(&$var, Value &$o, int $trigger): void - { - if ('<?xml' !== \substr($var, 0, 5)) { - return; - } - - if (!\method_exists(\get_class($this), 'xmlTo'.self::$parse_method)) { - return; - } - - $xml = \call_user_func([\get_class($this), 'xmlTo'.self::$parse_method], $var, $o->access_path); - - if (empty($xml)) { - return; - } - - [$xml, $access_path, $name] = $xml; - - $base_obj = new Value(); - $base_obj->depth = $o->depth + 1; - $base_obj->name = $name; - $base_obj->access_path = $access_path; - - $r = new Representation('XML'); - $r->contents = $this->parser->parse($xml, $base_obj); - - $o->addRepresentation($r, 0); - } - - protected static function xmlToSimpleXML(string $var, ?string $parent_path): ?array - { - $errors = \libxml_use_internal_errors(true); - try { - $xml = \simplexml_load_string($var); - } catch (Exception $e) { - return null; - } finally { - \libxml_use_internal_errors($errors); - } - - if (false === $xml) { - return null; - } - - if (null === $parent_path) { - $access_path = null; - } else { - $access_path = 'simplexml_load_string('.$parent_path.')'; - } - - $name = $xml->getName(); - - return [$xml, $access_path, $name]; - } - - /** - * Get the DOMDocument info. - * - * If it errors loading then we wouldn't have gotten this far in the first place. - * - * @psalm-param non-empty-string $var The XML string - * - * @param ?string $parent_path The path to the parent, in this case the XML string - * - * @return ?array The root element DOMNode, the access path, and the root element name - */ - protected static function xmlToDOMDocument(string $var, ?string $parent_path): ?array - { - // There's no way to check validity in DOMDocument without making errors. For shame! - if (!self::xmlToSimpleXML($var, $parent_path)) { - return null; - } - - $xml = new DOMDocument(); - $xml->loadXML($var); - - if ($xml->childNodes->count() > 1) { - $xml = $xml->childNodes; - $access_path = 'childNodes'; - } else { - $xml = $xml->firstChild; - $access_path = 'firstChild'; - } - - if (null === $parent_path) { - $access_path = null; - } else { - $access_path = '(function($s){$x = new \\DomDocument(); $x->loadXML($s); return $x;})('.$parent_path.')->'.$access_path; - } - - $name = $xml->nodeName ?? null; - - return [$xml, $access_path, $name]; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/AbstractRenderer.php b/system4.4.6/ThirdParty/Kint/Renderer/AbstractRenderer.php deleted file mode 100644 index adec8f07..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/AbstractRenderer.php +++ /dev/null @@ -1,175 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer; - -use Kint\Zval\InstanceValue; -use Kint\Zval\Value; - -/** - * @psalm-type PluginMap array<string, class-string> - * - * @psalm-consistent-constructor - */ -abstract class AbstractRenderer implements RendererInterface -{ - public const SORT_NONE = 0; - public const SORT_VISIBILITY = 1; - public const SORT_FULL = 2; - - protected $call_info = []; - protected $statics = []; - protected $show_trace = true; - - public function setCallInfo(array $info): void - { - if (!isset($info['modifiers']) || !\is_array($info['modifiers'])) { - $info['modifiers'] = []; - } - - if (!isset($info['trace']) || !\is_array($info['trace'])) { - $info['trace'] = []; - } - - $this->call_info = [ - 'params' => $info['params'] ?? null, - 'modifiers' => $info['modifiers'], - 'callee' => $info['callee'] ?? null, - 'caller' => $info['caller'] ?? null, - 'trace' => $info['trace'], - ]; - } - - public function getCallInfo(): array - { - return $this->call_info; - } - - public function setStatics(array $statics): void - { - $this->statics = $statics; - $this->setShowTrace(!empty($statics['display_called_from'])); - } - - public function getStatics(): array - { - return $this->statics; - } - - public function setShowTrace(bool $show_trace): void - { - $this->show_trace = $show_trace; - } - - public function getShowTrace(): bool - { - return $this->show_trace; - } - - public function filterParserPlugins(array $plugins): array - { - return $plugins; - } - - public function preRender(): string - { - return ''; - } - - public function postRender(): string - { - return ''; - } - - /** - * Returns the first compatible plugin available. - * - * @psalm-param PluginMap $plugins Array of hints to class strings - * @psalm-param string[] $hints Array of object hints - * - * @psalm-return PluginMap Array of hints to class strings filtered and sorted by object hints - */ - public function matchPlugins(array $plugins, array $hints): array - { - $out = []; - - foreach ($hints as $key) { - if (isset($plugins[$key])) { - $out[$key] = $plugins[$key]; - } - } - - return $out; - } - - public static function sortPropertiesFull(Value $a, Value $b): int - { - $sort = Value::sortByAccess($a, $b); - if ($sort) { - return $sort; - } - - $sort = Value::sortByName($a, $b); - if ($sort) { - return $sort; - } - - return InstanceValue::sortByHierarchy($a->owner_class, $b->owner_class); - } - - /** - * Sorts an array of Value. - * - * @param Value[] $contents Object properties to sort - * - * @return Value[] - */ - public static function sortProperties(array $contents, int $sort): array - { - switch ($sort) { - case self::SORT_VISIBILITY: - // Containers to quickly stable sort by type - $containers = [ - Value::ACCESS_PUBLIC => [], - Value::ACCESS_PROTECTED => [], - Value::ACCESS_PRIVATE => [], - Value::ACCESS_NONE => [], - ]; - - foreach ($contents as $item) { - $containers[$item->access][] = $item; - } - - return \call_user_func_array('array_merge', $containers); - case self::SORT_FULL: - \usort($contents, [self::class, 'sortPropertiesFull']); - // no break - default: - return $contents; - } - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/CliRenderer.php b/system4.4.6/ThirdParty/Kint/Renderer/CliRenderer.php deleted file mode 100644 index c2ea103b..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/CliRenderer.php +++ /dev/null @@ -1,182 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer; - -use Kint\Zval\Value; -use Throwable; - -class CliRenderer extends TextRenderer -{ - /** - * @var bool enable colors - */ - public static $cli_colors = true; - - /** - * Forces utf8 output on windows. - * - * @var bool - */ - public static $force_utf8 = false; - - /** - * Detects the terminal width on startup. - * - * @var bool - */ - public static $detect_width = true; - - /** - * The minimum width to detect terminal size as. - * - * Less than this is ignored and falls back to default width. - * - * @var int - */ - public static $min_terminal_width = 40; - - /** - * Which stream to check for VT100 support on windows. - * - * uses STDOUT by default if it's defined - * - * @var ?resource - */ - public static $windows_stream = null; - - protected static $terminal_width = null; - - protected $windows_output = false; - - protected $colors = false; - - public function __construct() - { - parent::__construct(); - - if (!self::$force_utf8 && KINT_WIN) { - if (!KINT_PHP72 || !\function_exists('sapi_windows_vt100_support')) { - $this->windows_output = true; - } else { - $stream = self::$windows_stream; - - if (!$stream && \defined('STDOUT')) { - $stream = STDOUT; - } - - if (!$stream) { - $this->windows_output = true; - } else { - $this->windows_output = !\sapi_windows_vt100_support($stream); - } - } - } - - if (!self::$terminal_width) { - if (!KINT_WIN && self::$detect_width) { - try { - self::$terminal_width = (int) \exec('tput cols'); - } catch (Throwable $t) { - self::$terminal_width = self::$default_width; - } - } - - if (self::$terminal_width < self::$min_terminal_width) { - self::$terminal_width = self::$default_width; - } - } - - $this->colors = $this->windows_output ? false : self::$cli_colors; - - $this->header_width = self::$terminal_width; - } - - public function colorValue(string $string): string - { - if (!$this->colors) { - return $string; - } - - return "\x1b[32m".\str_replace("\n", "\x1b[0m\n\x1b[32m", $string)."\x1b[0m"; - } - - public function colorType(string $string): string - { - if (!$this->colors) { - return $string; - } - - return "\x1b[35;1m".\str_replace("\n", "\x1b[0m\n\x1b[35;1m", $string)."\x1b[0m"; - } - - public function colorTitle(string $string): string - { - if (!$this->colors) { - return $string; - } - - return "\x1b[36m".\str_replace("\n", "\x1b[0m\n\x1b[36m", $string)."\x1b[0m"; - } - - public function renderTitle(Value $o): string - { - if ($this->windows_output) { - return $this->utf8ToWindows(parent::renderTitle($o)); - } - - return parent::renderTitle($o); - } - - public function preRender(): string - { - return PHP_EOL; - } - - public function postRender(): string - { - if ($this->windows_output) { - return $this->utf8ToWindows(parent::postRender()); - } - - return parent::postRender(); - } - - public function escape(string $string, $encoding = false): string - { - return \str_replace("\x1b", '\\x1b', $string); - } - - protected function utf8ToWindows(string $string): string - { - return \str_replace( - ['┌', '═', '┐', '│', '└', '─', '┘'], - [' ', '=', ' ', '|', ' ', '-', ' '], - $string - ); - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/PlainRenderer.php b/system4.4.6/ThirdParty/Kint/Renderer/PlainRenderer.php deleted file mode 100644 index 7210f55f..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/PlainRenderer.php +++ /dev/null @@ -1,237 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer; - -use Kint\Kint; -use Kint\Zval\BlobValue; -use Kint\Zval\Value; - -class PlainRenderer extends TextRenderer -{ - public static $pre_render_sources = [ - 'script' => [ - ['Kint\\Renderer\\PlainRenderer', 'renderJs'], - ['Kint\\Renderer\\Text\\MicrotimePlugin', 'renderJs'], - ], - 'style' => [ - ['Kint\\Renderer\\PlainRenderer', 'renderCss'], - ], - 'raw' => [], - ]; - - /** - * Path to the CSS file to load by default. - * - * @var string - */ - public static $theme = 'plain.css'; - - /** - * Output htmlentities instead of utf8. - * - * @var bool - */ - public static $disable_utf8 = false; - - public static $needs_pre_render = true; - - public static $always_pre_render = false; - - protected $force_pre_render = false; - - public function __construct() - { - parent::__construct(); - $this->setForcePreRender(self::$always_pre_render); - } - - public function setCallInfo(array $info): void - { - parent::setCallInfo($info); - - if (\in_array('@', $this->call_info['modifiers'], true)) { - $this->setForcePreRender(true); - } - } - - public function setStatics(array $statics): void - { - parent::setStatics($statics); - - if (!empty($statics['return'])) { - $this->setForcePreRender(true); - } - } - - public function setForcePreRender(bool $force_pre_render): void - { - $this->force_pre_render = $force_pre_render; - } - - public function getForcePreRender(): bool - { - return $this->force_pre_render; - } - - public function shouldPreRender(): bool - { - return $this->getForcePreRender() || self::$needs_pre_render; - } - - public function colorValue(string $string): string - { - return '<i>'.$string.'</i>'; - } - - public function colorType(string $string): string - { - return '<b>'.$string.'</b>'; - } - - public function colorTitle(string $string): string - { - return '<u>'.$string.'</u>'; - } - - public function renderTitle(Value $o): string - { - if (self::$disable_utf8) { - return $this->utf8ToHtmlentity(parent::renderTitle($o)); - } - - return parent::renderTitle($o); - } - - public function preRender(): string - { - $output = ''; - - if ($this->shouldPreRender()) { - foreach (self::$pre_render_sources as $type => $values) { - $contents = ''; - foreach ($values as $v) { - $contents .= \call_user_func($v, $this); - } - - if (!\strlen($contents)) { - continue; - } - - switch ($type) { - case 'script': - $output .= '<script class="kint-plain-script">'.$contents.'</script>'; - break; - case 'style': - $output .= '<style class="kint-plain-style">'.$contents.'</style>'; - break; - default: - $output .= $contents; - } - } - - // Don't pre-render on every dump - if (!$this->getForcePreRender()) { - self::$needs_pre_render = false; - } - } - - return $output.'<div class="kint-plain">'; - } - - public function postRender(): string - { - if (self::$disable_utf8) { - return $this->utf8ToHtmlentity(parent::postRender()).'</div>'; - } - - return parent::postRender().'</div>'; - } - - public function ideLink(string $file, int $line): string - { - $path = $this->escape(Kint::shortenPath($file)).':'.$line; - $ideLink = Kint::getIdeLink($file, $line); - - if (!$ideLink) { - return $path; - } - - $class = ''; - - if (\preg_match('/https?:\\/\\//i', $ideLink)) { - $class = 'class="kint-ide-link" '; - } - - return '<a '.$class.'href="'.$this->escape($ideLink).'">'.$path.'</a>'; - } - - public function escape(string $string, $encoding = false): string - { - if (false === $encoding) { - $encoding = BlobValue::detectEncoding($string); - } - - $original_encoding = $encoding; - - if (false === $encoding || 'ASCII' === $encoding) { - $encoding = 'UTF-8'; - } - - $string = \htmlspecialchars($string, ENT_NOQUOTES, $encoding); - - // this call converts all non-ASCII characters into numeirc htmlentities - if (\function_exists('mb_encode_numericentity') && 'ASCII' !== $original_encoding) { - $string = \mb_encode_numericentity($string, [0x80, 0xFFFF, 0, 0xFFFF], $encoding); - } - - return $string; - } - - protected function utf8ToHtmlentity(string $string): string - { - return \str_replace( - ['┌', '═', '┐', '│', '└', '─', '┘'], - ['┌', '═', '┐', '│', '└', '─', '┘'], - $string - ); - } - - protected static function renderJs(): string - { - return \file_get_contents(KINT_DIR.'/resources/compiled/shared.js').\file_get_contents(KINT_DIR.'/resources/compiled/plain.js'); - } - - protected static function renderCss(): string - { - if (\file_exists(KINT_DIR.'/resources/compiled/'.self::$theme)) { - return \file_get_contents(KINT_DIR.'/resources/compiled/'.self::$theme); - } - - return \file_get_contents(self::$theme); - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/RendererInterface.php b/system4.4.6/ThirdParty/Kint/Renderer/RendererInterface.php deleted file mode 100644 index 577e9df0..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/RendererInterface.php +++ /dev/null @@ -1,57 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer; - -use Kint\Zval\Value; - -interface RendererInterface -{ - public function __construct(); - - public function render(Value $o): string; - - public function renderNothing(): string; - - public function setCallInfo(array $info): void; - - public function getCallInfo(): array; - - public function setStatics(array $statics): void; - - public function getStatics(): array; - - public function setShowTrace(bool $show_trace): void; - - public function getShowTrace(): bool; - - public function filterParserPlugins(array $plugins): array; - - public function preRender(): string; - - public function postRender(): string; -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Rich/AbstractPlugin.php b/system4.4.6/ThirdParty/Kint/Renderer/Rich/AbstractPlugin.php deleted file mode 100644 index 4d9ec706..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Rich/AbstractPlugin.php +++ /dev/null @@ -1,104 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Rich; - -use Kint\Renderer\RichRenderer; -use Kint\Zval\InstanceValue; -use Kint\Zval\Value; - -/** - * @psalm-consistent-constructor - */ -abstract class AbstractPlugin implements PluginInterface -{ - protected $renderer; - - public function __construct(RichRenderer $r) - { - $this->renderer = $r; - } - - /** - * @param string $content The replacement for the getValueShort contents - */ - public function renderLockedHeader(Value $o, string $content): string - { - $header = '<dt class="kint-parent kint-locked">'; - - if (RichRenderer::$access_paths && $o->depth > 0 && $ap = $o->getAccessPath()) { - $header .= '<span class="kint-access-path-trigger" title="Show access path">⇄</span>'; - } - - $header .= '<span class="kint-popup-trigger" title="Open in new window">⧉</span><nav></nav>'; - - if (null !== ($s = $o->getModifiers())) { - $header .= '<var>'.$s.'</var> '; - } - - if (null !== ($s = $o->getName())) { - $header .= '<dfn>'.$this->renderer->escape($s).'</dfn> '; - - if ($s = $o->getOperator()) { - $header .= $this->renderer->escape($s, 'ASCII').' '; - } - } - - if (null !== ($s = $o->getType())) { - if (RichRenderer::$escape_types) { - $s = $this->renderer->escape($s); - } - - if ($o->reference) { - $s = '&'.$s; - } - - $header .= '<var>'.$s.'</var>'; - - if ($o instanceof InstanceValue && isset($o->spl_object_id)) { - $header .= '#'.((int) $o->spl_object_id); - } - - $header .= ' '; - } - - if (null !== ($s = $o->getSize())) { - if (RichRenderer::$escape_types) { - $s = $this->renderer->escape($s); - } - $header .= '('.$s.') '; - } - - $header .= $content; - - if (!empty($ap)) { - $header .= '<div class="access-path">'.$this->renderer->escape($ap).'</div>'; - } - - return $header.'</dt>'; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Rich/ArrayLimitPlugin.php b/system4.4.6/ThirdParty/Kint/Renderer/Rich/ArrayLimitPlugin.php deleted file mode 100644 index 15220e5d..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Rich/ArrayLimitPlugin.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Rich; - -use Kint\Zval\Value; - -class ArrayLimitPlugin extends AbstractPlugin implements ValuePluginInterface -{ - public function renderValue(Value $o): string - { - return '<dl>'.$this->renderLockedHeader($o, '<var>Array Limit</var>').'</dl>'; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Rich/BinaryPlugin.php b/system4.4.6/ThirdParty/Kint/Renderer/Rich/BinaryPlugin.php deleted file mode 100644 index 4cbce1ae..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Rich/BinaryPlugin.php +++ /dev/null @@ -1,62 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Rich; - -use Kint\Zval\Representation\Representation; - -class BinaryPlugin extends AbstractPlugin implements TabPluginInterface -{ - /** @psalm-var positive-int */ - public static $line_length = 0x10; - /** @psalm-var positive-int */ - public static $chunk_length = 0x4; - - public function renderTab(Representation $r): ?string - { - if (!\is_string($r->contents)) { - return null; - } - - $out = '<pre>'; - - $lines = \str_split($r->contents, self::$line_length); - - foreach ($lines as $index => $line) { - $out .= \sprintf('%08X', $index * self::$line_length).":\t"; - - $chunks = \str_split(\str_pad(\bin2hex($line), 2 * self::$line_length, ' '), self::$chunk_length); - - $out .= \implode(' ', $chunks); - $out .= "\t".\preg_replace('/[^\\x20-\\x7E]/', '.', $line)."\n"; - } - - $out .= '</pre>'; - - return $out; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Rich/BlacklistPlugin.php b/system4.4.6/ThirdParty/Kint/Renderer/Rich/BlacklistPlugin.php deleted file mode 100644 index 78064a7a..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Rich/BlacklistPlugin.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Rich; - -use Kint\Zval\Value; - -class BlacklistPlugin extends AbstractPlugin implements ValuePluginInterface -{ - public function renderValue(Value $o): string - { - return '<dl>'.$this->renderLockedHeader($o, '<var>Blacklisted</var>').'</dl>'; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Rich/CallablePlugin.php b/system4.4.6/ThirdParty/Kint/Renderer/Rich/CallablePlugin.php deleted file mode 100644 index 74438052..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Rich/CallablePlugin.php +++ /dev/null @@ -1,130 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Rich; - -use Kint\Renderer\RichRenderer; -use Kint\Utils; -use Kint\Zval\ClosureValue; -use Kint\Zval\MethodValue; -use Kint\Zval\Value; - -class CallablePlugin extends ClosurePlugin -{ - protected static $method_cache = []; - - protected $closure_plugin = null; - - public function renderValue(Value $o): ?string - { - if ($o instanceof MethodValue) { - return $this->renderMethod($o); - } - - if ($o instanceof ClosureValue) { - return parent::renderValue($o); - } - - return null; - } - - protected function renderMethod(MethodValue $o): string - { - if (!empty(self::$method_cache[$o->owner_class][$o->name])) { - $children = self::$method_cache[$o->owner_class][$o->name]['children']; - - $header = $this->renderer->renderHeaderWrapper( - $o, - (bool) \strlen($children), - self::$method_cache[$o->owner_class][$o->name]['header'] - ); - - return '<dl>'.$header.$children.'</dl>'; - } - - $children = $this->renderer->renderChildren($o); - - $header = ''; - - if (null !== ($s = $o->getModifiers()) || $o->return_reference) { - $header .= '<var>'.$s; - - if ($o->return_reference) { - if ($s) { - $header .= ' '; - } - $header .= $this->renderer->escape('&'); - } - - $header .= '</var> '; - } - - if (null !== ($s = $o->getName())) { - $function = $this->renderer->escape($s).'('.$this->renderer->escape($o->getParams()).')'; - - if (null !== ($url = $o->getPhpDocUrl())) { - $function = '<a href="'.$url.'" target=_blank>'.$function.'</a>'; - } - - $header .= '<dfn>'.$function.'</dfn>'; - } - - if (!empty($o->returntype)) { - $header .= ': <var>'; - - if ($o->return_reference) { - $header .= $this->renderer->escape('&'); - } - - $header .= $this->renderer->escape($o->returntype).'</var>'; - } elseif ($o->docstring) { - if (\preg_match('/@return\\s+(.*)\\r?\\n/m', $o->docstring, $matches)) { - if (\trim($matches[1])) { - $header .= ': <var>'.$this->renderer->escape(\trim($matches[1])).'</var>'; - } - } - } - - if (null !== ($s = $o->getValueShort())) { - if (RichRenderer::$strlen_max) { - $s = Utils::truncateString($s, RichRenderer::$strlen_max); - } - $header .= ' '.$this->renderer->escape($s); - } - - if (\strlen($o->owner_class) && \strlen($o->name)) { - self::$method_cache[$o->owner_class][$o->name] = [ - 'header' => $header, - 'children' => $children, - ]; - } - - $header = $this->renderer->renderHeaderWrapper($o, (bool) \strlen($children), $header); - - return '<dl>'.$header.$children.'</dl>'; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Rich/ClosurePlugin.php b/system4.4.6/ThirdParty/Kint/Renderer/Rich/ClosurePlugin.php deleted file mode 100644 index a2b5a7e0..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Rich/ClosurePlugin.php +++ /dev/null @@ -1,64 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Rich; - -use Kint\Kint; -use Kint\Zval\ClosureValue; -use Kint\Zval\Value; - -class ClosurePlugin extends AbstractPlugin implements ValuePluginInterface -{ - public function renderValue(Value $o): ?string - { - if (!$o instanceof ClosureValue) { - return null; - } - - $children = $this->renderer->renderChildren($o); - - $header = ''; - - if (null !== ($s = $o->getModifiers())) { - $header .= '<var>'.$s.'</var> '; - } - - if (null !== ($s = $o->getName())) { - $header .= '<dfn>'.$this->renderer->escape($s).'('.$this->renderer->escape($o->getParams()).')</dfn> '; - } - - $header .= '<var>Closure</var>'; - if (isset($o->spl_object_id)) { - $header .= '#'.((int) $o->spl_object_id); - } - $header .= ' '.$this->renderer->escape(Kint::shortenPath($o->filename)).':'.(int) $o->startline; - - $header = $this->renderer->renderHeaderWrapper($o, (bool) \strlen($children), $header); - - return '<dl>'.$header.$children.'</dl>'; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Rich/ColorPlugin.php b/system4.4.6/ThirdParty/Kint/Renderer/Rich/ColorPlugin.php deleted file mode 100644 index f1de5fe3..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Rich/ColorPlugin.php +++ /dev/null @@ -1,102 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Rich; - -use Kint\Zval\Representation\ColorRepresentation; -use Kint\Zval\Representation\Representation; -use Kint\Zval\Value; - -class ColorPlugin extends AbstractPlugin implements TabPluginInterface, ValuePluginInterface -{ - public function renderValue(Value $o): ?string - { - $r = $o->getRepresentation('color'); - - if (!$r instanceof ColorRepresentation) { - return null; - } - - $children = $this->renderer->renderChildren($o); - - $header = $this->renderer->renderHeader($o); - $header .= '<div class="kint-color-preview"><div style="background:'; - $header .= $r->getColor(ColorRepresentation::COLOR_RGBA); - $header .= '"></div></div>'; - - $header = $this->renderer->renderHeaderWrapper($o, (bool) \strlen($children), $header); - - return '<dl>'.$header.$children.'</dl>'; - } - - public function renderTab(Representation $r): ?string - { - if (!$r instanceof ColorRepresentation) { - return null; - } - - $out = ''; - - if ($color = $r->getColor(ColorRepresentation::COLOR_NAME)) { - $out .= '<dfn>'.$color."</dfn>\n"; - } - if ($color = $r->getColor(ColorRepresentation::COLOR_HEX_3)) { - $out .= '<dfn>'.$color."</dfn>\n"; - } - if ($color = $r->getColor(ColorRepresentation::COLOR_HEX_6)) { - $out .= '<dfn>'.$color."</dfn>\n"; - } - - if ($r->hasAlpha()) { - if ($color = $r->getColor(ColorRepresentation::COLOR_HEX_4)) { - $out .= '<dfn>'.$color."</dfn>\n"; - } - if ($color = $r->getColor(ColorRepresentation::COLOR_HEX_8)) { - $out .= '<dfn>'.$color."</dfn>\n"; - } - if ($color = $r->getColor(ColorRepresentation::COLOR_RGBA)) { - $out .= '<dfn>'.$color."</dfn>\n"; - } - if ($color = $r->getColor(ColorRepresentation::COLOR_HSLA)) { - $out .= '<dfn>'.$color."</dfn>\n"; - } - } else { - if ($color = $r->getColor(ColorRepresentation::COLOR_RGB)) { - $out .= '<dfn>'.$color."</dfn>\n"; - } - if ($color = $r->getColor(ColorRepresentation::COLOR_HSL)) { - $out .= '<dfn>'.$color."</dfn>\n"; - } - } - - if (!\strlen($out)) { - return null; - } - - return '<pre>'.$out.'</pre>'; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Rich/DepthLimitPlugin.php b/system4.4.6/ThirdParty/Kint/Renderer/Rich/DepthLimitPlugin.php deleted file mode 100644 index 3b73b6be..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Rich/DepthLimitPlugin.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Rich; - -use Kint\Zval\Value; - -class DepthLimitPlugin extends AbstractPlugin implements ValuePluginInterface -{ - public function renderValue(Value $o): string - { - return '<dl>'.$this->renderLockedHeader($o, '<var>Depth Limit</var>').'</dl>'; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Rich/MethodDefinitionPlugin.php b/system4.4.6/ThirdParty/Kint/Renderer/Rich/MethodDefinitionPlugin.php deleted file mode 100644 index f5ed37b6..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Rich/MethodDefinitionPlugin.php +++ /dev/null @@ -1,76 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Rich; - -use Kint\Kint; -use Kint\Zval\Representation\MethodDefinitionRepresentation; -use Kint\Zval\Representation\Representation; - -class MethodDefinitionPlugin extends AbstractPlugin implements TabPluginInterface -{ - public function renderTab(Representation $r): ?string - { - if (!$r instanceof MethodDefinitionRepresentation) { - return null; - } - - if (isset($r->contents)) { - $docstring = []; - foreach (\explode("\n", $r->contents) as $line) { - $docstring[] = \trim($line); - } - - $docstring = $this->renderer->escape(\implode("\n", $docstring)); - } - - $addendum = []; - if (isset($r->class) && $r->inherited) { - $addendum[] = 'Inherited from '.$this->renderer->escape($r->class); - } - - if (isset($r->file, $r->line)) { - $addendum[] = 'Defined in '.$this->renderer->escape(Kint::shortenPath($r->file)).':'.((int) $r->line); - } - - if ($addendum) { - $addendum = '<small>'.\implode("\n", $addendum).'</small>'; - - if (isset($docstring)) { - $docstring .= "\n\n".$addendum; - } else { - $docstring = $addendum; - } - } - - if (!isset($docstring)) { - return null; - } - - return '<pre>'.$docstring.'</pre>'; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Rich/MicrotimePlugin.php b/system4.4.6/ThirdParty/Kint/Renderer/Rich/MicrotimePlugin.php deleted file mode 100644 index 086e8144..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Rich/MicrotimePlugin.php +++ /dev/null @@ -1,74 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Rich; - -use Kint\Utils; -use Kint\Zval\Representation\MicrotimeRepresentation; -use Kint\Zval\Representation\Representation; - -class MicrotimePlugin extends AbstractPlugin implements TabPluginInterface -{ - public function renderTab(Representation $r): ?string - { - if (!$r instanceof MicrotimeRepresentation || !($dt = $r->getDateTime())) { - return null; - } - - $out = $dt->format('Y-m-d H:i:s.u'); - if (null !== $r->lap) { - $out .= '<br><b>SINCE LAST CALL:</b> <span class="kint-microtime-lap">'.\round($r->lap, 4).'</span>s.'; - } - if (null !== $r->total) { - $out .= '<br><b>SINCE START:</b> '.\round($r->total, 4).'s.'; - } - if (null !== $r->avg) { - $out .= '<br><b>AVERAGE DURATION:</b> <span class="kint-microtime-avg">'.\round($r->avg, 4).'</span>s.'; - } - - $bytes = Utils::getHumanReadableBytes($r->mem); - $out .= '<br><b>MEMORY USAGE:</b> '.$r->mem.' bytes ('.\round($bytes['value'], 3).' '.$bytes['unit'].')'; - $bytes = Utils::getHumanReadableBytes($r->mem_real); - $out .= ' (real '.\round($bytes['value'], 3).' '.$bytes['unit'].')'; - - $bytes = Utils::getHumanReadableBytes($r->mem_peak); - $out .= '<br><b>PEAK MEMORY USAGE:</b> '.$r->mem_peak.' bytes ('.\round($bytes['value'], 3).' '.$bytes['unit'].')'; - $bytes = Utils::getHumanReadableBytes($r->mem_peak_real); - $out .= ' (real '.\round($bytes['value'], 3).' '.$bytes['unit'].')'; - - return '<pre data-kint-microtime-group="'.$r->group.'">'.$out.'</pre>'; - } - - public static function renderJs(): string - { - if (\is_string($out = \file_get_contents(KINT_DIR.'/resources/compiled/microtime.js'))) { - return $out; - } - - return ''; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Rich/PluginInterface.php b/system4.4.6/ThirdParty/Kint/Renderer/Rich/PluginInterface.php deleted file mode 100644 index bbdb8ac5..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Rich/PluginInterface.php +++ /dev/null @@ -1,35 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Rich; - -use Kint\Renderer\RichRenderer; - -interface PluginInterface -{ - public function __construct(RichRenderer $r); -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Rich/RecursionPlugin.php b/system4.4.6/ThirdParty/Kint/Renderer/Rich/RecursionPlugin.php deleted file mode 100644 index d6c821e3..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Rich/RecursionPlugin.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Rich; - -use Kint\Zval\Value; - -class RecursionPlugin extends AbstractPlugin implements ValuePluginInterface -{ - public function renderValue(Value $o): string - { - return '<dl>'.$this->renderLockedHeader($o, '<var>Recursion</var>').'</dl>'; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Rich/SimpleXMLElementPlugin.php b/system4.4.6/ThirdParty/Kint/Renderer/Rich/SimpleXMLElementPlugin.php deleted file mode 100644 index 87d98707..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Rich/SimpleXMLElementPlugin.php +++ /dev/null @@ -1,56 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Rich; - -use Kint\Zval\BlobValue; -use Kint\Zval\SimpleXMLElementValue; -use Kint\Zval\Value; - -class SimpleXMLElementPlugin extends AbstractPlugin implements ValuePluginInterface -{ - public function renderValue(Value $o): ?string - { - if (!($o instanceof SimpleXMLElementValue)) { - return null; - } - - if (!$o->isStringValue() || !empty($o->getRepresentation('attributes')->contents)) { - return null; - } - - $b = new BlobValue(); - $b->transplant($o); - $b->type = 'string'; - - $children = $this->renderer->renderChildren($b); - $header = $this->renderer->renderHeader($o); - $header = $this->renderer->renderHeaderWrapper($o, (bool) \strlen($children), $header); - - return '<dl>'.$header.$children.'</dl>'; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Rich/SourcePlugin.php b/system4.4.6/ThirdParty/Kint/Renderer/Rich/SourcePlugin.php deleted file mode 100644 index a02f7ec1..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Rich/SourcePlugin.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Rich; - -use Kint\Zval\Representation\Representation; -use Kint\Zval\Representation\SourceRepresentation; - -class SourcePlugin extends AbstractPlugin implements TabPluginInterface -{ - public function renderTab(Representation $r): ?string - { - if (!($r instanceof SourceRepresentation) || empty($r->source)) { - return null; - } - - $source = $r->source; - - // Trim empty lines from the start and end of the source - foreach ($source as $linenum => $line) { - if (\strlen(\trim($line)) || $linenum === $r->line) { - break; - } - - unset($source[$linenum]); - } - - foreach (\array_reverse($source, true) as $linenum => $line) { - if (\strlen(\trim($line)) || $linenum === $r->line) { - break; - } - - unset($source[$linenum]); - } - - $output = ''; - - foreach ($source as $linenum => $line) { - if ($linenum === $r->line) { - $output .= '<div class="kint-highlight">'.$this->renderer->escape($line)."\n".'</div>'; - } else { - $output .= '<div>'.$this->renderer->escape($line)."\n".'</div>'; - } - } - - if ($output) { - \reset($source); - - $data = ''; - if ($r->showfilename) { - $data = ' data-kint-filename="'.$this->renderer->escape($r->filename).'"'; - } - - return '<div><pre class="kint-source"'.$data.' style="counter-reset: kint-l '.((int) \key($source) - 1).';">'.$output.'</pre></div><div></div>'; - } - - return null; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Rich/TabPluginInterface.php b/system4.4.6/ThirdParty/Kint/Renderer/Rich/TabPluginInterface.php deleted file mode 100644 index fb310af5..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Rich/TabPluginInterface.php +++ /dev/null @@ -1,35 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Rich; - -use Kint\Zval\Representation\Representation; - -interface TabPluginInterface extends PluginInterface -{ - public function renderTab(Representation $r): ?string; -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Rich/TablePlugin.php b/system4.4.6/ThirdParty/Kint/Renderer/Rich/TablePlugin.php deleted file mode 100644 index 80fdd10f..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Rich/TablePlugin.php +++ /dev/null @@ -1,141 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Rich; - -use Kint\Renderer\RichRenderer; -use Kint\Utils; -use Kint\Zval\Representation\Representation; - -class TablePlugin extends AbstractPlugin implements TabPluginInterface -{ - public static $respect_str_length = true; - - public function renderTab(Representation $r): string - { - $out = '<pre><table><thead><tr><th></th>'; - - $firstrow = \reset($r->contents); - - foreach ($firstrow->value->contents as $field) { - $out .= '<th>'; - if (null !== ($s = $field->getName())) { - $out .= $this->renderer->escape($s); - } - $out .= '</th>'; - } - - $out .= '</tr></thead><tbody>'; - - foreach ($r->contents as $row) { - $out .= '<tr><th>'; - if (null !== ($s = $row->getName())) { - $out .= $this->renderer->escape($s); - } - $out .= '</th>'; - - foreach ($row->value->contents as $field) { - $out .= '<td'; - $type = ''; - $size = ''; - $ref = ''; - - if (null !== ($s = $field->getType())) { - $type = $this->renderer->escape($s); - - if ($field->reference) { - $ref = '&'; - $type = $ref.$type; - } - - if (null !== ($s = $field->getSize())) { - $size .= ' ('.$this->renderer->escape($s).')'; - } - } - - if ($type) { - $out .= ' title="'.$type.$size.'"'; - } - - $out .= '>'; - - switch ($field->type) { - case 'boolean': - $out .= $field->value->contents ? '<var>'.$ref.'true</var>' : '<var>'.$ref.'false</var>'; - break; - case 'integer': - case 'double': - $out .= (string) $field->value->contents; - break; - case 'null': - $out .= '<var>'.$ref.'null</var>'; - break; - case 'string': - if ($field->encoding) { - $val = $field->value->contents; - if (RichRenderer::$strlen_max && self::$respect_str_length) { - $val = Utils::truncateString($val, RichRenderer::$strlen_max); - } - - $out .= $this->renderer->escape($val); - } else { - $out .= '<var>'.$type.'</var>'; - } - break; - case 'array': - $out .= '<var>'.$ref.'array</var>'.$size; - break; - case 'object': - $out .= '<var>'.$ref.$this->renderer->escape($field->classname).'</var>'.$size; - break; - case 'resource': - $out .= '<var>'.$ref.'resource</var>'; - break; - default: - $out .= '<var>'.$ref.'unknown</var>'; - break; - } - - if (\in_array('blacklist', $field->hints, true)) { - $out .= ' <var>Blacklisted</var>'; - } elseif (\in_array('recursion', $field->hints, true)) { - $out .= ' <var>Recursion</var>'; - } elseif (\in_array('depth_limit', $field->hints, true)) { - $out .= ' <var>Depth Limit</var>'; - } - - $out .= '</td>'; - } - - $out .= '</tr>'; - } - - $out .= '</tbody></table></pre>'; - - return $out; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Rich/TimestampPlugin.php b/system4.4.6/ThirdParty/Kint/Renderer/Rich/TimestampPlugin.php deleted file mode 100644 index 43abfb60..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Rich/TimestampPlugin.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Rich; - -use DateTime; -use DateTimeZone; -use Kint\Zval\Representation\Representation; - -class TimestampPlugin extends AbstractPlugin implements TabPluginInterface -{ - public function renderTab(Representation $r): ?string - { - if ($dt = DateTime::createFromFormat('U', (string) $r->contents)) { - return '<pre>'.$dt->setTimeZone(new DateTimeZone('UTC'))->format('Y-m-d H:i:s T').'</pre>'; - } - - return null; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Rich/TraceFramePlugin.php b/system4.4.6/ThirdParty/Kint/Renderer/Rich/TraceFramePlugin.php deleted file mode 100644 index 147e2e31..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Rich/TraceFramePlugin.php +++ /dev/null @@ -1,70 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Rich; - -use Kint\Zval\TraceFrameValue; -use Kint\Zval\Value; - -class TraceFramePlugin extends AbstractPlugin implements ValuePluginInterface -{ - public function renderValue(Value $o): ?string - { - if (!$o instanceof TraceFrameValue) { - return null; - } - - if (!empty($o->trace['file']) && !empty($o->trace['line'])) { - $header = '<var>'.$this->renderer->ideLink($o->trace['file'], (int) $o->trace['line']).'</var> '; - } else { - $header = '<var>PHP internal call</var> '; - } - - if ($o->trace['class']) { - $header .= $this->renderer->escape($o->trace['class'].$o->trace['type']); - } - - if (\is_string($o->trace['function'])) { - $function = $this->renderer->escape($o->trace['function'].'()'); - } else { - $function = $this->renderer->escape( - $o->trace['function']->getName().'('.$o->trace['function']->getParams().')' - ); - - if (null !== ($url = $o->trace['function']->getPhpDocUrl())) { - $function = '<a href="'.$url.'" target=_blank>'.$function.'</a>'; - } - } - - $header .= '<dfn>'.$function.'</dfn>'; - - $children = $this->renderer->renderChildren($o); - $header = $this->renderer->renderHeaderWrapper($o, (bool) \strlen($children), $header); - - return '<dl>'.$header.$children.'</dl>'; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Rich/ValuePluginInterface.php b/system4.4.6/ThirdParty/Kint/Renderer/Rich/ValuePluginInterface.php deleted file mode 100644 index 112a7f7d..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Rich/ValuePluginInterface.php +++ /dev/null @@ -1,35 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Rich; - -use Kint\Zval\Value; - -interface ValuePluginInterface extends PluginInterface -{ - public function renderValue(Value $o): ?string; -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/RichRenderer.php b/system4.4.6/ThirdParty/Kint/Renderer/RichRenderer.php deleted file mode 100644 index b3d86ea1..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/RichRenderer.php +++ /dev/null @@ -1,677 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer; - -use Kint\Kint; -use Kint\Renderer\Rich\PluginInterface; -use Kint\Renderer\Rich\TabPluginInterface; -use Kint\Renderer\Rich\ValuePluginInterface; -use Kint\Utils; -use Kint\Zval\BlobValue; -use Kint\Zval\InstanceValue; -use Kint\Zval\Representation\Representation; -use Kint\Zval\Value; - -/** - * @psalm-import-type Encoding from BlobValue - * @psalm-import-type PluginMap from AbstractRenderer - */ -class RichRenderer extends AbstractRenderer -{ - /** - * RichRenderer value plugins should implement ValuePluginInterface. - * - * @psalm-var PluginMap - */ - public static $value_plugins = [ - 'array_limit' => Rich\ArrayLimitPlugin::class, - 'blacklist' => Rich\BlacklistPlugin::class, - 'callable' => Rich\CallablePlugin::class, - 'color' => Rich\ColorPlugin::class, - 'depth_limit' => Rich\DepthLimitPlugin::class, - 'recursion' => Rich\RecursionPlugin::class, - 'simplexml_element' => Rich\SimpleXMLElementPlugin::class, - 'trace_frame' => Rich\TraceFramePlugin::class, - ]; - - /** - * RichRenderer tab plugins should implement TabPluginInterface. - * - * @psalm-var PluginMap - */ - public static $tab_plugins = [ - 'binary' => Rich\BinaryPlugin::class, - 'color' => Rich\ColorPlugin::class, - 'method_definition' => Rich\MethodDefinitionPlugin::class, - 'microtime' => Rich\MicrotimePlugin::class, - 'source' => Rich\SourcePlugin::class, - 'table' => Rich\TablePlugin::class, - 'timestamp' => Rich\TimestampPlugin::class, - ]; - - public static $pre_render_sources = [ - 'script' => [ - [self::class, 'renderJs'], - [Rich\MicrotimePlugin::class, 'renderJs'], - ], - 'style' => [ - [self::class, 'renderCss'], - ], - 'raw' => [], - ]; - - /** - * Whether or not to render access paths. - * - * Access paths can become incredibly heavy with very deep and wide - * structures. Given mostly public variables it will typically make - * up one quarter of the output HTML size. - * - * If this is an unacceptably large amount and your browser is groaning - * under the weight of the access paths - your first order of buisiness - * should be to get a new browser. Failing that, use this to turn them off. - * - * @var bool - */ - public static $access_paths = true; - - /** - * The maximum length of a string before it is truncated. - * - * Falsey to disable - * - * @var int - */ - public static $strlen_max = 80; - - /** - * Path to the CSS file to load by default. - * - * @var string - */ - public static $theme = 'original.css'; - - /** - * Assume types and sizes don't need to be escaped. - * - * Turn this off if you use anything but ascii in your class names, - * but it'll cause a slowdown of around 10% - * - * @var bool - */ - public static $escape_types = false; - - /** - * Move all dumps to a folder at the bottom of the body. - * - * @var bool - */ - public static $folder = false; - - /** - * Sort mode for object properties. - * - * @var int - */ - public static $sort = self::SORT_NONE; - - /** - * Timestamp to print in footer in date() format. - * - * @var ?string - */ - public static $timestamp = null; - - public static $needs_pre_render = true; - public static $needs_folder_render = true; - - public static $always_pre_render = false; - - public static $js_nonce = null; - public static $css_nonce = null; - - protected $plugin_objs = []; - protected $expand = false; - protected $force_pre_render = false; - protected $use_folder = false; - - public function __construct() - { - $this->setUseFolder(self::$folder); - $this->setForcePreRender(self::$always_pre_render); - } - - public function setCallInfo(array $info): void - { - parent::setCallInfo($info); - - if (\in_array('!', $this->call_info['modifiers'], true)) { - $this->setExpand(true); - $this->setUseFolder(false); - } - - if (\in_array('@', $this->call_info['modifiers'], true)) { - $this->setForcePreRender(true); - } - } - - public function setStatics(array $statics): void - { - parent::setStatics($statics); - - if (!empty($statics['expanded'])) { - $this->setExpand(true); - } - - if (!empty($statics['return'])) { - $this->setForcePreRender(true); - } - } - - public function setExpand(bool $expand): void - { - $this->expand = $expand; - } - - public function getExpand(): bool - { - return $this->expand; - } - - public function setForcePreRender(bool $force_pre_render): void - { - $this->force_pre_render = $force_pre_render; - } - - public function getForcePreRender(): bool - { - return $this->force_pre_render; - } - - public function setUseFolder(bool $use_folder): void - { - $this->use_folder = $use_folder; - } - - public function getUseFolder(): bool - { - return $this->use_folder; - } - - public function shouldPreRender(): bool - { - return $this->getForcePreRender() || self::$needs_pre_render; - } - - public function shouldFolderRender(): bool - { - return $this->getUseFolder() && ($this->getForcePreRender() || self::$needs_folder_render); - } - - public function render(Value $o): string - { - if (($plugin = $this->getPlugin(self::$value_plugins, $o->hints)) && $plugin instanceof ValuePluginInterface) { - $output = $plugin->renderValue($o); - if (null !== $output && \strlen($output)) { - return $output; - } - } - - $children = $this->renderChildren($o); - $header = $this->renderHeaderWrapper($o, (bool) \strlen($children), $this->renderHeader($o)); - - return '<dl>'.$header.$children.'</dl>'; - } - - public function renderNothing(): string - { - return '<dl><dt><var>No argument</var></dt></dl>'; - } - - public function renderHeaderWrapper(Value $o, bool $has_children, string $contents): string - { - $out = '<dt'; - - if ($has_children) { - $out .= ' class="kint-parent'; - - if ($this->getExpand()) { - $out .= ' kint-show'; - } - - $out .= '"'; - } - - $out .= '>'; - - if (self::$access_paths && $o->depth > 0 && ($ap = $o->getAccessPath())) { - $out .= '<span class="kint-access-path-trigger" title="Show access path">⇄</span>'; - } - - if ($has_children) { - $out .= '<span class="kint-popup-trigger" title="Open in new window">⧉</span>'; - - if (0 === $o->depth) { - $out .= '<span class="kint-search-trigger" title="Show search box">⌕</span>'; - $out .= '<input type="text" class="kint-search" value="">'; - } - - $out .= '<nav></nav>'; - } - - $out .= $contents; - - if (!empty($ap)) { - $out .= '<div class="access-path">'.$this->escape($ap).'</div>'; - } - - return $out.'</dt>'; - } - - public function renderHeader(Value $o): string - { - $output = ''; - - if (null !== ($s = $o->getModifiers())) { - $output .= '<var>'.$s.'</var> '; - } - - if (null !== ($s = $o->getName())) { - $output .= '<dfn>'.$this->escape($s).'</dfn> '; - - if ($s = $o->getOperator()) { - $output .= $this->escape($s, 'ASCII').' '; - } - } - - if (null !== ($s = $o->getType())) { - if (self::$escape_types) { - $s = $this->escape($s); - } - - if ($o->reference) { - $s = '&'.$s; - } - - $output .= '<var>'.$s.'</var>'; - - if ($o instanceof InstanceValue && isset($o->spl_object_id)) { - $output .= '#'.((int) $o->spl_object_id); - } - - $output .= ' '; - } - - if (null !== ($s = $o->getSize())) { - if (self::$escape_types) { - $s = $this->escape($s); - } - $output .= '('.$s.') '; - } - - if (null !== ($s = $o->getValueShort())) { - $s = \preg_replace('/\\s+/', ' ', $s); - - if (self::$strlen_max) { - $s = Utils::truncateString($s, self::$strlen_max); - } - - $output .= $this->escape($s); - } - - return \trim($output); - } - - public function renderChildren(Value $o): string - { - $contents = []; - $tabs = []; - - foreach ($o->getRepresentations() as $rep) { - $result = $this->renderTab($o, $rep); - if (\strlen($result)) { - $contents[] = $result; - $tabs[] = $rep; - } - } - - if (empty($tabs)) { - return ''; - } - - $output = '<dd>'; - - if (1 === \count($tabs) && $tabs[0]->labelIsImplicit()) { - $output .= \reset($contents); - } else { - $output .= '<ul class="kint-tabs">'; - - foreach ($tabs as $i => $tab) { - if (0 === $i) { - $output .= '<li class="kint-active-tab">'; - } else { - $output .= '<li>'; - } - - $output .= $this->escape($tab->getLabel()).'</li>'; - } - - $output .= '</ul><ul class="kint-tab-contents">'; - - foreach ($contents as $i => $tab) { - if (0 === $i) { - $output .= '<li class="kint-show">'; - } else { - $output .= '<li>'; - } - - $output .= $tab.'</li>'; - } - - $output .= '</ul>'; - } - - return $output.'</dd>'; - } - - public function preRender(): string - { - $output = ''; - - if ($this->shouldPreRender()) { - foreach (self::$pre_render_sources as $type => $values) { - $contents = ''; - foreach ($values as $v) { - $contents .= \call_user_func($v, $this); - } - - if (!\strlen($contents)) { - continue; - } - - switch ($type) { - case 'script': - $output .= '<script class="kint-rich-script"'; - if (null !== self::$js_nonce) { - $output .= ' nonce="'.\htmlspecialchars(self::$js_nonce).'"'; - } - $output .= '>'.$contents.'</script>'; - break; - case 'style': - $output .= '<style class="kint-rich-style"'; - if (null !== self::$css_nonce) { - $output .= ' nonce="'.\htmlspecialchars(self::$css_nonce).'"'; - } - $output .= '>'.$contents.'</style>'; - break; - default: - $output .= $contents; - } - } - - // Don't pre-render on every dump - if (!$this->getForcePreRender()) { - self::$needs_pre_render = false; - } - } - - if ($this->shouldFolderRender()) { - $output .= $this->renderFolder(); - - if (!$this->getForcePreRender()) { - self::$needs_folder_render = false; - } - } - - $output .= '<div class="kint-rich'; - - if ($this->getUseFolder()) { - $output .= ' kint-file'; - } - - $output .= '">'; - - return $output; - } - - public function postRender(): string - { - if (!$this->show_trace) { - return '</div>'; - } - - $output = '<footer>'; - $output .= '<span class="kint-popup-trigger" title="Open in new window">⧉</span> '; - - if (!empty($this->call_info['trace']) && \count($this->call_info['trace']) > 1) { - $output .= '<nav></nav>'; - } - - $output .= $this->calledFrom(); - - if (!empty($this->call_info['trace']) && \count($this->call_info['trace']) > 1) { - $output .= '<ol>'; - foreach ($this->call_info['trace'] as $index => $step) { - if (!$index) { - continue; - } - - $output .= '<li>'.$this->ideLink($step['file'], $step['line']); // closing tag not required - if (isset($step['function']) && - !\in_array($step['function'], ['include', 'include_once', 'require', 'require_once'], true) - ) { - $output .= ' ['; - $output .= $step['class'] ?? ''; - $output .= $step['type'] ?? ''; - $output .= $step['function'].'()]'; - } - } - $output .= '</ol>'; - } - - $output .= '</footer></div>'; - - return $output; - } - - /** - * @psalm-param Encoding $encoding - */ - public function escape(string $string, $encoding = false): string - { - if (false === $encoding) { - $encoding = BlobValue::detectEncoding($string); - } - - $original_encoding = $encoding; - - if (false === $encoding || 'ASCII' === $encoding) { - $encoding = 'UTF-8'; - } - - $string = \htmlspecialchars($string, ENT_NOQUOTES, $encoding); - - // this call converts all non-ASCII characters into numeirc htmlentities - if (\function_exists('mb_encode_numericentity') && 'ASCII' !== $original_encoding) { - $string = \mb_encode_numericentity($string, [0x80, 0xFFFF, 0, 0xFFFF], $encoding); - } - - return $string; - } - - public function ideLink(string $file, int $line): string - { - $path = $this->escape(Kint::shortenPath($file)).':'.$line; - $ideLink = Kint::getIdeLink($file, $line); - - if (!$ideLink) { - return $path; - } - - $class = ''; - - if (\preg_match('/https?:\\/\\//i', $ideLink)) { - $class = 'class="kint-ide-link" '; - } - - return '<a '.$class.'href="'.$this->escape($ideLink).'">'.$path.'</a>'; - } - - protected function calledFrom(): string - { - $output = ''; - - if (isset($this->call_info['callee']['file'])) { - $output .= ' '.$this->ideLink( - $this->call_info['callee']['file'], - $this->call_info['callee']['line'] - ); - } - - if ( - isset($this->call_info['callee']['function']) && - ( - !empty($this->call_info['callee']['class']) || - !\in_array( - $this->call_info['callee']['function'], - ['include', 'include_once', 'require', 'require_once'], - true - ) - ) - ) { - $output .= ' ['; - $output .= $this->call_info['callee']['class'] ?? ''; - $output .= $this->call_info['callee']['type'] ?? ''; - $output .= $this->call_info['callee']['function'].'()]'; - } - - if ('' !== $output) { - $output = 'Called from'.$output; - } - - if (null !== self::$timestamp) { - $output .= ' '.\date(self::$timestamp); - } - - return $output; - } - - protected function renderTab(Value $o, Representation $rep): string - { - if (($plugin = $this->getPlugin(self::$tab_plugins, $rep->hints)) && $plugin instanceof TabPluginInterface) { - $output = $plugin->renderTab($rep); - if (null !== $output && \strlen($output)) { - return $output; - } - } - - if (\is_array($rep->contents)) { - $output = ''; - - if ($o instanceof InstanceValue && 'properties' === $rep->getName()) { - foreach (self::sortProperties($rep->contents, self::$sort) as $obj) { - $output .= $this->render($obj); - } - } else { - foreach ($rep->contents as $obj) { - $output .= $this->render($obj); - } - } - - return $output; - } - - if (\is_string($rep->contents)) { - $show_contents = false; - - // If it is the value representation of a string and its whitespace - // was truncated in the header, always display the full string - if ('string' !== $o->type || $o->value !== $rep) { - $show_contents = true; - } else { - if (\preg_match('/(:?[\\r\\n\\t\\f\\v]| {2})/', $rep->contents)) { - $show_contents = true; - } elseif (self::$strlen_max && null !== ($vs = $o->getValueShort()) && BlobValue::strlen($vs) > self::$strlen_max) { - $show_contents = true; - } - - if (empty($o->encoding)) { - $show_contents = false; - } - } - - if ($show_contents) { - return '<pre>'.$this->escape($rep->contents)."\n</pre>"; - } - } - - if ($rep->contents instanceof Value) { - return $this->render($rep->contents); - } - - return ''; - } - - /** - * @psalm-param PluginMap $plugins - * @psalm-param string[] $hints - */ - protected function getPlugin(array $plugins, array $hints): ?PluginInterface - { - if ($plugins = $this->matchPlugins($plugins, $hints)) { - $plugin = \end($plugins); - - if (!isset($this->plugin_objs[$plugin]) && \is_subclass_of($plugin, PluginInterface::class)) { - $this->plugin_objs[$plugin] = new $plugin($this); - } - - return $this->plugin_objs[$plugin]; - } - - return null; - } - - protected static function renderJs(): string - { - return \file_get_contents(KINT_DIR.'/resources/compiled/shared.js').\file_get_contents(KINT_DIR.'/resources/compiled/rich.js'); - } - - protected static function renderCss(): string - { - if (\file_exists(KINT_DIR.'/resources/compiled/'.self::$theme)) { - return \file_get_contents(KINT_DIR.'/resources/compiled/'.self::$theme); - } - - return \file_get_contents(self::$theme); - } - - protected static function renderFolder(): string - { - return '<div class="kint-rich kint-folder"><dl><dt class="kint-parent"><nav></nav>Kint</dt><dd class="kint-foldout"></dd></dl></div>'; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Text/AbstractPlugin.php b/system4.4.6/ThirdParty/Kint/Renderer/Text/AbstractPlugin.php deleted file mode 100644 index 16feccaa..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Text/AbstractPlugin.php +++ /dev/null @@ -1,63 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Text; - -use Kint\Renderer\TextRenderer; -use Kint\Zval\Value; - -/** - * @psalm-consistent-constructor - */ -abstract class AbstractPlugin implements PluginInterface -{ - protected $renderer; - - public function __construct(TextRenderer $r) - { - $this->renderer = $r; - } - - public function renderLockedHeader(Value $o, string $content = null): string - { - $out = ''; - - if (0 == $o->depth) { - $out .= $this->renderer->colorTitle($this->renderer->renderTitle($o)).PHP_EOL; - } - - $out .= $this->renderer->renderHeader($o); - - if (null !== $content) { - $out .= ' '.$this->renderer->colorValue($content); - } - - $out .= PHP_EOL; - - return $out; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Text/ArrayLimitPlugin.php b/system4.4.6/ThirdParty/Kint/Renderer/Text/ArrayLimitPlugin.php deleted file mode 100644 index 6808736d..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Text/ArrayLimitPlugin.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Text; - -use Kint\Zval\Value; - -class ArrayLimitPlugin extends AbstractPlugin -{ - public function render(Value $o): string - { - return $this->renderLockedHeader($o, 'ARRAY LIMIT'); - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Text/BlacklistPlugin.php b/system4.4.6/ThirdParty/Kint/Renderer/Text/BlacklistPlugin.php deleted file mode 100644 index d0789124..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Text/BlacklistPlugin.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Text; - -use Kint\Zval\Value; - -class BlacklistPlugin extends AbstractPlugin -{ - public function render(Value $o): string - { - return $this->renderLockedHeader($o, 'BLACKLISTED'); - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Text/DepthLimitPlugin.php b/system4.4.6/ThirdParty/Kint/Renderer/Text/DepthLimitPlugin.php deleted file mode 100644 index cbb15188..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Text/DepthLimitPlugin.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Text; - -use Kint\Zval\Value; - -class DepthLimitPlugin extends AbstractPlugin -{ - public function render(Value $o): string - { - return $this->renderLockedHeader($o, 'DEPTH LIMIT'); - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Text/EnumPlugin.php b/system4.4.6/ThirdParty/Kint/Renderer/Text/EnumPlugin.php deleted file mode 100644 index 93d7b293..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Text/EnumPlugin.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Text; - -use Kint\Zval\Value; - -class EnumPlugin extends AbstractPlugin -{ - public function render(Value $o): string - { - return $this->renderLockedHeader($o); - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Text/MicrotimePlugin.php b/system4.4.6/ThirdParty/Kint/Renderer/Text/MicrotimePlugin.php deleted file mode 100644 index 13bba75b..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Text/MicrotimePlugin.php +++ /dev/null @@ -1,130 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Text; - -use Kint\Renderer\PlainRenderer; -use Kint\Renderer\Rich\MicrotimePlugin as RichPlugin; -use Kint\Renderer\TextRenderer; -use Kint\Utils; -use Kint\Zval\Representation\MicrotimeRepresentation; -use Kint\Zval\Value; - -class MicrotimePlugin extends AbstractPlugin -{ - protected $useJs = false; - - public function __construct(TextRenderer $r) - { - parent::__construct($r); - - if ($this->renderer instanceof PlainRenderer) { - $this->useJs = true; - } - } - - public function render(Value $o): ?string - { - $r = $o->getRepresentation('microtime'); - - if (!$r instanceof MicrotimeRepresentation || !($dt = $r->getDateTime())) { - return null; - } - - $out = ''; - - if (0 == $o->depth) { - $out .= $this->renderer->colorTitle($this->renderer->renderTitle($o)).PHP_EOL; - } - - $out .= $this->renderer->renderHeader($o); - $out .= $this->renderer->renderChildren($o).PHP_EOL; - - $indent = \str_repeat(' ', ($o->depth + 1) * $this->renderer->indent_width); - - if ($this->useJs) { - $out .= '<span data-kint-microtime-group="'.$r->group.'">'; - } - - $out .= $indent.$this->renderer->colorType('TIME:').' '; - $out .= $this->renderer->colorValue($dt->format('Y-m-d H:i:s.u')).PHP_EOL; - - if (null !== $r->lap) { - $out .= $indent.$this->renderer->colorType('SINCE LAST CALL:').' '; - - $lap = \round($r->lap, 4); - - if ($this->useJs) { - $lap = '<span class="kint-microtime-lap">'.$lap.'</span>'; - } - - $out .= $this->renderer->colorValue($lap.'s').'.'.PHP_EOL; - } - if (null !== $r->total) { - $out .= $indent.$this->renderer->colorType('SINCE START:').' '; - $out .= $this->renderer->colorValue(\round($r->total, 4).'s').'.'.PHP_EOL; - } - if (null !== $r->avg) { - $out .= $indent.$this->renderer->colorType('AVERAGE DURATION:').' '; - - $avg = \round($r->avg, 4); - - if ($this->useJs) { - $avg = '<span class="kint-microtime-avg">'.$avg.'</span>'; - } - - $out .= $this->renderer->colorValue($avg.'s').'.'.PHP_EOL; - } - - $bytes = Utils::getHumanReadableBytes($r->mem); - $mem = $r->mem.' bytes ('.\round($bytes['value'], 3).' '.$bytes['unit'].')'; - $bytes = Utils::getHumanReadableBytes($r->mem_real); - $mem .= ' (real '.\round($bytes['value'], 3).' '.$bytes['unit'].')'; - - $out .= $indent.$this->renderer->colorType('MEMORY USAGE:').' '; - $out .= $this->renderer->colorValue($mem).'.'.PHP_EOL; - - $bytes = Utils::getHumanReadableBytes($r->mem_peak); - $mem = $r->mem_peak.' bytes ('.\round($bytes['value'], 3).' '.$bytes['unit'].')'; - $bytes = Utils::getHumanReadableBytes($r->mem_peak_real); - $mem .= ' (real '.\round($bytes['value'], 3).' '.$bytes['unit'].')'; - - $out .= $indent.$this->renderer->colorType('PEAK MEMORY USAGE:').' '; - $out .= $this->renderer->colorValue($mem).'.'.PHP_EOL; - - if ($this->useJs) { - $out .= '</span>'; - } - - return $out; - } - - public static function renderJs(): string - { - return RichPlugin::renderJs(); - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Text/PluginInterface.php b/system4.4.6/ThirdParty/Kint/Renderer/Text/PluginInterface.php deleted file mode 100644 index 65a4f580..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Text/PluginInterface.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Text; - -use Kint\Renderer\TextRenderer; -use Kint\Zval\Value; - -interface PluginInterface -{ - public function __construct(TextRenderer $r); - - public function render(Value $o): ?string; -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Text/RecursionPlugin.php b/system4.4.6/ThirdParty/Kint/Renderer/Text/RecursionPlugin.php deleted file mode 100644 index 4d9b6c25..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Text/RecursionPlugin.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Text; - -use Kint\Zval\Value; - -class RecursionPlugin extends AbstractPlugin -{ - public function render(Value $o): string - { - return $this->renderLockedHeader($o, 'RECURSION'); - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/Text/TracePlugin.php b/system4.4.6/ThirdParty/Kint/Renderer/Text/TracePlugin.php deleted file mode 100644 index 113dc982..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/Text/TracePlugin.php +++ /dev/null @@ -1,115 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer\Text; - -use Kint\Zval\MethodValue; -use Kint\Zval\Value; - -class TracePlugin extends AbstractPlugin -{ - public function render(Value $o): string - { - $out = ''; - - if (0 == $o->depth) { - $out .= $this->renderer->colorTitle($this->renderer->renderTitle($o)).PHP_EOL; - } - - $out .= $this->renderer->renderHeader($o).':'.PHP_EOL; - - $indent = \str_repeat(' ', ($o->depth + 1) * $this->renderer->indent_width); - - $i = 1; - foreach ($o->value->contents as $frame) { - $framedesc = $indent.\str_pad($i.': ', 4, ' '); - - if ($frame->trace['file']) { - $framedesc .= $this->renderer->ideLink($frame->trace['file'], $frame->trace['line']).PHP_EOL; - } else { - $framedesc .= 'PHP internal call'.PHP_EOL; - } - - $framedesc .= $indent.' '; - - if ($frame->trace['class']) { - $framedesc .= $this->renderer->escape($frame->trace['class']); - - if ($frame->trace['object']) { - $framedesc .= $this->renderer->escape('->'); - } else { - $framedesc .= '::'; - } - } - - if (\is_string($frame->trace['function'])) { - $framedesc .= $this->renderer->escape($frame->trace['function']).'(...)'; - } elseif ($frame->trace['function'] instanceof MethodValue) { - if (null !== ($s = $frame->trace['function']->getName())) { - $framedesc .= $this->renderer->escape($s); - $framedesc .= '('.$this->renderer->escape($frame->trace['function']->getParams()).')'; - } - } - - $out .= $this->renderer->colorType($framedesc).PHP_EOL.PHP_EOL; - - if ($source = $frame->getRepresentation('source')) { - $line_wanted = $source->line; - $source = $source->source; - - // Trim empty lines from the start and end of the source - foreach ($source as $linenum => $line) { - if (\trim($line) || $linenum === $line_wanted) { - break; - } - - unset($source[$linenum]); - } - - foreach (\array_reverse($source, true) as $linenum => $line) { - if (\trim($line) || $linenum === $line_wanted) { - break; - } - - unset($source[$linenum]); - } - - foreach ($source as $lineno => $line) { - if ($lineno == $line_wanted) { - $out .= $indent.$this->renderer->colorValue($this->renderer->escape($line)).PHP_EOL; - } else { - $out .= $indent.$this->renderer->escape($line).PHP_EOL; - } - } - } - - ++$i; - } - - return $out; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Renderer/TextRenderer.php b/system4.4.6/ThirdParty/Kint/Renderer/TextRenderer.php deleted file mode 100644 index 2538e4da..00000000 --- a/system4.4.6/ThirdParty/Kint/Renderer/TextRenderer.php +++ /dev/null @@ -1,391 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Renderer; - -use Kint\Kint; -use Kint\Parser; -use Kint\Renderer\Text\PluginInterface; -use Kint\Utils; -use Kint\Zval\InstanceValue; -use Kint\Zval\Value; - -/** - * @psalm-import-type Encoding from \Kint\Zval\BlobValue - * @psalm-import-type PluginMap from AbstractRenderer - */ -class TextRenderer extends AbstractRenderer -{ - /** - * TextRenderer plugins should implement PluginInterface. - * - * @psalm-var PluginMap - */ - public static $plugins = [ - 'array_limit' => Text\ArrayLimitPlugin::class, - 'blacklist' => Text\BlacklistPlugin::class, - 'depth_limit' => Text\DepthLimitPlugin::class, - 'enum' => Text\EnumPlugin::class, - 'microtime' => Text\MicrotimePlugin::class, - 'recursion' => Text\RecursionPlugin::class, - 'trace' => Text\TracePlugin::class, - ]; - - /** - * Parser plugins must be instanceof one of these or - * it will be removed for performance reasons. - * - * @psalm-var class-string[] - */ - public static $parser_plugin_whitelist = [ - Parser\ArrayLimitPlugin::class, - Parser\ArrayObjectPlugin::class, - Parser\BlacklistPlugin::class, - Parser\EnumPlugin::class, - Parser\MicrotimePlugin::class, - Parser\StreamPlugin::class, - Parser\TracePlugin::class, - ]; - - /** - * The maximum length of a string before it is truncated. - * - * Falsey to disable - * - * @var int - */ - public static $strlen_max = 0; - - /** - * The default width of the terminal for headers. - * - * @var int - */ - public static $default_width = 80; - - /** - * Indentation width. - * - * @var int - */ - public static $default_indent = 4; - - /** - * Decorate the header and footer. - * - * @var bool - */ - public static $decorations = true; - - /** - * Sort mode for object properties. - * - * @var int - */ - public static $sort = self::SORT_NONE; - - /** - * Timestamp to print in footer in date() format. - * - * @var ?string - */ - public static $timestamp = null; - - public $header_width = 80; - public $indent_width = 4; - - protected $plugin_objs = []; - - public function __construct() - { - $this->header_width = self::$default_width; - $this->indent_width = self::$default_indent; - } - - public function render(Value $o): string - { - if ($plugin = $this->getPlugin(self::$plugins, $o->hints)) { - $output = $plugin->render($o); - if (null !== $output && \strlen($output)) { - return $output; - } - } - - $out = ''; - - if (0 == $o->depth) { - $out .= $this->colorTitle($this->renderTitle($o)).PHP_EOL; - } - - $out .= $this->renderHeader($o); - $out .= $this->renderChildren($o).PHP_EOL; - - return $out; - } - - public function renderNothing(): string - { - if (self::$decorations) { - return $this->colorTitle( - $this->boxText('No argument', $this->header_width) - ).PHP_EOL; - } - - return $this->colorTitle('No argument').PHP_EOL; - } - - public function boxText(string $text, int $width): string - { - $out = '┌'.\str_repeat('─', $width - 2).'┐'.PHP_EOL; - - if (\strlen($text)) { - $text = Utils::truncateString($text, $width - 4); - $text = \str_pad($text, $width - 4); - - $out .= '│ '.$this->escape($text).' │'.PHP_EOL; - } - - $out .= '└'.\str_repeat('─', $width - 2).'┘'; - - return $out; - } - - public function renderTitle(Value $o): string - { - $name = (string) $o->getName(); - - if (self::$decorations) { - return $this->boxText($name, $this->header_width); - } - - return Utils::truncateString($name, $this->header_width); - } - - public function renderHeader(Value $o): string - { - $output = []; - - if ($o->depth) { - if (null !== ($s = $o->getModifiers())) { - $output[] = $s; - } - - if (null !== $o->name) { - $output[] = $this->escape(\var_export($o->name, true)); - - if (null !== ($s = $o->getOperator())) { - $output[] = $this->escape($s); - } - } - } - - if (null !== ($s = $o->getType())) { - if ($o->reference) { - $s = '&'.$s; - } - - $s = $this->colorType($this->escape($s)); - - if ($o instanceof InstanceValue && isset($o->spl_object_id)) { - $s .= '#'.((int) $o->spl_object_id); - } - - $output[] = $s; - } - - if (null !== ($s = $o->getSize())) { - $output[] = '('.$this->escape($s).')'; - } - - if (null !== ($s = $o->getValueShort())) { - if (self::$strlen_max) { - $s = Utils::truncateString($s, self::$strlen_max); - } - $output[] = $this->colorValue($this->escape($s)); - } - - return \str_repeat(' ', $o->depth * $this->indent_width).\implode(' ', $output); - } - - public function renderChildren(Value $o): string - { - if ('array' === $o->type) { - $output = ' ['; - } elseif ('object' === $o->type) { - $output = ' ('; - } else { - return ''; - } - - $children = ''; - - if ($o->value && \is_array($o->value->contents)) { - if ($o instanceof InstanceValue && 'properties' === $o->value->getName()) { - foreach (self::sortProperties($o->value->contents, self::$sort) as $obj) { - $children .= $this->render($obj); - } - } else { - foreach ($o->value->contents as $child) { - $children .= $this->render($child); - } - } - } - - if ($children) { - $output .= PHP_EOL.$children; - $output .= \str_repeat(' ', $o->depth * $this->indent_width); - } - - if ('array' === $o->type) { - $output .= ']'; - } else { - $output .= ')'; - } - - return $output; - } - - public function colorValue(string $string): string - { - return $string; - } - - public function colorType(string $string): string - { - return $string; - } - - public function colorTitle(string $string): string - { - return $string; - } - - public function postRender(): string - { - if (self::$decorations) { - $output = \str_repeat('═', $this->header_width); - } else { - $output = ''; - } - - if (!$this->show_trace) { - return $this->colorTitle($output); - } - - if ($output) { - $output .= PHP_EOL; - } - - return $this->colorTitle($output.$this->calledFrom().PHP_EOL); - } - - public function filterParserPlugins(array $plugins): array - { - $return = []; - - foreach ($plugins as $plugin) { - foreach (self::$parser_plugin_whitelist as $whitelist) { - if ($plugin instanceof $whitelist) { - $return[] = $plugin; - continue 2; - } - } - } - - return $return; - } - - public function ideLink(string $file, int $line): string - { - return $this->escape(Kint::shortenPath($file)).':'.$line; - } - - /** - * @psalm-param Encoding $encoding - */ - public function escape(string $string, $encoding = false): string - { - return $string; - } - - protected function calledFrom(): string - { - $output = ''; - - if (isset($this->call_info['callee']['file'])) { - $output .= 'Called from '.$this->ideLink( - $this->call_info['callee']['file'], - $this->call_info['callee']['line'] - ); - } - - if ( - isset($this->call_info['callee']['function']) && - ( - !empty($this->call_info['callee']['class']) || - !\in_array( - $this->call_info['callee']['function'], - ['include', 'include_once', 'require', 'require_once'], - true - ) - ) - ) { - $output .= ' ['; - $output .= $this->call_info['callee']['class'] ?? ''; - $output .= $this->call_info['callee']['type'] ?? ''; - $output .= $this->call_info['callee']['function'].'()]'; - } - - if (null !== self::$timestamp) { - if (\strlen($output)) { - $output .= ' '; - } - $output .= \date(self::$timestamp); - } - - return $output; - } - - /** - * @psalm-param PluginMap $plugins - * @psalm-param string[] $hints - */ - protected function getPlugin(array $plugins, array $hints): ?PluginInterface - { - if ($plugins = $this->matchPlugins($plugins, $hints)) { - $plugin = \end($plugins); - - if (!isset($this->plugin_objs[$plugin]) && \is_subclass_of($plugin, PluginInterface::class)) { - $this->plugin_objs[$plugin] = new $plugin($this); - } - - return $this->plugin_objs[$plugin]; - } - - return null; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Utils.php b/system4.4.6/ThirdParty/Kint/Utils.php deleted file mode 100644 index 54570958..00000000 --- a/system4.4.6/ThirdParty/Kint/Utils.php +++ /dev/null @@ -1,296 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint; - -use Kint\Zval\BlobValue; -use ReflectionNamedType; -use ReflectionType; -use UnexpectedValueException; - -/** - * A collection of utility methods. Should all be static methods with no dependencies. - * - * @psalm-import-type Encoding from BlobValue - */ -final class Utils -{ - /** - * @codeCoverageIgnore - */ - private function __construct() - { - } - - /** - * Turns a byte value into a human-readable representation. - * - * @param int $value Amount of bytes - * - * @return array Human readable value and unit - */ - public static function getHumanReadableBytes(int $value): array - { - static $unit = ['B', 'KB', 'MB', 'GB', 'TB']; - - $negative = $value < 0; - $value = \abs($value); - - if ($value < 1024) { - $i = 0; - $value = \floor($value); - } elseif ($value < 0xFFFCCCCCCCCCCCC >> 40) { - $i = 1; - } elseif ($value < 0xFFFCCCCCCCCCCCC >> 30) { - $i = 2; - } elseif ($value < 0xFFFCCCCCCCCCCCC >> 20) { - $i = 3; - } else { - $i = 4; - } - - if ($i) { - $value = $value / \pow(1024, $i); - } - - if ($negative) { - $value *= -1; - } - - return [ - 'value' => \round($value, 1), - 'unit' => $unit[$i], - ]; - } - - public static function isSequential(array $array): bool - { - return \array_keys($array) === \range(0, \count($array) - 1); - } - - public static function isAssoc(array $array): bool - { - return (bool) \count(\array_filter(\array_keys($array), 'is_string')); - } - - public static function composerGetExtras(string $key = 'kint'): array - { - if (0 === \strpos(KINT_DIR, 'phar://')) { - // Only run inside phar file, so skip for code coverage - return []; // @codeCoverageIgnore - } - - $extras = []; - - $folder = KINT_DIR.'/vendor'; - - for ($i = 0; $i < 4; ++$i) { - $installed = $folder.'/composer/installed.json'; - - if (\file_exists($installed) && \is_readable($installed)) { - $packages = \json_decode(\file_get_contents($installed), true); - - if (!\is_array($packages)) { - continue; - } - - // Composer 2.0 Compatibility: packages are now wrapped into a "packages" top level key instead of the whole file being the package array - // @see https://getcomposer.org/upgrade/UPGRADE-2.0.md - foreach ($packages['packages'] ?? $packages as $package) { - if (isset($package['extra'][$key]) && \is_array($package['extra'][$key])) { - $extras = \array_replace($extras, $package['extra'][$key]); - } - } - - $folder = \dirname($folder); - - if (\file_exists($folder.'/composer.json') && \is_readable($folder.'/composer.json')) { - $composer = \json_decode(\file_get_contents($folder.'/composer.json'), true); - - if (isset($composer['extra'][$key]) && \is_array($composer['extra'][$key])) { - $extras = \array_replace($extras, $composer['extra'][$key]); - } - } - - break; - } - - $folder = \dirname($folder); - } - - return $extras; - } - - /** - * @codeCoverageIgnore - */ - public static function composerSkipFlags(): void - { - if (\defined('KINT_SKIP_FACADE') && \defined('KINT_SKIP_HELPERS')) { - return; - } - - $extras = self::composerGetExtras(); - - if (!empty($extras['disable-facade']) && !\defined('KINT_SKIP_FACADE')) { - \define('KINT_SKIP_FACADE', true); - } - - if (!empty($extras['disable-helpers']) && !\defined('KINT_SKIP_HELPERS')) { - \define('KINT_SKIP_HELPERS', true); - } - } - - public static function isTrace(array $trace): bool - { - if (!self::isSequential($trace)) { - return false; - } - - static $bt_structure = [ - 'function' => 'string', - 'line' => 'integer', - 'file' => 'string', - 'class' => 'string', - 'object' => 'object', - 'type' => 'string', - 'args' => 'array', - ]; - - $file_found = false; - - foreach ($trace as $frame) { - if (!\is_array($frame) || !isset($frame['function'])) { - return false; - } - - foreach ($frame as $key => $val) { - if (!isset($bt_structure[$key])) { - return false; - } - - if (\gettype($val) !== $bt_structure[$key]) { - return false; - } - - if ('file' === $key) { - $file_found = true; - } - } - } - - return $file_found; - } - - public static function traceFrameIsListed(array $frame, array $matches): bool - { - if (isset($frame['class'])) { - $called = [\strtolower($frame['class']), \strtolower($frame['function'])]; - } else { - $called = \strtolower($frame['function']); - } - - return \in_array($called, $matches, true); - } - - public static function normalizeAliases(array &$aliases): void - { - static $name_regex = '[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*'; - - foreach ($aliases as $index => &$alias) { - if (\is_array($alias) && 2 === \count($alias)) { - $alias = \array_values(\array_filter($alias, 'is_string')); - - if (2 === \count($alias) && - \preg_match('/^'.$name_regex.'$/', $alias[1]) && - \preg_match('/^\\\\?('.$name_regex.'\\\\)*'.$name_regex.'$/', $alias[0]) - ) { - $alias = [ - \strtolower(\ltrim($alias[0], '\\')), - \strtolower($alias[1]), - ]; - } else { - unset($aliases[$index]); - continue; - } - } elseif (\is_string($alias)) { - if (\preg_match('/^\\\\?('.$name_regex.'\\\\)*'.$name_regex.'$/', $alias)) { - $alias = \explode('\\', \strtolower($alias)); - $alias = \end($alias); - } else { - unset($aliases[$index]); - continue; - } - } else { - unset($aliases[$index]); - } - } - - $aliases = \array_values($aliases); - } - - /** - * @psalm-param Encoding $encoding - */ - public static function truncateString(string $input, int $length = PHP_INT_MAX, string $end = '...', $encoding = false): string - { - $endlength = BlobValue::strlen($end); - - if ($endlength >= $length) { - $endlength = 0; - $end = ''; - } - - if (BlobValue::strlen($input, $encoding) > $length) { - return BlobValue::substr($input, 0, $length - $endlength, $encoding).$end; - } - - return $input; - } - - public static function getTypeString(ReflectionType $type): string - { - // @codeCoverageIgnoreStart - // ReflectionType::__toString was deprecated in 7.4 and undeprecated in 8 - // and toString doesn't correctly show the nullable ? in the type before 8 - if (!KINT_PHP80) { - if (!$type instanceof ReflectionNamedType) { - throw new UnexpectedValueException('ReflectionType on PHP 7 must be ReflectionNamedType'); - } - - $name = $type->getName(); - if ($type->allowsNull() && 'mixed' !== $name && false === \strpos($name, '|')) { - $name = '?'.$name; - } - - return $name; - } - // @codeCoverageIgnoreEnd - - return (string) $type; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Zval/BlobValue.php b/system4.4.6/ThirdParty/Kint/Zval/BlobValue.php deleted file mode 100644 index 5e9f129d..00000000 --- a/system4.4.6/ThirdParty/Kint/Zval/BlobValue.php +++ /dev/null @@ -1,199 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Zval; - -/** - * @psalm-type Encoding string|false - */ -class BlobValue extends Value -{ - /** - * @var array Character encodings to detect - * - * @see https://secure.php.net/function.mb-detect-order - * - * In practice, mb_detect_encoding can only successfully determine the - * difference between the following common charsets at once without - * breaking things for one of the other charsets: - * - ASCII - * - UTF-8 - * - SJIS - * - EUC-JP - * - * The order of the charsets is significant. If you put UTF-8 before ASCII - * it will never match ASCII, because UTF-8 is a superset of ASCII. - * Similarly, SJIS and EUC-JP frequently match UTF-8 strings, so you should - * check UTF-8 first. SJIS and EUC-JP seem to work either way, but SJIS is - * more common so it should probably be first. - * - * While you're free to experiment with other charsets, remember to keep - * this behavior in mind when setting up your char_encodings array. - * - * This depends on the mbstring extension - */ - public static $char_encodings = [ - 'ASCII', - 'UTF-8', - ]; - - /** - * @var array Legacy character encodings to detect - * - * @see https://secure.php.net/function.iconv - * - * Assuming the other encoding checks fail, this will perform a - * simple iconv conversion to check for invalid bytes. If any are - * found it will not match. - * - * This can be useful for ambiguous single byte encodings like - * windows-125x and iso-8859-x which have practically undetectable - * differences because they use every single byte available. - * - * This is *NOT* reliable and should not be trusted implicitly. Since it - * works by triggering and suppressing conversion warnings, your error - * handler may complain. - * - * As with char_encodings, the order of the charsets is significant. - * - * This depends on the iconv extension - */ - public static $legacy_encodings = []; - - public $type = 'string'; - /** @psalm-var Encoding */ - public $encoding = false; - public $hints = ['string']; - - public function getType(): ?string - { - if (false === $this->encoding) { - return 'binary '.$this->type; - } - - if ('ASCII' === $this->encoding) { - return $this->type; - } - - return $this->encoding.' '.$this->type; - } - - public function getValueShort(): ?string - { - if ($rep = $this->value) { - return '"'.$rep->contents.'"'; - } - - return null; - } - - public function transplant(Value $old): void - { - parent::transplant($old); - - if ($old instanceof self) { - $this->encoding = $old->encoding; - } - } - - /** - * @psalm-param Encoding $encoding - */ - public static function strlen(string $string, $encoding = false): int - { - if (\function_exists('mb_strlen')) { - if (false === $encoding) { - $encoding = self::detectEncoding($string); - } - - if ($encoding && 'ASCII' !== $encoding) { - return \mb_strlen($string, $encoding); - } - } - - return \strlen($string); - } - - /** - * @psalm-param Encoding $encoding - */ - public static function substr(string $string, int $start, int $length = null, $encoding = false): string - { - if (\function_exists('mb_substr')) { - if (false === $encoding) { - $encoding = self::detectEncoding($string); - } - - if ($encoding && 'ASCII' !== $encoding) { - return \mb_substr($string, $start, $length, $encoding); - } - } - - // Special case for substr/mb_substr discrepancy - if ('' === $string) { - return ''; - } - - return \substr($string, $start, $length ?? PHP_INT_MAX); - } - - /** - * @psalm-return Encoding - */ - public static function detectEncoding(string $string) - { - if (\function_exists('mb_detect_encoding')) { - if ($ret = \mb_detect_encoding($string, self::$char_encodings, true)) { - return $ret; - } - } - - // Pretty much every character encoding uses first 32 bytes as control - // characters. If it's not a multi-byte format it's safe to say matching - // any control character besides tab, nl, and cr means it's binary. - if (\preg_match('/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F]/', $string)) { - return false; - } - - if (\function_exists('iconv')) { - foreach (self::$legacy_encodings as $encoding) { - // Iconv detection works by triggering - // "Detected an illegal character in input string" warnings - if (@\iconv($encoding, $encoding, $string) === $string) { - return $encoding; - } - } - } elseif (!\function_exists('mb_detect_encoding')) { // @codeCoverageIgnore - // If a user has neither mb_detect_encoding, nor iconv, nor the - // polyfills, there's not much we can do about it... - // Pretend it's ASCII and pray the browser renders it properly. - return 'ASCII'; // @codeCoverageIgnore - } - - return false; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Zval/ClosureValue.php b/system4.4.6/ThirdParty/Kint/Zval/ClosureValue.php deleted file mode 100644 index 69e68184..00000000 --- a/system4.4.6/ThirdParty/Kint/Zval/ClosureValue.php +++ /dev/null @@ -1,58 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Zval; - -class ClosureValue extends InstanceValue -{ - use ParameterHoldingTrait; - - public $hints = ['object', 'callable', 'closure']; - - public function getAccessPath(): ?string - { - if (null !== $this->access_path) { - return parent::getAccessPath().'('.$this->getParams().')'; - } - - return null; - } - - public function getSize(): ?string - { - return null; - } - - public function transplant(Value $old): void - { - parent::transplant($old); - - if (0 === $this->depth && \preg_match('/^\\((function|fn)\\s*\\(/i', $this->access_path, $match)) { - $this->name = \strtolower($match[1]); - } - } -} diff --git a/system4.4.6/ThirdParty/Kint/Zval/DateTimeValue.php b/system4.4.6/ThirdParty/Kint/Zval/DateTimeValue.php deleted file mode 100644 index 2ba53d62..00000000 --- a/system4.4.6/ThirdParty/Kint/Zval/DateTimeValue.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Zval; - -use DateTime; - -class DateTimeValue extends InstanceValue -{ - public $dt; - - public $hints = ['object', 'datetime']; - - public function __construct(DateTime $dt) - { - parent::__construct(); - - $this->dt = clone $dt; - } - - public function getValueShort(): string - { - $stamp = $this->dt->format('Y-m-d H:i:s'); - if ((int) ($micro = $this->dt->format('u'))) { - $stamp .= '.'.$micro; - } - $stamp .= $this->dt->format('P T'); - - return $stamp; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Zval/EnumValue.php b/system4.4.6/ThirdParty/Kint/Zval/EnumValue.php deleted file mode 100644 index e9cfe19e..00000000 --- a/system4.4.6/ThirdParty/Kint/Zval/EnumValue.php +++ /dev/null @@ -1,74 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Zval; - -use BackedEnum; -use UnitEnum; - -class EnumValue extends InstanceValue -{ - public $enumval; - - public $hints = ['object', 'enum']; - - public function __construct(UnitEnum $enumval) - { - $this->enumval = $enumval; - } - - public function getValueShort(): ?string - { - if ($this->enumval instanceof BackedEnum) { - if (\is_string($this->enumval->value)) { - return '"'.$this->enumval->value.'"'; - } // Int - - return (string) $this->enumval->value; - } - - return null; - } - - public function getType(): ?string - { - if (isset($this->classname)) { - if (isset($this->enumval->name)) { - return $this->classname.'::'.$this->enumval->name; - } - - return $this->classname; - } - - return null; - } - - public function getSize(): ?string - { - return null; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Zval/InstanceValue.php b/system4.4.6/ThirdParty/Kint/Zval/InstanceValue.php deleted file mode 100644 index 32373347..00000000 --- a/system4.4.6/ThirdParty/Kint/Zval/InstanceValue.php +++ /dev/null @@ -1,74 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Zval; - -class InstanceValue extends Value -{ - public $type = 'object'; - public $classname; - public $spl_object_hash; - public $spl_object_id = null; - public $filename; - public $startline; - public $hints = ['object']; - - public function getType(): ?string - { - return $this->classname; - } - - public function transplant(Value $old): void - { - parent::transplant($old); - - if ($old instanceof self) { - $this->classname = $old->classname; - $this->spl_object_hash = $old->spl_object_hash; - $this->spl_object_id = $old->spl_object_id; - $this->filename = $old->filename; - $this->startline = $old->startline; - } - } - - /** - * @psalm-param class-string $a - * @psalm-param class-string $b - */ - public static function sortByHierarchy(string $a, string $b): int - { - if (\is_subclass_of($a, $b)) { - return -1; - } - - if (\is_subclass_of($b, $a)) { - return 1; - } - - return 0; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Zval/MethodValue.php b/system4.4.6/ThirdParty/Kint/Zval/MethodValue.php deleted file mode 100644 index 55c32098..00000000 --- a/system4.4.6/ThirdParty/Kint/Zval/MethodValue.php +++ /dev/null @@ -1,228 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Zval; - -use Kint\Utils; -use Kint\Zval\Representation\MethodDefinitionRepresentation; -use ReflectionFunctionAbstract; -use ReflectionMethod; - -class MethodValue extends Value -{ - use ParameterHoldingTrait; - - public $type = 'method'; - public $filename; - public $startline; - public $endline; - public $abstract; - public $final; - public $internal; - public $docstring; - public $returntype; - public $return_reference = false; - public $hints = ['callable', 'method']; - public $showparams = true; - - public function __construct(ReflectionFunctionAbstract $method) - { - parent::__construct(); - - $this->name = $method->getName(); - $this->filename = $method->getFileName(); - $this->startline = $method->getStartLine(); - $this->endline = $method->getEndLine(); - $this->internal = $method->isInternal(); - $this->docstring = $method->getDocComment() ?: null; - $this->return_reference = $method->returnsReference(); - - foreach ($method->getParameters() as $param) { - $this->parameters[] = new ParameterValue($param); - } - - $this->returntype = $method->getReturnType(); - if ($this->returntype) { - $this->returntype = Utils::getTypeString($this->returntype); - } - - if ($method instanceof ReflectionMethod) { - $this->static = $method->isStatic(); - $this->operator = $this->static ? Value::OPERATOR_STATIC : Value::OPERATOR_OBJECT; - $this->abstract = $method->isAbstract(); - $this->final = $method->isFinal(); - $this->owner_class = $method->getDeclaringClass()->name; - $this->access = Value::ACCESS_PUBLIC; - if ($method->isProtected()) { - $this->access = Value::ACCESS_PROTECTED; - } elseif ($method->isPrivate()) { - $this->access = Value::ACCESS_PRIVATE; - } - } - - if ($this->internal) { - return; - } - - $docstring = new MethodDefinitionRepresentation( - $this->filename, - $this->startline, - $this->owner_class, - $this->docstring - ); - - $docstring->implicit_label = true; - $this->addRepresentation($docstring); - $this->value = $docstring; - } - - public function setAccessPathFrom(InstanceValue $parent): void - { - static $magic = [ - '__call' => true, - '__callstatic' => true, - '__clone' => true, - '__construct' => true, - '__debuginfo' => true, - '__destruct' => true, - '__get' => true, - '__invoke' => true, - '__isset' => true, - '__set' => true, - '__set_state' => true, - '__sleep' => true, - '__tostring' => true, - '__unset' => true, - '__wakeup' => true, - ]; - - $name = \strtolower($this->name); - - if ('__construct' === $name) { - $this->access_path = 'new \\'.$parent->getType(); - } elseif ('__invoke' === $name) { - $this->access_path = $parent->access_path; - } elseif ('__clone' === $name) { - $this->access_path = 'clone '.$parent->access_path; - $this->showparams = false; - } elseif ('__tostring' === $name) { - $this->access_path = '(string) '.$parent->access_path; - $this->showparams = false; - } elseif (isset($magic[$name])) { - $this->access_path = null; - } elseif ($this->static) { - $this->access_path = '\\'.$this->owner_class.'::'.$this->name; - } else { - $this->access_path = $parent->access_path.'->'.$this->name; - } - } - - public function getValueShort(): ?string - { - if (!$this->value || !($this->value instanceof MethodDefinitionRepresentation)) { - return parent::getValueShort(); - } - - $ds = $this->value->getDocstringWithoutComments(); - - if (!$ds) { - return null; - } - - $ds = \explode("\n", $ds); - - $out = ''; - - foreach ($ds as $line) { - if (0 === \strlen(\trim($line)) || '@' === $line[0]) { - break; - } - - $out .= $line.' '; - } - - if (\strlen($out)) { - return \rtrim($out); - } - - return null; - } - - public function getModifiers(): ?string - { - $mods = [ - $this->abstract ? 'abstract' : null, - $this->final ? 'final' : null, - $this->getAccess(), - $this->static ? 'static' : null, - ]; - - $out = ''; - - foreach ($mods as $word) { - if (null !== $word) { - $out .= $word.' '; - } - } - - if (\strlen($out)) { - return \rtrim($out); - } - - return null; - } - - public function getAccessPath(): ?string - { - if (null !== $this->access_path && $this->showparams) { - return parent::getAccessPath().'('.$this->getParams().')'; - } - - return parent::getAccessPath(); - } - - public function getPhpDocUrl(): ?string - { - if (!$this->internal) { - return null; - } - - if ($this->owner_class) { - $class = \strtolower($this->owner_class); - } else { - $class = 'function'; - } - - $funcname = \str_replace('_', '-', \strtolower($this->name)); - - if (0 === \strpos($funcname, '--') && 0 !== \strpos($funcname, '-', 2)) { - $funcname = \substr($funcname, 2); - } - - return 'https://secure.php.net/'.$class.'.'.$funcname; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Zval/ParameterHoldingTrait.php b/system4.4.6/ThirdParty/Kint/Zval/ParameterHoldingTrait.php deleted file mode 100644 index c67ecd45..00000000 --- a/system4.4.6/ThirdParty/Kint/Zval/ParameterHoldingTrait.php +++ /dev/null @@ -1,63 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Zval; - -trait ParameterHoldingTrait -{ - /** @var ParameterValue[] */ - public $parameters = []; - - private $paramcache; - - public function getParams(): string - { - if (null !== $this->paramcache) { - return $this->paramcache; - } - - $out = []; - - foreach ($this->parameters as $p) { - $type = $p->getType(); - if ($type) { - $type .= ' '; - } - - $default = $p->getDefault(); - if ($default) { - $default = ' = '.$default; - } - - $ref = $p->reference ? '&' : ''; - - $out[] = $type.$ref.$p->getName().$default; - } - - return $this->paramcache = \implode(', ', $out); - } -} diff --git a/system4.4.6/ThirdParty/Kint/Zval/ParameterValue.php b/system4.4.6/ThirdParty/Kint/Zval/ParameterValue.php deleted file mode 100644 index 2e690b75..00000000 --- a/system4.4.6/ThirdParty/Kint/Zval/ParameterValue.php +++ /dev/null @@ -1,85 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Zval; - -use Kint\Utils; -use ReflectionParameter; - -class ParameterValue extends Value -{ - public $type_hint; - public $default; - public $position; - public $hints = ['parameter']; - - public function __construct(ReflectionParameter $param) - { - parent::__construct(); - - if ($type = $param->getType()) { - $this->type_hint = Utils::getTypeString($type); - } - - $this->reference = $param->isPassedByReference(); - $this->name = $param->getName(); - $this->position = $param->getPosition(); - - if ($param->isDefaultValueAvailable()) { - $default = $param->getDefaultValue(); - switch (\gettype($default)) { - case 'NULL': - $this->default = 'null'; - break; - case 'boolean': - $this->default = $default ? 'true' : 'false'; - break; - case 'array': - $this->default = \count($default) ? 'array(...)' : 'array()'; - break; - default: - $this->default = \var_export($default, true); - break; - } - } - } - - public function getType(): ?string - { - return $this->type_hint; - } - - public function getName(): string - { - return '$'.$this->name; - } - - public function getDefault(): ?string - { - return $this->default; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Zval/Representation/ColorRepresentation.php b/system4.4.6/ThirdParty/Kint/Zval/Representation/ColorRepresentation.php deleted file mode 100644 index 88536034..00000000 --- a/system4.4.6/ThirdParty/Kint/Zval/Representation/ColorRepresentation.php +++ /dev/null @@ -1,571 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Zval\Representation; - -use InvalidArgumentException; - -class ColorRepresentation extends Representation -{ - public const COLOR_NAME = 1; - public const COLOR_HEX_3 = 2; - public const COLOR_HEX_6 = 3; - public const COLOR_RGB = 4; - public const COLOR_RGBA = 5; - public const COLOR_HSL = 6; - public const COLOR_HSLA = 7; - public const COLOR_HEX_4 = 8; - public const COLOR_HEX_8 = 9; - - public static $color_map = [ - 'aliceblue' => 'f0f8ff', - 'antiquewhite' => 'faebd7', - 'aqua' => '00ffff', - 'aquamarine' => '7fffd4', - 'azure' => 'f0ffff', - 'beige' => 'f5f5dc', - 'bisque' => 'ffe4c4', - 'black' => '000000', - 'blanchedalmond' => 'ffebcd', - 'blue' => '0000ff', - 'blueviolet' => '8a2be2', - 'brown' => 'a52a2a', - 'burlywood' => 'deb887', - 'cadetblue' => '5f9ea0', - 'chartreuse' => '7fff00', - 'chocolate' => 'd2691e', - 'coral' => 'ff7f50', - 'cornflowerblue' => '6495ed', - 'cornsilk' => 'fff8dc', - 'crimson' => 'dc143c', - 'cyan' => '00ffff', - 'darkblue' => '00008b', - 'darkcyan' => '008b8b', - 'darkgoldenrod' => 'b8860b', - 'darkgray' => 'a9a9a9', - 'darkgreen' => '006400', - 'darkgrey' => 'a9a9a9', - 'darkkhaki' => 'bdb76b', - 'darkmagenta' => '8b008b', - 'darkolivegreen' => '556b2f', - 'darkorange' => 'ff8c00', - 'darkorchid' => '9932cc', - 'darkred' => '8b0000', - 'darksalmon' => 'e9967a', - 'darkseagreen' => '8fbc8f', - 'darkslateblue' => '483d8b', - 'darkslategray' => '2f4f4f', - 'darkslategrey' => '2f4f4f', - 'darkturquoise' => '00ced1', - 'darkviolet' => '9400d3', - 'deeppink' => 'ff1493', - 'deepskyblue' => '00bfff', - 'dimgray' => '696969', - 'dimgrey' => '696969', - 'dodgerblue' => '1e90ff', - 'firebrick' => 'b22222', - 'floralwhite' => 'fffaf0', - 'forestgreen' => '228b22', - 'fuchsia' => 'ff00ff', - 'gainsboro' => 'dcdcdc', - 'ghostwhite' => 'f8f8ff', - 'gold' => 'ffd700', - 'goldenrod' => 'daa520', - 'gray' => '808080', - 'green' => '008000', - 'greenyellow' => 'adff2f', - 'grey' => '808080', - 'honeydew' => 'f0fff0', - 'hotpink' => 'ff69b4', - 'indianred' => 'cd5c5c', - 'indigo' => '4b0082', - 'ivory' => 'fffff0', - 'khaki' => 'f0e68c', - 'lavender' => 'e6e6fa', - 'lavenderblush' => 'fff0f5', - 'lawngreen' => '7cfc00', - 'lemonchiffon' => 'fffacd', - 'lightblue' => 'add8e6', - 'lightcoral' => 'f08080', - 'lightcyan' => 'e0ffff', - 'lightgoldenrodyellow' => 'fafad2', - 'lightgray' => 'd3d3d3', - 'lightgreen' => '90ee90', - 'lightgrey' => 'd3d3d3', - 'lightpink' => 'ffb6c1', - 'lightsalmon' => 'ffa07a', - 'lightseagreen' => '20b2aa', - 'lightskyblue' => '87cefa', - 'lightslategray' => '778899', - 'lightslategrey' => '778899', - 'lightsteelblue' => 'b0c4de', - 'lightyellow' => 'ffffe0', - 'lime' => '00ff00', - 'limegreen' => '32cd32', - 'linen' => 'faf0e6', - 'magenta' => 'ff00ff', - 'maroon' => '800000', - 'mediumaquamarine' => '66cdaa', - 'mediumblue' => '0000cd', - 'mediumorchid' => 'ba55d3', - 'mediumpurple' => '9370db', - 'mediumseagreen' => '3cb371', - 'mediumslateblue' => '7b68ee', - 'mediumspringgreen' => '00fa9a', - 'mediumturquoise' => '48d1cc', - 'mediumvioletred' => 'c71585', - 'midnightblue' => '191970', - 'mintcream' => 'f5fffa', - 'mistyrose' => 'ffe4e1', - 'moccasin' => 'ffe4b5', - 'navajowhite' => 'ffdead', - 'navy' => '000080', - 'oldlace' => 'fdf5e6', - 'olive' => '808000', - 'olivedrab' => '6b8e23', - 'orange' => 'ffa500', - 'orangered' => 'ff4500', - 'orchid' => 'da70d6', - 'palegoldenrod' => 'eee8aa', - 'palegreen' => '98fb98', - 'paleturquoise' => 'afeeee', - 'palevioletred' => 'db7093', - 'papayawhip' => 'ffefd5', - 'peachpuff' => 'ffdab9', - 'peru' => 'cd853f', - 'pink' => 'ffc0cb', - 'plum' => 'dda0dd', - 'powderblue' => 'b0e0e6', - 'purple' => '800080', - 'rebeccapurple' => '663399', - 'red' => 'ff0000', - 'rosybrown' => 'bc8f8f', - 'royalblue' => '4169e1', - 'saddlebrown' => '8b4513', - 'salmon' => 'fa8072', - 'sandybrown' => 'f4a460', - 'seagreen' => '2e8b57', - 'seashell' => 'fff5ee', - 'sienna' => 'a0522d', - 'silver' => 'c0c0c0', - 'skyblue' => '87ceeb', - 'slateblue' => '6a5acd', - 'slategray' => '708090', - 'slategrey' => '708090', - 'snow' => 'fffafa', - 'springgreen' => '00ff7f', - 'steelblue' => '4682b4', - 'tan' => 'd2b48c', - 'teal' => '008080', - 'thistle' => 'd8bfd8', - 'tomato' => 'ff6347', - // To quote MDN: - // "Technically, transparent is a shortcut for rgba(0,0,0,0)." - 'transparent' => '00000000', - 'turquoise' => '40e0d0', - 'violet' => 'ee82ee', - 'wheat' => 'f5deb3', - 'white' => 'ffffff', - 'whitesmoke' => 'f5f5f5', - 'yellow' => 'ffff00', - 'yellowgreen' => '9acd32', - ]; - - public $r = 0; - public $g = 0; - public $b = 0; - public $a = 1.0; - public $variant; - public $implicit_label = true; - public $hints = ['color']; - - public function __construct(string $value) - { - parent::__construct('Color'); - - $this->contents = $value; - $this->setValues($value); - } - - public function getColor(int $variant = null): ?string - { - if (!$variant) { - $variant = $this->variant; - } - - switch ($variant) { - case self::COLOR_NAME: - $hex = \sprintf('%02x%02x%02x', $this->r, $this->g, $this->b); - $hex_alpha = \sprintf('%02x%02x%02x%02x', $this->r, $this->g, $this->b, \round($this->a * 0xFF)); - - return \array_search($hex, self::$color_map, true) ?: \array_search($hex_alpha, self::$color_map, true) ?: null; - case self::COLOR_HEX_3: - if (0 === $this->r % 0x11 && 0 === $this->g % 0x11 && 0 === $this->b % 0x11) { - return \sprintf( - '#%1X%1X%1X', - \round($this->r / 0x11), - \round($this->g / 0x11), - \round($this->b / 0x11) - ); - } - - return null; - case self::COLOR_HEX_6: - return \sprintf('#%02X%02X%02X', $this->r, $this->g, $this->b); - case self::COLOR_RGB: - if (1.0 === $this->a) { - return \sprintf('rgb(%d, %d, %d)', $this->r, $this->g, $this->b); - } - - return \sprintf('rgb(%d, %d, %d, %s)', $this->r, $this->g, $this->b, \round($this->a, 4)); - case self::COLOR_RGBA: - return \sprintf('rgba(%d, %d, %d, %s)', $this->r, $this->g, $this->b, \round($this->a, 4)); - case self::COLOR_HSL: - $val = self::rgbToHsl($this->r, $this->g, $this->b); - if (1.0 === $this->a) { - return \vsprintf('hsl(%d, %d%%, %d%%)', $val); - } - - return \sprintf('hsl(%d, %d%%, %d%%, %s)', $val[0], $val[1], $val[2], \round($this->a, 4)); - case self::COLOR_HSLA: - $val = self::rgbToHsl($this->r, $this->g, $this->b); - - return \sprintf('hsla(%d, %d%%, %d%%, %s)', $val[0], $val[1], $val[2], \round($this->a, 4)); - case self::COLOR_HEX_4: - if (0 === $this->r % 0x11 && 0 === $this->g % 0x11 && 0 === $this->b % 0x11 && 0 === ((int) ($this->a * 255)) % 0x11) { - return \sprintf( - '#%1X%1X%1X%1X', - \round($this->r / 0x11), - \round($this->g / 0x11), - \round($this->b / 0x11), - \round($this->a * 0xF) - ); - } - - return null; - - case self::COLOR_HEX_8: - return \sprintf('#%02X%02X%02X%02X', $this->r, $this->g, $this->b, \round($this->a * 0xFF)); - } - - return null; - } - - public function hasAlpha(int $variant = null): bool - { - if (null === $variant) { - $variant = $this->variant; - } - - switch ($variant) { - case self::COLOR_NAME: - case self::COLOR_RGB: - case self::COLOR_HSL: - return \abs($this->a - 1) >= 0.0001; - case self::COLOR_RGBA: - case self::COLOR_HSLA: - case self::COLOR_HEX_4: - case self::COLOR_HEX_8: - return true; - default: - return false; - } - } - - protected function setValues(string $value): void - { - $value = \strtolower(\trim($value)); - // Find out which variant of color input it is - if (isset(self::$color_map[$value])) { - if (!$this->setValuesFromHex(self::$color_map[$value])) { - return; - } - - $variant = self::COLOR_NAME; - } elseif ('#' === $value[0]) { - $variant = $this->setValuesFromHex(\substr($value, 1)); - - if (!$variant) { - return; - } - } else { - $variant = $this->setValuesFromFunction($value); - - if (!$variant) { - return; - } - } - - // If something has gone horribly wrong - if ($this->r > 0xFF || $this->g > 0xFF || $this->b > 0xFF || $this->a > 1) { - $this->variant = null; // @codeCoverageIgnore - } else { - $this->variant = $variant; - $this->r = (int) $this->r; - $this->g = (int) $this->g; - $this->b = (int) $this->b; - $this->a = (float) $this->a; - } - } - - protected function setValuesFromHex(string $hex): ?int - { - if (!\ctype_xdigit($hex)) { - return null; - } - - switch (\strlen($hex)) { - case 3: - $variant = self::COLOR_HEX_3; - break; - case 6: - $variant = self::COLOR_HEX_6; - break; - case 4: - $variant = self::COLOR_HEX_4; - break; - case 8: - $variant = self::COLOR_HEX_8; - break; - default: - return null; - } - - switch ($variant) { - case self::COLOR_HEX_4: - $this->a = \hexdec($hex[3]) / 0xF; - // no break - case self::COLOR_HEX_3: - $this->r = \hexdec($hex[0]) * 0x11; - $this->g = \hexdec($hex[1]) * 0x11; - $this->b = \hexdec($hex[2]) * 0x11; - break; - case self::COLOR_HEX_8: - $this->a = \hexdec(\substr($hex, 6, 2)) / 0xFF; - // no break - case self::COLOR_HEX_6: - $hex = \str_split($hex, 2); - $this->r = \hexdec($hex[0]); - $this->g = \hexdec($hex[1]); - $this->b = \hexdec($hex[2]); - break; - } - - return $variant; - } - - protected function setValuesFromFunction(string $value): ?int - { - if (!\preg_match('/^((?:rgb|hsl)a?)\\s*\\(([0-9\\.%,\\s\\/\\-]+)\\)$/i', $value, $match)) { - return null; - } - - switch (\strtolower($match[1])) { - case 'rgb': - $variant = self::COLOR_RGB; - break; - case 'rgba': - $variant = self::COLOR_RGBA; - break; - case 'hsl': - $variant = self::COLOR_HSL; - break; - case 'hsla': - $variant = self::COLOR_HSLA; - break; - default: - return null; // @codeCoverageIgnore - } - - $params = \preg_replace('/[,\\s\\/]+/', ',', \trim($match[2])); - $params = \explode(',', $params); - $params = \array_map('trim', $params); - - if (\count($params) < 3 || \count($params) > 4) { - return null; - } - - foreach ($params as $i => &$color) { - if (false !== \strpos($color, '%')) { - $color = (float) \str_replace('%', '', $color); - - if (3 === $i) { - $color = $color / 100; - } elseif (\in_array($variant, [self::COLOR_RGB, self::COLOR_RGBA], true)) { - $color = \round($color / 100 * 0xFF); - } - } - - $color = (float) $color; - - if (0 === $i && \in_array($variant, [self::COLOR_HSL, self::COLOR_HSLA], true)) { - $color = \fmod(\fmod($color, 360) + 360, 360); - } - } - - /** @psalm-var non-empty-array<array-key, float> $params Psalm bug workaround */ - switch ($variant) { - case self::COLOR_RGBA: - case self::COLOR_RGB: - if (\min($params) < 0 || \max($params) > 0xFF) { - return null; - } - break; - case self::COLOR_HSLA: - case self::COLOR_HSL: - if (\min($params) < 0 || $params[0] > 360 || \max($params[1], $params[2]) > 100) { - return null; - } - break; - } - - if (4 === \count($params)) { - if ($params[3] > 1) { - return null; - } - - $this->a = $params[3]; - } - - if (self::COLOR_HSLA === $variant || self::COLOR_HSL === $variant) { - $params = self::hslToRgb($params[0], $params[1], $params[2]); - } - - [$this->r, $this->g, $this->b] = $params; - - return $variant; - } - - /** - * Turns HSL color to RGB. Black magic. - * - * @param float $h Hue - * @param float $s Saturation - * @param float $l Lightness - * - * @return int[] RGB array - */ - public static function hslToRgb(float $h, float $s, float $l): array - { - if (\min($h, $s, $l) < 0) { - throw new InvalidArgumentException('The parameters for hslToRgb should be no less than 0'); - } - - if ($h > 360 || \max($s, $l) > 100) { - throw new InvalidArgumentException('The parameters for hslToRgb should be no more than 360, 100, and 100 respectively'); - } - - $h /= 360; - $s /= 100; - $l /= 100; - - $m2 = ($l <= 0.5) ? $l * ($s + 1) : $l + $s - $l * $s; - $m1 = $l * 2 - $m2; - - return [ - (int) \round(self::hueToRgb($m1, $m2, $h + 1 / 3) * 0xFF), - (int) \round(self::hueToRgb($m1, $m2, $h) * 0xFF), - (int) \round(self::hueToRgb($m1, $m2, $h - 1 / 3) * 0xFF), - ]; - } - - /** - * Converts RGB to HSL. Color inversion of previous black magic is white magic? - * - * @param float $red Red - * @param float $green Green - * @param float $blue Blue - * - * @return float[] HSL array - */ - public static function rgbToHsl(float $red, float $green, float $blue): array - { - if (\min($red, $green, $blue) < 0) { - throw new InvalidArgumentException('The parameters for rgbToHsl should be no less than 0'); - } - - if (\max($red, $green, $blue) > 0xFF) { - throw new InvalidArgumentException('The parameters for rgbToHsl should be no more than 255'); - } - - $clrMin = \min($red, $green, $blue); - $clrMax = \max($red, $green, $blue); - $deltaMax = $clrMax - $clrMin; - - $L = ($clrMax + $clrMin) / 510; - - if (0 == $deltaMax) { - $H = 0.0; - $S = 0.0; - } else { - if (0.5 > $L) { - $S = $deltaMax / ($clrMax + $clrMin); - } else { - $S = $deltaMax / (510 - $clrMax - $clrMin); - } - - if ($clrMax === $red) { - $H = ($green - $blue) / (6.0 * $deltaMax); - - if (0 > $H) { - $H += 1.0; - } - } elseif ($clrMax === $green) { - $H = 1 / 3 + ($blue - $red) / (6.0 * $deltaMax); - } else { - $H = 2 / 3 + ($red - $green) / (6.0 * $deltaMax); - } - } - - return [ - \fmod($H * 360, 360), - $S * 100, - $L * 100, - ]; - } - - /** - * Helper function for hslToRgb. Even blacker magic. - * - * @return float Color value - */ - private static function hueToRgb(float $m1, float $m2, float $hue): float - { - $hue = ($hue < 0) ? $hue + 1 : (($hue > 1) ? $hue - 1 : $hue); - if ($hue * 6 < 1) { - return $m1 + ($m2 - $m1) * $hue * 6; - } - if ($hue * 2 < 1) { - return $m2; - } - if ($hue * 3 < 2) { - return $m1 + ($m2 - $m1) * (2 / 3 - $hue) * 6; - } - - return $m1; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Zval/Representation/MethodDefinitionRepresentation.php b/system4.4.6/ThirdParty/Kint/Zval/Representation/MethodDefinitionRepresentation.php deleted file mode 100644 index 6c1ca38b..00000000 --- a/system4.4.6/ThirdParty/Kint/Zval/Representation/MethodDefinitionRepresentation.php +++ /dev/null @@ -1,76 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Zval\Representation; - -class MethodDefinitionRepresentation extends Representation -{ - public $file; - public $line; - public $class; - public $inherited = false; - public $hints = ['method_definition']; - - public function __construct(?string $file, ?int $line, ?string $class, ?string $docstring) - { - parent::__construct('Method definition'); - - $this->file = $file; - $this->line = $line; - $this->class = $class; - $this->contents = $docstring; - } - - /** - * Returns the representation's docstring without surrounding comments. - * - * Note that this will not work flawlessly. - * - * On comments with whitespace after the stars the lines will begin with - * whitespace, since we can't accurately guess how much of an indentation - * is required. - * - * And on lines without stars on the left this may eat bullet points. - * - * Long story short: If you want the docstring read the contents. If you - * absolutely must have it without comments (ie renderValueShort) this will - * probably do. - * - * @return ?string Docstring with comments stripped - */ - public function getDocstringWithoutComments() - { - if (!$this->contents) { - return null; - } - - $string = \substr($this->contents, 3, -2); - $string = \preg_replace('/^\\s*\\*\\s*?(\\S|$)/m', '\\1', $string); - - return \trim($string); - } -} diff --git a/system4.4.6/ThirdParty/Kint/Zval/Representation/MicrotimeRepresentation.php b/system4.4.6/ThirdParty/Kint/Zval/Representation/MicrotimeRepresentation.php deleted file mode 100644 index 027b0ce2..00000000 --- a/system4.4.6/ThirdParty/Kint/Zval/Representation/MicrotimeRepresentation.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Zval\Representation; - -use DateTime; - -class MicrotimeRepresentation extends Representation -{ - public $seconds; - public $microseconds; - public $group; - public $lap; - public $total; - public $avg; - public $i = 0; - public $mem = 0; - public $mem_real = 0; - public $mem_peak = 0; - public $mem_peak_real = 0; - public $hints = ['microtime']; - - public function __construct(int $seconds, int $microseconds, int $group, float $lap = null, float $total = null, int $i = 0) - { - parent::__construct('Microtime'); - - $this->seconds = $seconds; - $this->microseconds = $microseconds; - - $this->group = $group; - $this->lap = $lap; - $this->total = $total; - $this->i = $i; - - if ($i) { - $this->avg = $total / $i; - } - - $this->mem = \memory_get_usage(); - $this->mem_real = \memory_get_usage(true); - $this->mem_peak = \memory_get_peak_usage(); - $this->mem_peak_real = \memory_get_peak_usage(true); - } - - public function getDateTime(): ?DateTime - { - return DateTime::createFromFormat('U u', $this->seconds.' '.\str_pad((string) $this->microseconds, 6, '0', STR_PAD_LEFT)) ?: null; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Zval/Representation/Representation.php b/system4.4.6/ThirdParty/Kint/Zval/Representation/Representation.php deleted file mode 100644 index 76d695b8..00000000 --- a/system4.4.6/ThirdParty/Kint/Zval/Representation/Representation.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Zval\Representation; - -class Representation -{ - public $label; - public $implicit_label = false; - public $hints = []; - public $contents = []; - - protected $name; - - public function __construct(string $label, string $name = null) - { - $this->label = $label; - - if (null === $name) { - $name = $label; - } - - $this->setName($name); - } - - public function getLabel(): string - { - if (\is_array($this->contents) && \count($this->contents) > 1) { - return $this->label.' ('.\count($this->contents).')'; - } - - return $this->label; - } - - public function getName(): string - { - return $this->name; - } - - public function setName(string $name): void - { - $this->name = \preg_replace('/[^a-z0-9]+/', '_', \strtolower($name)); - } - - public function labelIsImplicit(): bool - { - return $this->implicit_label; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Zval/Representation/SourceRepresentation.php b/system4.4.6/ThirdParty/Kint/Zval/Representation/SourceRepresentation.php deleted file mode 100644 index 2fefc582..00000000 --- a/system4.4.6/ThirdParty/Kint/Zval/Representation/SourceRepresentation.php +++ /dev/null @@ -1,72 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Zval\Representation; - -class SourceRepresentation extends Representation -{ - public $hints = ['source']; - public $source = []; - public $filename; - public $line = 0; - public $showfilename = false; - - public function __construct(string $filename, int $line, int $padding = 7) - { - parent::__construct('Source'); - - $this->filename = $filename; - $this->line = $line; - - $start_line = \max($line - $padding, 1); - $length = $line + $padding + 1 - $start_line; - $this->source = self::getSource($filename, $start_line, $length); - if (null !== $this->source) { - $this->contents = \implode("\n", $this->source); - } - } - - /** - * Gets section of source code. - * - * @param string $filename Full path to file - * @param int $start_line The first line to display (1 based) - * @param null|int $length Amount of lines to show - */ - public static function getSource(string $filename, int $start_line = 1, int $length = null): ?array - { - if (!$filename || !\file_exists($filename) || !\is_readable($filename)) { - return null; - } - - $source = \preg_split("/\r\n|\n|\r/", \file_get_contents($filename)); - $source = \array_combine(\range(1, \count($source)), $source); - $source = \array_slice($source, $start_line - 1, $length, true); - - return $source; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Zval/Representation/SplFileInfoRepresentation.php b/system4.4.6/ThirdParty/Kint/Zval/Representation/SplFileInfoRepresentation.php deleted file mode 100644 index 6424ee6a..00000000 --- a/system4.4.6/ThirdParty/Kint/Zval/Representation/SplFileInfoRepresentation.php +++ /dev/null @@ -1,196 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Zval\Representation; - -use Kint\Utils; -use RuntimeException; -use SplFileInfo; - -class SplFileInfoRepresentation extends Representation -{ - public $perms = null; - public $flags; - public $path; - public $realpath = null; - public $linktarget = null; - public $size = null; - public $is_dir = false; - public $is_file = false; - public $is_link = false; - public $owner = null; - public $group = null; - public $ctime = null; - public $mtime = null; - public $typename = 'Unknown file'; - public $typeflag = '-'; - public $hints = ['fspath']; - - public function __construct(SplFileInfo $fileInfo) - { - parent::__construct('SplFileInfo'); - - $this->path = $fileInfo->getPathname(); - - try { - if (\strlen($this->path) && $fileInfo->getRealPath()) { - $this->perms = $fileInfo->getPerms(); - $this->size = $fileInfo->getSize(); - $this->owner = $fileInfo->getOwner(); - $this->group = $fileInfo->getGroup(); - $this->ctime = $fileInfo->getCTime(); - $this->mtime = $fileInfo->getMTime(); - $this->realpath = $fileInfo->getRealPath(); - } - - $this->is_dir = $fileInfo->isDir(); - $this->is_file = $fileInfo->isFile(); - $this->is_link = $fileInfo->isLink(); - - if ($this->is_link) { - $this->linktarget = $fileInfo->getLinkTarget(); - } - } catch (RuntimeException $e) { - if (false === \strpos($e->getMessage(), ' open_basedir ')) { - throw $e; - } - } - - switch ($this->perms & 0xF000) { - case 0xC000: - $this->typename = 'Socket'; - $this->typeflag = 's'; - break; - case 0x6000: - $this->typename = 'Block device'; - $this->typeflag = 'b'; - break; - case 0x2000: - $this->typename = 'Character device'; - $this->typeflag = 'c'; - break; - case 0x1000: - $this->typename = 'Named pipe'; - $this->typeflag = 'p'; - break; - default: - if ($this->is_file) { - if ($this->is_link) { - $this->typename = 'File symlink'; - $this->typeflag = 'l'; - } else { - $this->typename = 'File'; - $this->typeflag = '-'; - } - } elseif ($this->is_dir) { - if ($this->is_link) { - $this->typename = 'Directory symlink'; - $this->typeflag = 'l'; - } else { - $this->typename = 'Directory'; - $this->typeflag = 'd'; - } - } - break; - } - - $this->flags = [$this->typeflag]; - - // User - $this->flags[] = (($this->perms & 0400) ? 'r' : '-'); - $this->flags[] = (($this->perms & 0200) ? 'w' : '-'); - if ($this->perms & 0100) { - $this->flags[] = ($this->perms & 04000) ? 's' : 'x'; - } else { - $this->flags[] = ($this->perms & 04000) ? 'S' : '-'; - } - - // Group - $this->flags[] = (($this->perms & 0040) ? 'r' : '-'); - $this->flags[] = (($this->perms & 0020) ? 'w' : '-'); - if ($this->perms & 0010) { - $this->flags[] = ($this->perms & 02000) ? 's' : 'x'; - } else { - $this->flags[] = ($this->perms & 02000) ? 'S' : '-'; - } - - // Other - $this->flags[] = (($this->perms & 0004) ? 'r' : '-'); - $this->flags[] = (($this->perms & 0002) ? 'w' : '-'); - if ($this->perms & 0001) { - $this->flags[] = ($this->perms & 01000) ? 's' : 'x'; - } else { - $this->flags[] = ($this->perms & 01000) ? 'S' : '-'; - } - - $this->contents = \implode($this->flags).' '.$this->owner.' '.$this->group; - $this->contents .= ' '.$this->getSize().' '.$this->getMTime().' '; - - if ($this->is_link && $this->linktarget) { - $this->contents .= $this->path.' -> '.$this->linktarget; - } elseif (null !== $this->realpath && \strlen($this->realpath) < \strlen($this->path)) { - $this->contents .= $this->realpath; - } else { - $this->contents .= $this->path; - } - } - - public function getLabel(): string - { - if ($size = $this->getSize()) { - return $this->typename.' ('.$size.')'; - } - - return $this->typename; - } - - public function getSize(): ?string - { - if ($this->size) { - $size = Utils::getHumanReadableBytes($this->size); - - return \round($size['value'], 2).$size['unit']; - } - - return null; - } - - public function getMTime(): ?string - { - if (null !== $this->mtime) { - $year = \date('Y', $this->mtime); - - if ($year !== \date('Y')) { - return \date('M d Y', $this->mtime); - } - - return \date('M d H:i', $this->mtime); - } - - return null; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Zval/ResourceValue.php b/system4.4.6/ThirdParty/Kint/Zval/ResourceValue.php deleted file mode 100644 index e50266ac..00000000 --- a/system4.4.6/ThirdParty/Kint/Zval/ResourceValue.php +++ /dev/null @@ -1,51 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Zval; - -class ResourceValue extends Value -{ - public $resource_type; - - public function getType(): string - { - if ($this->resource_type) { - return $this->resource_type.' resource'; - } - - return 'resource'; - } - - public function transplant(Value $old): void - { - parent::transplant($old); - - if ($old instanceof self) { - $this->resource_type = $old->resource_type; - } - } -} diff --git a/system4.4.6/ThirdParty/Kint/Zval/SimpleXMLElementValue.php b/system4.4.6/ThirdParty/Kint/Zval/SimpleXMLElementValue.php deleted file mode 100644 index 0f152230..00000000 --- a/system4.4.6/ThirdParty/Kint/Zval/SimpleXMLElementValue.php +++ /dev/null @@ -1,54 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Zval; - -class SimpleXMLElementValue extends InstanceValue -{ - public $hints = ['object', 'simplexml_element']; - - protected $is_string_value = false; - - public function isStringValue(): bool - { - return $this->is_string_value; - } - - public function setIsStringValue(bool $is_string_value): void - { - $this->is_string_value = $is_string_value; - } - - public function getValueShort(): ?string - { - if ($this->is_string_value && ($rep = $this->value) && 'contents' === $rep->getName() && 'string' === \gettype($rep->contents)) { - return '"'.$rep->contents.'"'; - } - - return null; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Zval/StreamValue.php b/system4.4.6/ThirdParty/Kint/Zval/StreamValue.php deleted file mode 100644 index 01cd0487..00000000 --- a/system4.4.6/ThirdParty/Kint/Zval/StreamValue.php +++ /dev/null @@ -1,56 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Zval; - -use Kint\Kint; - -class StreamValue extends ResourceValue -{ - public $stream_meta; - - public function __construct(array $meta = null) - { - parent::__construct(); - $this->stream_meta = $meta; - } - - public function getValueShort(): ?string - { - if (empty($this->stream_meta['uri'])) { - return null; - } - - $uri = $this->stream_meta['uri']; - - if (\stream_is_local($uri)) { - return Kint::shortenPath($uri); - } - - return $uri; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Zval/ThrowableValue.php b/system4.4.6/ThirdParty/Kint/Zval/ThrowableValue.php deleted file mode 100644 index f6fcb51c..00000000 --- a/system4.4.6/ThirdParty/Kint/Zval/ThrowableValue.php +++ /dev/null @@ -1,52 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Zval; - -use Throwable; - -class ThrowableValue extends InstanceValue -{ - public $message; - public $hints = ['object', 'throwable']; - - public function __construct(Throwable $throw) - { - parent::__construct(); - - $this->message = $throw->getMessage(); - } - - public function getValueShort(): ?string - { - if (\strlen($this->message)) { - return '"'.$this->message.'"'; - } - - return null; - } -} diff --git a/system4.4.6/ThirdParty/Kint/Zval/TraceFrameValue.php b/system4.4.6/ThirdParty/Kint/Zval/TraceFrameValue.php deleted file mode 100644 index bee073bb..00000000 --- a/system4.4.6/ThirdParty/Kint/Zval/TraceFrameValue.php +++ /dev/null @@ -1,107 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Zval; - -use InvalidArgumentException; -use Kint\Zval\Representation\Representation; -use Kint\Zval\Representation\SourceRepresentation; -use ReflectionFunction; -use ReflectionMethod; - -class TraceFrameValue extends Value -{ - public $trace; - public $hints = ['trace_frame']; - - public function __construct(Value $base, array $raw_frame) - { - parent::__construct(); - - $this->transplant($base); - - if (!isset($this->value)) { - throw new InvalidArgumentException('Tried to create TraceFrameValue from Value with no value representation'); - } - - $this->trace = [ - 'function' => $raw_frame['function'], - 'line' => $raw_frame['line'] ?? null, - 'file' => $raw_frame['file'] ?? null, - 'class' => $raw_frame['class'] ?? null, - 'type' => $raw_frame['type'] ?? null, - 'object' => null, - 'args' => null, - ]; - - if ($this->trace['class'] && \method_exists($this->trace['class'], $this->trace['function'])) { - $func = new ReflectionMethod($this->trace['class'], $this->trace['function']); - $this->trace['function'] = new MethodValue($func); - } elseif (!$this->trace['class'] && \function_exists($this->trace['function'])) { - $func = new ReflectionFunction($this->trace['function']); - $this->trace['function'] = new MethodValue($func); - } - - foreach ($this->value->contents as $frame_prop) { - if ('object' === $frame_prop->name) { - $this->trace['object'] = $frame_prop; - $this->trace['object']->name = null; - $this->trace['object']->operator = Value::OPERATOR_NONE; - } - if ('args' === $frame_prop->name) { - $this->trace['args'] = $frame_prop->value->contents; - - if ($this->trace['function'] instanceof MethodValue) { - foreach (\array_values($this->trace['function']->parameters) as $param) { - if (isset($this->trace['args'][$param->position])) { - $this->trace['args'][$param->position]->name = $param->getName(); - } - } - } - } - } - - $this->clearRepresentations(); - - if (isset($this->trace['file'], $this->trace['line']) && \is_readable($this->trace['file'])) { - $this->addRepresentation(new SourceRepresentation($this->trace['file'], $this->trace['line'])); - } - - if ($this->trace['args']) { - $args = new Representation('Arguments'); - $args->contents = $this->trace['args']; - $this->addRepresentation($args); - } - - if ($this->trace['object']) { - $callee = new Representation('object'); - $callee->label = 'Callee object ['.$this->trace['object']->classname.']'; - $callee->contents[] = $this->trace['object']; - $this->addRepresentation($callee); - } - } -} diff --git a/system4.4.6/ThirdParty/Kint/Zval/TraceValue.php b/system4.4.6/ThirdParty/Kint/Zval/TraceValue.php deleted file mode 100644 index 0136b891..00000000 --- a/system4.4.6/ThirdParty/Kint/Zval/TraceValue.php +++ /dev/null @@ -1,47 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Zval; - -class TraceValue extends Value -{ - public $hints = ['trace']; - - public function getType(): string - { - return 'Debug Backtrace'; - } - - public function getSize(): ?string - { - if (!$this->size) { - return 'empty'; - } - - return parent::getSize(); - } -} diff --git a/system4.4.6/ThirdParty/Kint/Zval/Value.php b/system4.4.6/ThirdParty/Kint/Zval/Value.php deleted file mode 100644 index 01a206d4..00000000 --- a/system4.4.6/ThirdParty/Kint/Zval/Value.php +++ /dev/null @@ -1,266 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -namespace Kint\Zval; - -use Kint\Zval\Representation\Representation; - -class Value -{ - public const ACCESS_NONE = null; - public const ACCESS_PUBLIC = 1; - public const ACCESS_PROTECTED = 2; - public const ACCESS_PRIVATE = 3; - - public const OPERATOR_NONE = null; - public const OPERATOR_ARRAY = 1; - public const OPERATOR_OBJECT = 2; - public const OPERATOR_STATIC = 3; - - public $name; - public $type; - public $readonly = false; - public $static = false; - public $const = false; - public $access = self::ACCESS_NONE; - public $owner_class = null; - public $access_path; - public $operator = self::OPERATOR_NONE; - public $reference = false; - public $depth = 0; - public $size; - public $hints = []; - public $value; - - protected $representations = []; - - public function __construct() - { - } - - public function addRepresentation(Representation $rep, int $pos = null): bool - { - if (isset($this->representations[$rep->getName()])) { - return false; - } - - if (null === $pos) { - $this->representations[$rep->getName()] = $rep; - } else { - $this->representations = \array_merge( - \array_slice($this->representations, 0, $pos), - [$rep->getName() => $rep], - \array_slice($this->representations, $pos) - ); - } - - return true; - } - - public function replaceRepresentation(Representation $rep, int $pos = null): void - { - if (null === $pos) { - $this->representations[$rep->getName()] = $rep; - } else { - $this->removeRepresentation($rep); - $this->addRepresentation($rep, $pos); - } - } - - /** - * @param Representation|string $rep - */ - public function removeRepresentation($rep): void - { - if ($rep instanceof Representation) { - unset($this->representations[$rep->getName()]); - } else { // String - unset($this->representations[$rep]); - } - } - - public function getRepresentation(string $name): ?Representation - { - return $this->representations[$name] ?? null; - } - - public function getRepresentations(): array - { - return $this->representations; - } - - public function clearRepresentations(): void - { - $this->representations = []; - } - - public function getType(): ?string - { - return $this->type; - } - - public function getModifiers(): ?string - { - $out = $this->getAccess(); - - if ($this->readonly) { - $out .= ' readonly'; - } - - if ($this->const) { - $out .= ' const'; - } - - if ($this->static) { - $out .= ' static'; - } - - if (null !== $out && \strlen($out)) { - return \ltrim($out); - } - - return null; - } - - public function getAccess(): ?string - { - switch ($this->access) { - case self::ACCESS_PRIVATE: - return 'private'; - case self::ACCESS_PROTECTED: - return 'protected'; - case self::ACCESS_PUBLIC: - return 'public'; - } - - return null; - } - - public function getName(): ?string - { - if (isset($this->name)) { - return (string) $this->name; - } - - return null; - } - - public function getOperator(): ?string - { - switch ($this->operator) { - case self::OPERATOR_ARRAY: - return '=>'; - case self::OPERATOR_OBJECT: - return '->'; - case self::OPERATOR_STATIC: - return '::'; - } - - return null; - } - - public function getSize(): ?string - { - if (isset($this->size)) { - return (string) $this->size; - } - - return null; - } - - public function getValueShort(): ?string - { - if ($rep = $this->value) { - if ('boolean' === $this->type) { - return $rep->contents ? 'true' : 'false'; - } - - if ('integer' === $this->type || 'double' === $this->type) { - return (string) $rep->contents; - } - } - - return null; - } - - public function getAccessPath(): ?string - { - return $this->access_path; - } - - public function transplant(self $old): void - { - $this->name = $old->name; - $this->size = $old->size; - $this->access_path = $old->access_path; - $this->access = $old->access; - $this->readonly = $old->readonly; - $this->static = $old->static; - $this->const = $old->const; - $this->type = $old->type; - $this->depth = $old->depth; - $this->owner_class = $old->owner_class; - $this->operator = $old->operator; - $this->reference = $old->reference; - $this->value = $old->value; - $this->representations += $old->representations; - $this->hints = \array_merge($this->hints, $old->hints); - } - - /** - * Creates a new basic object with a name and access path. - */ - public static function blank(string $name = null, string $access_path = null): self - { - $o = new self(); - $o->name = $name; - $o->access_path = $access_path; - - return $o; - } - - public static function sortByAccess(self $a, self $b): int - { - static $sorts = [ - self::ACCESS_PUBLIC => 1, - self::ACCESS_PROTECTED => 2, - self::ACCESS_PRIVATE => 3, - self::ACCESS_NONE => 4, - ]; - - return $sorts[$a->access] - $sorts[$b->access]; - } - - public static function sortByName(self $a, self $b): int - { - if ((string) $a->name === (string) $b->name) { - return (int) \is_int($b->name) - (int) \is_int($a->name); - } - - return \strnatcasecmp((string) $a->name, (string) $b->name); - } -} diff --git a/system4.4.6/ThirdParty/Kint/init.php b/system4.4.6/ThirdParty/Kint/init.php deleted file mode 100644 index 039489ab..00000000 --- a/system4.4.6/ThirdParty/Kint/init.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -use Kint\Kint; -use Kint\Utils; - -if (\defined('KINT_DIR')) { - return; -} - -if (\version_compare(PHP_VERSION, '7.1') < 0) { - throw new Exception('Kint 5 requires PHP 7.1 or higher'); -} - -\define('KINT_DIR', __DIR__); -\define('KINT_WIN', DIRECTORY_SEPARATOR !== '/'); -\define('KINT_PHP72', \version_compare(PHP_VERSION, '7.2') >= 0); -\define('KINT_PHP73', \version_compare(PHP_VERSION, '7.3') >= 0); -\define('KINT_PHP74', \version_compare(PHP_VERSION, '7.4') >= 0); -\define('KINT_PHP80', \version_compare(PHP_VERSION, '8.0') >= 0); -\define('KINT_PHP81', \version_compare(PHP_VERSION, '8.1') >= 0); -\define('KINT_PHP82', \version_compare(PHP_VERSION, '8.2') >= 0); -\define('KINT_PHP83', \version_compare(PHP_VERSION, '8.3') >= 0); -\define('KINT_PHP84', \version_compare(PHP_VERSION, '8.4') >= 0); - -// Dynamic default settings -if (false !== \ini_get('xdebug.file_link_format')) { - Kint::$file_link_format = \ini_get('xdebug.file_link_format'); -} -if (isset($_SERVER['DOCUMENT_ROOT'])) { - Kint::$app_root_dirs = [ - $_SERVER['DOCUMENT_ROOT'] => '<ROOT>', - ]; - - // Suppressed for unreadable document roots (related to open_basedir) - if (false !== @\realpath($_SERVER['DOCUMENT_ROOT'])) { - Kint::$app_root_dirs[\realpath($_SERVER['DOCUMENT_ROOT'])] = '<ROOT>'; - } -} - -Utils::composerSkipFlags(); - -if ((!\defined('KINT_SKIP_FACADE') || !KINT_SKIP_FACADE) && !\class_exists('Kint')) { - \class_alias(Kint::class, 'Kint'); -} - -if (!\defined('KINT_SKIP_HELPERS') || !KINT_SKIP_HELPERS) { - require_once __DIR__.'/init_helpers.php'; -} diff --git a/system4.4.6/ThirdParty/Kint/init_helpers.php b/system4.4.6/ThirdParty/Kint/init_helpers.php deleted file mode 100644 index b4d5f4d9..00000000 --- a/system4.4.6/ThirdParty/Kint/init_helpers.php +++ /dev/null @@ -1,88 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * The MIT License (MIT) - * - * Copyright (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -use Kint\Kint; -use Kint\Renderer\CliRenderer; - -if (!\function_exists('d')) { - /** - * Alias of Kint::dump(). - * - * @psalm-param mixed ...$args - * - * @return int|string - */ - function d(...$args) - { - return Kint::dump(...$args); - } - - Kint::$aliases[] = 'd'; -} - -if (!\function_exists('s')) { - /** - * Alias of Kint::dump(), however the output is in plain text. - * - * Alias of Kint::dump(), however the output is in plain htmlescaped text - * with some minor visibility enhancements added. - * - * If run in CLI colors are disabled - * - * @psalm-param mixed ...$args - * - * @return int|string - */ - function s(...$args) - { - if (false === Kint::$enabled_mode) { - return 0; - } - - $kstash = Kint::$enabled_mode; - $cstash = CliRenderer::$cli_colors; - - if (Kint::MODE_TEXT !== Kint::$enabled_mode) { - Kint::$enabled_mode = Kint::MODE_PLAIN; - - if (PHP_SAPI === 'cli' && true === Kint::$cli_detection) { - Kint::$enabled_mode = Kint::$mode_default_cli; - } - } - - CliRenderer::$cli_colors = false; - - $out = Kint::dump(...$args); - - Kint::$enabled_mode = $kstash; - CliRenderer::$cli_colors = $cstash; - - return $out; - } - - Kint::$aliases[] = 's'; -} diff --git a/system4.4.6/ThirdParty/Kint/resources/compiled/aante-dark.css b/system4.4.6/ThirdParty/Kint/resources/compiled/aante-dark.css deleted file mode 100644 index 6aa8b702..00000000 --- a/system4.4.6/ThirdParty/Kint/resources/compiled/aante-dark.css +++ /dev/null @@ -1 +0,0 @@ -.kint-rich{font-size:13px;overflow-x:auto;white-space:nowrap;background:rgba(0,0,0,.9)}.kint-rich.kint-folder{position:fixed;bottom:0;left:0;right:0;z-index:999999;width:100%;margin:0;display:block}.kint-rich.kint-folder dd.kint-foldout{max-height:calc(100vh - 100px);padding-right:8px;overflow-y:scroll;display:none}.kint-rich.kint-folder dd.kint-foldout.kint-show{display:block}.kint-rich::selection,.kint-rich::-moz-selection,.kint-rich::-webkit-selection{background:#555;color:#e2e1e1}.kint-rich .kint-focused{box-shadow:0 0 3px 2px aqua}.kint-rich,.kint-rich::before,.kint-rich::after,.kint-rich *,.kint-rich *::before,.kint-rich *::after{box-sizing:border-box;border-radius:0;color:#e2e1e1;float:none !important;font-family:Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif;line-height:15px;margin:0;padding:0;text-align:left}.kint-rich{margin:8px 0}.kint-rich dt,.kint-rich dl{width:auto}.kint-rich dt,.kint-rich div.access-path{background:#070707;border:1px solid #282828;color:#e2e1e1;display:block;font-weight:bold;list-style:none outside none;overflow:auto;padding:4px}.kint-rich dt:hover,.kint-rich div.access-path:hover{border-color:#555}.kint-rich>dl dl{padding:0 0 0 12px}.kint-rich dt.kint-parent>nav,.kint-rich>footer>nav{background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMCAxNTAiPjxwYXRoIGQ9Ik02IDdoMThsLTkgMTV6bTAgMzBoMThsLTkgMTV6bTAgNDVoMThsLTktMTV6bTAgMzBoMThsLTktMTV6bTAgMTJsMTggMThtLTE4IDBsMTgtMTgiIGZpbGw9IiNBQUEiLz48cGF0aCBkPSJNNiAxMjZsMTggMThtLTE4IDBsMTgtMTgiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSIjQUFBIi8+PC9zdmc+") no-repeat scroll 0 0/15px 75px rgba(0,0,0,0);cursor:pointer;display:inline-block;height:15px;width:15px;margin-right:3px;vertical-align:middle}.kint-rich dt.kint-parent:hover>nav,.kint-rich>footer>nav:hover{background-position:0 25%}.kint-rich dt.kint-parent.kint-show>nav,.kint-rich>footer.kint-show>nav{background-position:0 50%}.kint-rich dt.kint-parent.kint-show:hover>nav,.kint-rich>footer.kint-show>nav:hover{background-position:0 75%}.kint-rich dt.kint-parent.kint-locked>nav{background-position:0 100%}.kint-rich dt.kint-parent+dd{display:none;border-left:1px dashed #282828}.kint-rich dt.kint-parent.kint-show+dd{display:block}.kint-rich var,.kint-rich var a{color:#f90;font-style:normal}.kint-rich dt:hover var,.kint-rich dt:hover var a{color:aqua}.kint-rich dfn{font-style:normal;font-family:monospace;color:#e2e1e1}.kint-rich pre{color:#e2e1e1;margin:0 0 0 12px;padding:5px;overflow-y:hidden;border-top:0;border:1px solid #282828;background:#070707;display:block;word-break:normal}.kint-rich .kint-popup-trigger,.kint-rich .kint-access-path-trigger,.kint-rich .kint-search-trigger{background:rgba(226,225,225,.8);border-radius:3px;height:16px;font-size:16px;margin-left:5px;font-weight:bold;width:16px;text-align:center;float:right !important;cursor:pointer;color:#070707;position:relative;overflow:hidden;line-height:17.6px}.kint-rich .kint-popup-trigger:hover,.kint-rich .kint-access-path-trigger:hover,.kint-rich .kint-search-trigger:hover{color:#e2e1e1;background:#070707}.kint-rich dt.kint-parent>.kint-popup-trigger{line-height:19.2px}.kint-rich .kint-search-trigger{font-size:20px}.kint-rich input.kint-search{display:none;border:1px solid #282828;border-top-width:0;border-bottom-width:0;padding:4px;float:right !important;margin:-4px 0;color:#e2e1e1;background:#070707;height:24px;width:160px;position:relative;z-index:100}.kint-rich input.kint-search.kint-show{display:block}.kint-rich .kint-search-root ul.kint-tabs>li:not(.kint-search-match){background:#070707;opacity:.5}.kint-rich .kint-search-root dl:not(.kint-search-match){opacity:.5}.kint-rich .kint-search-root dl:not(.kint-search-match)>dt{background:#070707}.kint-rich .kint-search-root dl:not(.kint-search-match) dl,.kint-rich .kint-search-root dl:not(.kint-search-match) ul.kint-tabs>li:not(.kint-search-match){opacity:1}.kint-rich div.access-path{background:#070707;display:none;margin-top:5px;padding:4px;white-space:pre}.kint-rich div.access-path.kint-show{display:block}.kint-rich footer{padding:0 3px 3px;font-size:9px;background:rgba(0,0,0,0)}.kint-rich footer>.kint-popup-trigger{background:rgba(0,0,0,0);color:#e2e1e1}.kint-rich footer nav{height:10px;width:10px;background-size:10px 50px}.kint-rich footer>ol{display:none;margin-left:32px}.kint-rich footer.kint-show>ol{display:block}.kint-rich a{color:#e2e1e1;text-shadow:none;text-decoration:underline}.kint-rich a:hover{color:#e2e1e1;border-bottom:1px dotted #e2e1e1}.kint-rich ul{list-style:none;padding-left:12px}.kint-rich ul:not(.kint-tabs) li{border-left:1px dashed #282828}.kint-rich ul:not(.kint-tabs) li>dl{border-left:none}.kint-rich ul.kint-tabs{margin:0 0 0 12px;padding-left:0;background:#070707;border:1px solid #282828;border-top:0}.kint-rich ul.kint-tabs>li{background:#070707;border:1px solid #282828;cursor:pointer;display:inline-block;height:24px;margin:2px;padding:0 12px;vertical-align:top}.kint-rich ul.kint-tabs>li:hover,.kint-rich ul.kint-tabs>li.kint-active-tab:hover{border-color:#555;color:aqua}.kint-rich ul.kint-tabs>li.kint-active-tab{background:#070707;border-top:0;margin-top:-1px;height:27px;line-height:24px}.kint-rich ul.kint-tabs>li:not(.kint-active-tab){line-height:20px}.kint-rich ul.kint-tabs li+li{margin-left:0}.kint-rich ul.kint-tab-contents>li{display:none}.kint-rich ul.kint-tab-contents>li.kint-show{display:block}.kint-rich dt:hover+dd>ul>li.kint-active-tab{border-color:#555;color:aqua}.kint-rich dt>.kint-color-preview{width:16px;height:16px;display:inline-block;vertical-align:middle;margin-left:10px;border:1px solid #282828;background-color:#ccc;background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2"><path fill="%23FFF" d="M0 0h1v2h1V1H0z"/></svg>');background-size:100%}.kint-rich dt>.kint-color-preview:hover{border-color:#555}.kint-rich dt>.kint-color-preview>div{width:100%;height:100%}.kint-rich table{border-collapse:collapse;empty-cells:show;border-spacing:0}.kint-rich table *{font-size:12px}.kint-rich table dt{background:none;padding:2px}.kint-rich table dt .kint-parent{min-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kint-rich table td,.kint-rich table th{border:1px solid #282828;padding:2px;vertical-align:center}.kint-rich table th{cursor:alias}.kint-rich table td:first-child,.kint-rich table th{font-weight:bold;background:#070707;color:#e2e1e1}.kint-rich table td{background:#070707;white-space:pre}.kint-rich table td>dl{padding:0}.kint-rich table pre{border-top:0;border-right:0}.kint-rich table thead th:first-child{background:none;border:0}.kint-rich table tr:hover>td{box-shadow:0 0 1px 0 #555 inset}.kint-rich table tr:hover var{color:aqua}.kint-rich table ul.kint-tabs li.kint-active-tab{height:20px;line-height:17px}.kint-rich pre.kint-source{margin-left:-1px}.kint-rich pre.kint-source[data-kint-filename]:before{display:block;content:attr(data-kint-filename);margin-bottom:4px;padding-bottom:4px;border-bottom:1px solid #070707}.kint-rich pre.kint-source>div:before{display:inline-block;content:counter(kint-l);counter-increment:kint-l;border-right:1px solid #555;padding-right:8px;margin-right:8px}.kint-rich pre.kint-source>div.kint-highlight{background:#070707}.kint-rich .kint-microtime-lap{text-shadow:-1px 0 #555,0 1px #555,1px 0 #555,0 -1px #555;color:#070707;font-weight:bold}input.kint-note-input{width:100%}.kint-rich .kint-focused{box-shadow:0 0 3px 2px aqua}.kint-rich dt{font-weight:normal}.kint-rich dt.kint-parent{margin-top:4px}.kint-rich dl dl{margin-top:4px;padding-left:25px;border-left:none}.kint-rich>dl>dt{background:#070707}.kint-rich ul{margin:0;padding-left:0}.kint-rich ul:not(.kint-tabs)>li{border-left:0}.kint-rich ul.kint-tabs{background:#070707;border:1px solid #282828;border-width:0 1px 1px 1px;padding:4px 0 0 12px;margin-left:-1px;margin-top:-1px}.kint-rich ul.kint-tabs li,.kint-rich ul.kint-tabs li+li{margin:0 0 0 4px}.kint-rich ul.kint-tabs li{border-bottom-width:0;height:25px}.kint-rich ul.kint-tabs li:first-child{margin-left:0}.kint-rich ul.kint-tabs li.kint-active-tab{border-top:1px solid #282828;background:#000;font-weight:bold;padding-top:0;border-bottom:1px solid #000 !important;margin-bottom:-1px}.kint-rich ul.kint-tabs li.kint-active-tab:hover{border-bottom:1px solid #000}.kint-rich ul>li>pre{border:1px solid #282828}.kint-rich dt:hover+dd>ul{border-color:#555}.kint-rich pre{background:#000;margin-top:4px;margin-left:25px}.kint-rich .kint-source{margin-left:-1px}.kint-rich .kint-source .kint-highlight{background:#303}.kint-rich .kint-parent.kint-show>.kint-search{border-bottom-width:1px}.kint-rich table td{background:#000}.kint-rich table td>dl{padding:0;margin:0}.kint-rich table td>dl>dt.kint-parent{margin:0}.kint-rich table td:first-child,.kint-rich table td,.kint-rich table th{padding:2px 4px}.kint-rich table dd,.kint-rich table dt{background:#000}.kint-rich table tr:hover>td{box-shadow:none;background:#303} diff --git a/system4.4.6/ThirdParty/Kint/resources/compiled/aante-light.css b/system4.4.6/ThirdParty/Kint/resources/compiled/aante-light.css deleted file mode 100644 index 16194736..00000000 --- a/system4.4.6/ThirdParty/Kint/resources/compiled/aante-light.css +++ /dev/null @@ -1 +0,0 @@ -.kint-rich{font-size:13px;overflow-x:auto;white-space:nowrap;background:rgba(255,255,255,.9)}.kint-rich.kint-folder{position:fixed;bottom:0;left:0;right:0;z-index:999999;width:100%;margin:0;display:block}.kint-rich.kint-folder dd.kint-foldout{max-height:calc(100vh - 100px);padding-right:8px;overflow-y:scroll;display:none}.kint-rich.kint-folder dd.kint-foldout.kint-show{display:block}.kint-rich::selection,.kint-rich::-moz-selection,.kint-rich::-webkit-selection{background:#aaa;color:#1d1e1e}.kint-rich .kint-focused{box-shadow:0 0 3px 2px red}.kint-rich,.kint-rich::before,.kint-rich::after,.kint-rich *,.kint-rich *::before,.kint-rich *::after{box-sizing:border-box;border-radius:0;color:#1d1e1e;float:none !important;font-family:Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif;line-height:15px;margin:0;padding:0;text-align:left}.kint-rich{margin:8px 0}.kint-rich dt,.kint-rich dl{width:auto}.kint-rich dt,.kint-rich div.access-path{background:#f8f8f8;border:1px solid #d7d7d7;color:#1d1e1e;display:block;font-weight:bold;list-style:none outside none;overflow:auto;padding:4px}.kint-rich dt:hover,.kint-rich div.access-path:hover{border-color:#aaa}.kint-rich>dl dl{padding:0 0 0 12px}.kint-rich dt.kint-parent>nav,.kint-rich>footer>nav{background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMCAxNTAiPjxwYXRoIGQ9Ik02IDdoMThsLTkgMTV6bTAgMzBoMThsLTkgMTV6bTAgNDVoMThsLTktMTV6bTAgMzBoMThsLTktMTV6bTAgMTJsMTggMThtLTE4IDBsMTgtMTgiIGZpbGw9IiM1NTUiLz48cGF0aCBkPSJNNiAxMjZsMTggMThtLTE4IDBsMTgtMTgiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSIjNTU1Ii8+PC9zdmc+") no-repeat scroll 0 0/15px 75px rgba(0,0,0,0);cursor:pointer;display:inline-block;height:15px;width:15px;margin-right:3px;vertical-align:middle}.kint-rich dt.kint-parent:hover>nav,.kint-rich>footer>nav:hover{background-position:0 25%}.kint-rich dt.kint-parent.kint-show>nav,.kint-rich>footer.kint-show>nav{background-position:0 50%}.kint-rich dt.kint-parent.kint-show:hover>nav,.kint-rich>footer.kint-show>nav:hover{background-position:0 75%}.kint-rich dt.kint-parent.kint-locked>nav{background-position:0 100%}.kint-rich dt.kint-parent+dd{display:none;border-left:1px dashed #d7d7d7}.kint-rich dt.kint-parent.kint-show+dd{display:block}.kint-rich var,.kint-rich var a{color:#06f;font-style:normal}.kint-rich dt:hover var,.kint-rich dt:hover var a{color:red}.kint-rich dfn{font-style:normal;font-family:monospace;color:#1d1e1e}.kint-rich pre{color:#1d1e1e;margin:0 0 0 12px;padding:5px;overflow-y:hidden;border-top:0;border:1px solid #d7d7d7;background:#f8f8f8;display:block;word-break:normal}.kint-rich .kint-popup-trigger,.kint-rich .kint-access-path-trigger,.kint-rich .kint-search-trigger{background:rgba(29,30,30,.8);border-radius:3px;height:16px;font-size:16px;margin-left:5px;font-weight:bold;width:16px;text-align:center;float:right !important;cursor:pointer;color:#f8f8f8;position:relative;overflow:hidden;line-height:17.6px}.kint-rich .kint-popup-trigger:hover,.kint-rich .kint-access-path-trigger:hover,.kint-rich .kint-search-trigger:hover{color:#1d1e1e;background:#f8f8f8}.kint-rich dt.kint-parent>.kint-popup-trigger{line-height:19.2px}.kint-rich .kint-search-trigger{font-size:20px}.kint-rich input.kint-search{display:none;border:1px solid #d7d7d7;border-top-width:0;border-bottom-width:0;padding:4px;float:right !important;margin:-4px 0;color:#1d1e1e;background:#f8f8f8;height:24px;width:160px;position:relative;z-index:100}.kint-rich input.kint-search.kint-show{display:block}.kint-rich .kint-search-root ul.kint-tabs>li:not(.kint-search-match){background:#f8f8f8;opacity:.5}.kint-rich .kint-search-root dl:not(.kint-search-match){opacity:.5}.kint-rich .kint-search-root dl:not(.kint-search-match)>dt{background:#f8f8f8}.kint-rich .kint-search-root dl:not(.kint-search-match) dl,.kint-rich .kint-search-root dl:not(.kint-search-match) ul.kint-tabs>li:not(.kint-search-match){opacity:1}.kint-rich div.access-path{background:#f8f8f8;display:none;margin-top:5px;padding:4px;white-space:pre}.kint-rich div.access-path.kint-show{display:block}.kint-rich footer{padding:0 3px 3px;font-size:9px;background:rgba(0,0,0,0)}.kint-rich footer>.kint-popup-trigger{background:rgba(0,0,0,0);color:#1d1e1e}.kint-rich footer nav{height:10px;width:10px;background-size:10px 50px}.kint-rich footer>ol{display:none;margin-left:32px}.kint-rich footer.kint-show>ol{display:block}.kint-rich a{color:#1d1e1e;text-shadow:none;text-decoration:underline}.kint-rich a:hover{color:#1d1e1e;border-bottom:1px dotted #1d1e1e}.kint-rich ul{list-style:none;padding-left:12px}.kint-rich ul:not(.kint-tabs) li{border-left:1px dashed #d7d7d7}.kint-rich ul:not(.kint-tabs) li>dl{border-left:none}.kint-rich ul.kint-tabs{margin:0 0 0 12px;padding-left:0;background:#f8f8f8;border:1px solid #d7d7d7;border-top:0}.kint-rich ul.kint-tabs>li{background:#f8f8f8;border:1px solid #d7d7d7;cursor:pointer;display:inline-block;height:24px;margin:2px;padding:0 12px;vertical-align:top}.kint-rich ul.kint-tabs>li:hover,.kint-rich ul.kint-tabs>li.kint-active-tab:hover{border-color:#aaa;color:red}.kint-rich ul.kint-tabs>li.kint-active-tab{background:#f8f8f8;border-top:0;margin-top:-1px;height:27px;line-height:24px}.kint-rich ul.kint-tabs>li:not(.kint-active-tab){line-height:20px}.kint-rich ul.kint-tabs li+li{margin-left:0}.kint-rich ul.kint-tab-contents>li{display:none}.kint-rich ul.kint-tab-contents>li.kint-show{display:block}.kint-rich dt:hover+dd>ul>li.kint-active-tab{border-color:#aaa;color:red}.kint-rich dt>.kint-color-preview{width:16px;height:16px;display:inline-block;vertical-align:middle;margin-left:10px;border:1px solid #d7d7d7;background-color:#ccc;background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2"><path fill="%23FFF" d="M0 0h1v2h1V1H0z"/></svg>');background-size:100%}.kint-rich dt>.kint-color-preview:hover{border-color:#aaa}.kint-rich dt>.kint-color-preview>div{width:100%;height:100%}.kint-rich table{border-collapse:collapse;empty-cells:show;border-spacing:0}.kint-rich table *{font-size:12px}.kint-rich table dt{background:none;padding:2px}.kint-rich table dt .kint-parent{min-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kint-rich table td,.kint-rich table th{border:1px solid #d7d7d7;padding:2px;vertical-align:center}.kint-rich table th{cursor:alias}.kint-rich table td:first-child,.kint-rich table th{font-weight:bold;background:#f8f8f8;color:#1d1e1e}.kint-rich table td{background:#f8f8f8;white-space:pre}.kint-rich table td>dl{padding:0}.kint-rich table pre{border-top:0;border-right:0}.kint-rich table thead th:first-child{background:none;border:0}.kint-rich table tr:hover>td{box-shadow:0 0 1px 0 #aaa inset}.kint-rich table tr:hover var{color:red}.kint-rich table ul.kint-tabs li.kint-active-tab{height:20px;line-height:17px}.kint-rich pre.kint-source{margin-left:-1px}.kint-rich pre.kint-source[data-kint-filename]:before{display:block;content:attr(data-kint-filename);margin-bottom:4px;padding-bottom:4px;border-bottom:1px solid #f8f8f8}.kint-rich pre.kint-source>div:before{display:inline-block;content:counter(kint-l);counter-increment:kint-l;border-right:1px solid #aaa;padding-right:8px;margin-right:8px}.kint-rich pre.kint-source>div.kint-highlight{background:#f8f8f8}.kint-rich .kint-microtime-lap{text-shadow:-1px 0 #aaa,0 1px #aaa,1px 0 #aaa,0 -1px #aaa;color:#f8f8f8;font-weight:bold}input.kint-note-input{width:100%}.kint-rich .kint-focused{box-shadow:0 0 3px 2px red}.kint-rich dt{font-weight:normal}.kint-rich dt.kint-parent{margin-top:4px}.kint-rich dl dl{margin-top:4px;padding-left:25px;border-left:none}.kint-rich>dl>dt{background:#f8f8f8}.kint-rich ul{margin:0;padding-left:0}.kint-rich ul:not(.kint-tabs)>li{border-left:0}.kint-rich ul.kint-tabs{background:#f8f8f8;border:1px solid #d7d7d7;border-width:0 1px 1px 1px;padding:4px 0 0 12px;margin-left:-1px;margin-top:-1px}.kint-rich ul.kint-tabs li,.kint-rich ul.kint-tabs li+li{margin:0 0 0 4px}.kint-rich ul.kint-tabs li{border-bottom-width:0;height:25px}.kint-rich ul.kint-tabs li:first-child{margin-left:0}.kint-rich ul.kint-tabs li.kint-active-tab{border-top:1px solid #d7d7d7;background:#fff;font-weight:bold;padding-top:0;border-bottom:1px solid #fff !important;margin-bottom:-1px}.kint-rich ul.kint-tabs li.kint-active-tab:hover{border-bottom:1px solid #fff}.kint-rich ul>li>pre{border:1px solid #d7d7d7}.kint-rich dt:hover+dd>ul{border-color:#aaa}.kint-rich pre{background:#fff;margin-top:4px;margin-left:25px}.kint-rich .kint-source{margin-left:-1px}.kint-rich .kint-source .kint-highlight{background:#cfc}.kint-rich .kint-parent.kint-show>.kint-search{border-bottom-width:1px}.kint-rich table td{background:#fff}.kint-rich table td>dl{padding:0;margin:0}.kint-rich table td>dl>dt.kint-parent{margin:0}.kint-rich table td:first-child,.kint-rich table td,.kint-rich table th{padding:2px 4px}.kint-rich table dd,.kint-rich table dt{background:#fff}.kint-rich table tr:hover>td{box-shadow:none;background:#cfc} diff --git a/system4.4.6/ThirdParty/Kint/resources/compiled/microtime.js b/system4.4.6/ThirdParty/Kint/resources/compiled/microtime.js deleted file mode 100644 index 88d4ba92..00000000 --- a/system4.4.6/ThirdParty/Kint/resources/compiled/microtime.js +++ /dev/null @@ -1 +0,0 @@ -void 0===window.kintMicrotimeInitialized&&(window.kintMicrotimeInitialized=1,window.addEventListener("load",function(){"use strict";var a={},t=Array.prototype.slice.call(document.querySelectorAll("[data-kint-microtime-group]"),0);t.forEach(function(t){var i,e;t.querySelector(".kint-microtime-lap")&&(i=t.getAttribute("data-kint-microtime-group"),e=parseFloat(t.querySelector(".kint-microtime-lap").innerHTML),t=parseFloat(t.querySelector(".kint-microtime-avg").innerHTML),void 0===a[i]&&(a[i]={}),(void 0===a[i].min||a[i].min>e)&&(a[i].min=e),(void 0===a[i].max||a[i].max<e)&&(a[i].max=e),a[i].avg=t)}),t.forEach(function(t){var i,e,r,o,n=t.querySelector(".kint-microtime-lap");null!==n&&(i=parseFloat(n.textContent),o=t.dataset.kintMicrotimeGroup,e=a[o].avg,r=a[o].max,o=a[o].min,i!==(t.querySelector(".kint-microtime-avg").textContent=e)||i!==o||i!==r)&&(n.style.background=e<i?"hsl("+(40-40*((i-e)/(r-e)))+", 100%, 65%)":"hsl("+(40+80*(e===o?0:(e-i)/(e-o)))+", 100%, 65%)")})})); diff --git a/system4.4.6/ThirdParty/Kint/resources/compiled/original.css b/system4.4.6/ThirdParty/Kint/resources/compiled/original.css deleted file mode 100644 index 331b2c38..00000000 --- a/system4.4.6/ThirdParty/Kint/resources/compiled/original.css +++ /dev/null @@ -1 +0,0 @@ -.kint-rich{font-size:13px;overflow-x:auto;white-space:nowrap;background:rgba(255,255,255,.9)}.kint-rich.kint-folder{position:fixed;bottom:0;left:0;right:0;z-index:999999;width:100%;margin:0;display:block}.kint-rich.kint-folder dd.kint-foldout{max-height:calc(100vh - 100px);padding-right:8px;overflow-y:scroll;display:none}.kint-rich.kint-folder dd.kint-foldout.kint-show{display:block}.kint-rich::selection,.kint-rich::-moz-selection,.kint-rich::-webkit-selection{background:#0092db;color:#1d1e1e}.kint-rich .kint-focused{box-shadow:0 0 3px 2px #5cb730}.kint-rich,.kint-rich::before,.kint-rich::after,.kint-rich *,.kint-rich *::before,.kint-rich *::after{box-sizing:border-box;border-radius:0;color:#1d1e1e;float:none !important;font-family:Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif;line-height:15px;margin:0;padding:0;text-align:left}.kint-rich{margin:8px 0}.kint-rich dt,.kint-rich dl{width:auto}.kint-rich dt,.kint-rich div.access-path{background:#e0eaef;border:1px solid #b6cedb;color:#1d1e1e;display:block;font-weight:bold;list-style:none outside none;overflow:auto;padding:4px}.kint-rich dt:hover,.kint-rich div.access-path:hover{border-color:#0092db}.kint-rich>dl dl{padding:0 0 0 12px}.kint-rich dt.kint-parent>nav,.kint-rich>footer>nav{background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMCAxNTAiPjxnIHN0cm9rZS13aWR0aD0iMiIgZmlsbD0iI0ZGRiI+PHBhdGggZD0iTTEgMWgyOHYyOEgxem01IDE0aDE4bS05IDlWNk0xIDYxaDI4djI4SDF6bTUgMTRoMTgiIHN0cm9rZT0iIzM3OSIvPjxwYXRoIGQ9Ik0xIDMxaDI4djI4SDF6bTUgMTRoMThtLTkgOVYzNk0xIDkxaDI4djI4SDF6bTUgMTRoMTgiIHN0cm9rZT0iIzVBMyIvPjxwYXRoIGQ9Ik0xIDEyMWgyOHYyOEgxem01IDVsMTggMThtLTE4IDBsMTgtMTgiIHN0cm9rZT0iI0NDQyIvPjwvZz48L3N2Zz4=") no-repeat scroll 0 0/15px 75px rgba(0,0,0,0);cursor:pointer;display:inline-block;height:15px;width:15px;margin-right:3px;vertical-align:middle}.kint-rich dt.kint-parent:hover>nav,.kint-rich>footer>nav:hover{background-position:0 25%}.kint-rich dt.kint-parent.kint-show>nav,.kint-rich>footer.kint-show>nav{background-position:0 50%}.kint-rich dt.kint-parent.kint-show:hover>nav,.kint-rich>footer.kint-show>nav:hover{background-position:0 75%}.kint-rich dt.kint-parent.kint-locked>nav{background-position:0 100%}.kint-rich dt.kint-parent+dd{display:none;border-left:1px dashed #b6cedb}.kint-rich dt.kint-parent.kint-show+dd{display:block}.kint-rich var,.kint-rich var a{color:#0092db;font-style:normal}.kint-rich dt:hover var,.kint-rich dt:hover var a{color:#5cb730}.kint-rich dfn{font-style:normal;font-family:monospace;color:#1d1e1e}.kint-rich pre{color:#1d1e1e;margin:0 0 0 12px;padding:5px;overflow-y:hidden;border-top:0;border:1px solid #b6cedb;background:#e0eaef;display:block;word-break:normal}.kint-rich .kint-popup-trigger,.kint-rich .kint-access-path-trigger,.kint-rich .kint-search-trigger{background:rgba(29,30,30,.8);border-radius:3px;height:16px;font-size:16px;margin-left:5px;font-weight:bold;width:16px;text-align:center;float:right !important;cursor:pointer;color:#e0eaef;position:relative;overflow:hidden;line-height:17.6px}.kint-rich .kint-popup-trigger:hover,.kint-rich .kint-access-path-trigger:hover,.kint-rich .kint-search-trigger:hover{color:#1d1e1e;background:#e0eaef}.kint-rich dt.kint-parent>.kint-popup-trigger{line-height:19.2px}.kint-rich .kint-search-trigger{font-size:20px}.kint-rich input.kint-search{display:none;border:1px solid #b6cedb;border-top-width:0;border-bottom-width:0;padding:4px;float:right !important;margin:-4px 0;color:#1d1e1e;background:#c1d4df;height:24px;width:160px;position:relative;z-index:100}.kint-rich input.kint-search.kint-show{display:block}.kint-rich .kint-search-root ul.kint-tabs>li:not(.kint-search-match){background:#d0d0d0;opacity:.5}.kint-rich .kint-search-root dl:not(.kint-search-match){opacity:.5}.kint-rich .kint-search-root dl:not(.kint-search-match)>dt{background:#e8e8e8}.kint-rich .kint-search-root dl:not(.kint-search-match) dl,.kint-rich .kint-search-root dl:not(.kint-search-match) ul.kint-tabs>li:not(.kint-search-match){opacity:1}.kint-rich div.access-path{background:#c1d4df;display:none;margin-top:5px;padding:4px;white-space:pre}.kint-rich div.access-path.kint-show{display:block}.kint-rich footer{padding:0 3px 3px;font-size:9px;background:rgba(0,0,0,0)}.kint-rich footer>.kint-popup-trigger{background:rgba(0,0,0,0);color:#1d1e1e}.kint-rich footer nav{height:10px;width:10px;background-size:10px 50px}.kint-rich footer>ol{display:none;margin-left:32px}.kint-rich footer.kint-show>ol{display:block}.kint-rich a{color:#1d1e1e;text-shadow:none;text-decoration:underline}.kint-rich a:hover{color:#1d1e1e;border-bottom:1px dotted #1d1e1e}.kint-rich ul{list-style:none;padding-left:12px}.kint-rich ul:not(.kint-tabs) li{border-left:1px dashed #b6cedb}.kint-rich ul:not(.kint-tabs) li>dl{border-left:none}.kint-rich ul.kint-tabs{margin:0 0 0 12px;padding-left:0;background:#e0eaef;border:1px solid #b6cedb;border-top:0}.kint-rich ul.kint-tabs>li{background:#c1d4df;border:1px solid #b6cedb;cursor:pointer;display:inline-block;height:24px;margin:2px;padding:0 12px;vertical-align:top}.kint-rich ul.kint-tabs>li:hover,.kint-rich ul.kint-tabs>li.kint-active-tab:hover{border-color:#0092db;color:#5cb730}.kint-rich ul.kint-tabs>li.kint-active-tab{background:#e0eaef;border-top:0;margin-top:-1px;height:27px;line-height:24px}.kint-rich ul.kint-tabs>li:not(.kint-active-tab){line-height:20px}.kint-rich ul.kint-tabs li+li{margin-left:0}.kint-rich ul.kint-tab-contents>li{display:none}.kint-rich ul.kint-tab-contents>li.kint-show{display:block}.kint-rich dt:hover+dd>ul>li.kint-active-tab{border-color:#0092db;color:#5cb730}.kint-rich dt>.kint-color-preview{width:16px;height:16px;display:inline-block;vertical-align:middle;margin-left:10px;border:1px solid #b6cedb;background-color:#ccc;background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2"><path fill="%23FFF" d="M0 0h1v2h1V1H0z"/></svg>');background-size:100%}.kint-rich dt>.kint-color-preview:hover{border-color:#0092db}.kint-rich dt>.kint-color-preview>div{width:100%;height:100%}.kint-rich table{border-collapse:collapse;empty-cells:show;border-spacing:0}.kint-rich table *{font-size:12px}.kint-rich table dt{background:none;padding:2px}.kint-rich table dt .kint-parent{min-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kint-rich table td,.kint-rich table th{border:1px solid #b6cedb;padding:2px;vertical-align:center}.kint-rich table th{cursor:alias}.kint-rich table td:first-child,.kint-rich table th{font-weight:bold;background:#c1d4df;color:#1d1e1e}.kint-rich table td{background:#e0eaef;white-space:pre}.kint-rich table td>dl{padding:0}.kint-rich table pre{border-top:0;border-right:0}.kint-rich table thead th:first-child{background:none;border:0}.kint-rich table tr:hover>td{box-shadow:0 0 1px 0 #0092db inset}.kint-rich table tr:hover var{color:#5cb730}.kint-rich table ul.kint-tabs li.kint-active-tab{height:20px;line-height:17px}.kint-rich pre.kint-source{margin-left:-1px}.kint-rich pre.kint-source[data-kint-filename]:before{display:block;content:attr(data-kint-filename);margin-bottom:4px;padding-bottom:4px;border-bottom:1px solid #c1d4df}.kint-rich pre.kint-source>div:before{display:inline-block;content:counter(kint-l);counter-increment:kint-l;border-right:1px solid #0092db;padding-right:8px;margin-right:8px}.kint-rich pre.kint-source>div.kint-highlight{background:#c1d4df}.kint-rich .kint-microtime-lap{text-shadow:-1px 0 #0092db,0 1px #0092db,1px 0 #0092db,0 -1px #0092db;color:#e0eaef;font-weight:bold}input.kint-note-input{width:100%}.kint-rich>dl>dt{background:linear-gradient(to bottom, #e3ecf0 0, #c0d4df 100%)}.kint-rich ul.kint-tabs{background:linear-gradient(to bottom, #9dbed0 0px, #b2ccda 100%)}.kint-rich>dl:not(.kint-trace)>dd>ul.kint-tabs li{background:#e0eaef}.kint-rich>dl:not(.kint-trace)>dd>ul.kint-tabs li.kint-active-tab{background:#c1d4df}.kint-rich>dl.kint-trace>dt{background:linear-gradient(to bottom, #c0d4df 0px, #e3ecf0 100%)}.kint-rich .kint-source .kint-highlight{background:#f0eb96} diff --git a/system4.4.6/ThirdParty/Kint/resources/compiled/plain.css b/system4.4.6/ThirdParty/Kint/resources/compiled/plain.css deleted file mode 100644 index 85a4e739..00000000 --- a/system4.4.6/ThirdParty/Kint/resources/compiled/plain.css +++ /dev/null @@ -1 +0,0 @@ -.kint-plain{background:rgba(255,255,255,.9);white-space:pre;display:block;font-family:monospace;color:#222}.kint-plain i{color:#d00;font-style:normal}.kint-plain u{color:#030;text-decoration:none;font-weight:bold}.kint-plain .kint-microtime-lap{font-weight:bold;text-shadow:1px 0 #fff,0 1px #fff,-1px 0 #fff,0 -1px #fff} diff --git a/system4.4.6/ThirdParty/Kint/resources/compiled/plain.js b/system4.4.6/ThirdParty/Kint/resources/compiled/plain.js deleted file mode 100644 index 9791fc9f..00000000 --- a/system4.4.6/ThirdParty/Kint/resources/compiled/plain.js +++ /dev/null @@ -1 +0,0 @@ -void 0===window.kintPlain&&(window.kintPlain=function(){"use strict";var i={initLoad:function(){i.style=window.kintShared.dedupe("style.kint-plain-style",i.style),i.script=window.kintShared.dedupe("script.kint-plain-script",i.script)},style:null,script:null};return i}()),window.kintShared.runOnce(window.kintPlain.initLoad); diff --git a/system4.4.6/ThirdParty/Kint/resources/compiled/rich.js b/system4.4.6/ThirdParty/Kint/resources/compiled/rich.js deleted file mode 100644 index 39db8fb9..00000000 --- a/system4.4.6/ThirdParty/Kint/resources/compiled/rich.js +++ /dev/null @@ -1 +0,0 @@ -void 0===window.kintRich&&(window.kintRich=function(){"use strict";var l={selectText:function(e){var t=window.getSelection(),a=document.createRange();a.selectNodeContents(e),t.removeAllRanges(),t.addRange(a)},toggle:function(e,t){var a=l.getChildren(e);a&&(e.classList.toggle("kint-show",t),1===a.childNodes.length)&&(a=a.childNodes[0].childNodes[0])&&a.classList&&a.classList.contains("kint-parent")&&l.toggle(a,t)},toggleChildren:function(e,t){var a=l.getChildren(e);if(a){var o=a.getElementsByClassName("kint-parent"),s=o.length;for(void 0===t&&(t=e.classList.contains("kint-show"));s--;)l.toggle(o[s],t)}},switchTab:function(e){var t=e.previousSibling,a=0;for(e.parentNode.getElementsByClassName("kint-active-tab")[0].classList.remove("kint-active-tab"),e.classList.add("kint-active-tab");t;)1===t.nodeType&&a++,t=t.previousSibling;for(var o=e.parentNode.nextSibling.childNodes,s=0;s<o.length;s++)s===a?(o[s].classList.add("kint-show"),1===o[s].childNodes.length&&(t=o[s].childNodes[0].childNodes[0])&&t.classList&&t.classList.contains("kint-parent")&&l.toggle(t,!0)):o[s].classList.remove("kint-show")},mktag:function(e){return"<"+e+">"},openInNewWindow:function(e){var t=window.open();t&&(t.document.open(),t.document.write(l.mktag("html")+l.mktag("head")+l.mktag("title")+"Kint ("+(new Date).toISOString()+")"+l.mktag("/title")+l.mktag('meta charset="utf-8"')+l.mktag('script class="kint-rich-script" nonce="'+l.script.nonce+'"')+l.script.innerHTML+l.mktag("/script")+l.mktag('style class="kint-rich-style" nonce="'+l.style.nonce+'"')+l.style.innerHTML+l.mktag("/style")+l.mktag("/head")+l.mktag("body")+'<input class="kint-note-input" placeholder="Take some notes!"><div class="kint-rich">'+e.parentNode.outerHTML+"</div>"+l.mktag("/body")),t.document.close())},sortTable:function(e,a){var t=e.tBodies[0];[].slice.call(e.tBodies[0].rows).sort(function(e,t){if(e=e.cells[a].textContent.trim().toLocaleLowerCase(),t=t.cells[a].textContent.trim().toLocaleLowerCase(),isNaN(e)||isNaN(t)){if(isNaN(e)&&!isNaN(t))return 1;if(isNaN(t)&&!isNaN(e))return-1}else e=parseFloat(e),t=parseFloat(t);return e<t?-1:t<e?1:0}).forEach(function(e){t.appendChild(e)})},showAccessPath:function(e){for(var t=e.childNodes,a=0;a<t.length;a++)if(t[a].classList&&t[a].classList.contains("access-path"))return t[a].classList.toggle("kint-show"),void(t[a].classList.contains("kint-show")&&l.selectText(t[a]))},showSearchBox:function(e){var t=e.querySelector(".kint-search");t&&(t.classList.toggle("kint-show"),t.classList.contains("kint-show")?(e.classList.add("kint-show"),t.focus(),t.select(),l.search(e.parentNode,t.value)):e.parentNode.classList.remove("kint-search-root"))},search:function(e,t){e.querySelectorAll(".kint-search-match").forEach(function(e){e.classList.remove("kint-search-match")}),e.classList.remove("kint-search-match"),e.classList.toggle("kint-search-root",t.length),t.length&&l.findMatches(e,t)},findMatches:function(e,t){var a,o,s,n=e.cloneNode(!0);if(n.querySelectorAll(".access-path").forEach(function(e){e.remove()}),-1!=n.textContent.toUpperCase().indexOf(t.toUpperCase())){for(r in e.classList.add("kint-search-match"),e.childNodes)if("DD"==e.childNodes[r].tagName){a=e.childNodes[r];break}if(a)if([].forEach.call(a.childNodes,function(e){"DL"==e.tagName?l.findMatches(e,t):"UL"==e.tagName&&(e.classList.contains("kint-tabs")?o=e.childNodes:e.classList.contains("kint-tab-contents")&&(s=e.childNodes))}),o&&s&&o.length==s.length)for(var r=0;r<o.length;r++){var i=!1;(i=-1!=o[r].textContent.toUpperCase().indexOf(t.toUpperCase())||((n=s[r].cloneNode(!0)).querySelectorAll(".access-path").forEach(function(e){e.remove()}),-1!=n.textContent.toUpperCase().indexOf(t.toUpperCase()))?!0:i)&&(o[r].classList.add("kint-search-match"),[].forEach.call(s[r].childNodes,function(e){"DL"==e.tagName&&l.findMatches(e,t)}))}}},getParentByClass:function(e,t){for(;;){if(!(e=e.parentNode)||!e.classList||e===document)return null;if(e.classList.contains(t))return e}return null},getParentHeader:function(e,t){for(var a=e.nodeName.toLowerCase();"dd"!==a&&"dt"!==a&&l.getParentByClass(e,"kint-rich");)a=(e=e.parentNode).nodeName.toLowerCase();return l.getParentByClass(e,"kint-rich")?(e="dd"===a&&t?e.previousElementSibling:e)&&"dt"===e.nodeName.toLowerCase()&&e.classList.contains("kint-parent")?e:void 0:null},getChildren:function(e){for(;(e=e.nextElementSibling)&&"dd"!==e.nodeName.toLowerCase(););return e},isFolderOpen:function(){if(l.folder&&l.folder.querySelector("dd.kint-foldout"))return l.folder.querySelector("dd.kint-foldout").previousSibling.classList.contains("kint-show")},initLoad:function(){l.style=window.kintShared.dedupe("style.kint-rich-style",l.style),l.script=window.kintShared.dedupe("script.kint-rich-script",l.script),l.folder=window.kintShared.dedupe(".kint-rich.kint-folder",l.folder);var t,e=document.querySelectorAll("input.kint-search");[].forEach.call(e,function(t){function e(e){window.clearTimeout(a),t.value!==o&&(a=window.setTimeout(function(){o=t.value,l.search(t.parentNode.parentNode,o)},500))}var a=null,o=null;t.removeEventListener("keyup",e),t.addEventListener("keyup",e)}),l.folder&&(t=l.folder.querySelector("dd"),[].forEach.call(document.querySelectorAll(".kint-rich.kint-file"),function(e){e.parentNode!==l.folder&&t.appendChild(e)}),document.body.appendChild(l.folder),l.folder.classList.add("kint-show"))},keyboardNav:{targets:[],target:0,active:!1,fetchTargets:function(){var e=l.keyboardNav.targets[l.keyboardNav.target];l.keyboardNav.targets=[],document.querySelectorAll(".kint-rich nav, .kint-tabs>li:not(.kint-active-tab)").forEach(function(e){l.isFolderOpen()&&!l.folder.contains(e)||0===e.offsetWidth&&0===e.offsetHeight||l.keyboardNav.targets.push(e)}),e&&-1!==l.keyboardNav.targets.indexOf(e)&&(l.keyboardNav.target=l.keyboardNav.targets.indexOf(e))},sync:function(e){var t=document.querySelector(".kint-focused");t&&t.classList.remove("kint-focused"),l.keyboardNav.active&&((t=l.keyboardNav.targets[l.keyboardNav.target]).classList.add("kint-focused"),e||l.keyboardNav.scroll(t))},scroll:function(e){var t,a;l.folder&&e===l.folder.querySelector("dt > nav")||(e=(t=function(e){return e.offsetTop+(e.offsetParent?t(e.offsetParent):0)})(e),l.isFolderOpen()?(a=l.folder.querySelector("dd.kint-foldout")).scrollTo(0,e-a.clientHeight/2):window.scrollTo(0,e-window.innerHeight/2))},moveCursor:function(e){for(l.keyboardNav.target+=e;l.keyboardNav.target<0;)l.keyboardNav.target+=l.keyboardNav.targets.length;for(;l.keyboardNav.target>=l.keyboardNav.targets.length;)l.keyboardNav.target-=l.keyboardNav.targets.length;l.keyboardNav.sync()},setCursor:function(e){if(!l.isFolderOpen()||l.folder.contains(e)){l.keyboardNav.fetchTargets();for(var t=0;t<l.keyboardNav.targets.length;t++)if(e===l.keyboardNav.targets[t])return l.keyboardNav.target=t,!0}return!1}},mouseNav:{lastClickTarget:null,lastClickTimer:null,lastClickCount:0,renewLastClick:function(){window.clearTimeout(l.mouseNav.lastClickTimer),l.mouseNav.lastClickTimer=window.setTimeout(function(){l.mouseNav.lastClickTarget=null,l.mouseNav.lastClickTimer=null,l.mouseNav.lastClickCount=0},250)}},style:null,script:null,folder:null};return window.addEventListener("click",function(e){var t=e.target;if(l.mouseNav.lastClickTarget&&l.mouseNav.lastClickTimer&&l.mouseNav.lastClickCount)if(t=l.mouseNav.lastClickTarget,1===l.mouseNav.lastClickCount)l.toggleChildren(t.parentNode),l.keyboardNav.setCursor(t),l.keyboardNav.sync(!0),l.mouseNav.lastClickCount++,l.mouseNav.renewLastClick();else{for(var a=t.parentNode.classList.contains("kint-show"),o=document.getElementsByClassName("kint-parent"),s=o.length;s--;)l.toggle(o[s],a);l.keyboardNav.setCursor(t),l.keyboardNav.sync(!0),l.keyboardNav.scroll(t),window.clearTimeout(l.mouseNav.lastClickTimer),l.mouseNav.lastClickTarget=null,l.mouseNav.lastClickTarget=null,l.mouseNav.lastClickCount=0}else if(l.getParentByClass(t,"kint-rich")){var n=t.nodeName.toLowerCase();if("dfn"===n&&l.selectText(t),"th"===n)e.ctrlKey||l.sortTable(t.parentNode.parentNode.parentNode,t.cellIndex);else if((t=l.getParentHeader(t))&&(l.keyboardNav.setCursor(t.querySelector("nav")),l.keyboardNav.sync(!0)),t=e.target,"li"===n&&"kint-tabs"===t.parentNode.className)"kint-active-tab"!==t.className&&l.switchTab(t),(t=l.getParentHeader(t,!0))&&(l.keyboardNav.setCursor(t.querySelector("nav")),l.keyboardNav.sync(!0));else if("nav"===n)"footer"===t.parentNode.nodeName.toLowerCase()?(l.keyboardNav.setCursor(t),l.keyboardNav.sync(!0),(t=t.parentNode).classList.toggle("kint-show")):(l.toggle(t.parentNode),l.keyboardNav.fetchTargets(),l.mouseNav.lastClickCount=1,l.mouseNav.lastClickTarget=t,l.mouseNav.renewLastClick());else if(t.classList.contains("kint-popup-trigger")){var r=t.parentNode;if("footer"===r.nodeName.toLowerCase())r=r.previousSibling;else for(;r&&!r.classList.contains("kint-parent");)r=r.parentNode;l.openInNewWindow(r)}else t.classList.contains("kint-access-path-trigger")?l.showAccessPath(t.parentNode):t.classList.contains("kint-search-trigger")?l.showSearchBox(t.parentNode):t.classList.contains("kint-search")||("pre"===n&&3===e.detail?l.selectText(t):l.getParentByClass(t,"kint-source")&&3===e.detail?l.selectText(l.getParentByClass(t,"kint-source")):t.classList.contains("access-path")?l.selectText(t):"a"!==n&&(t=l.getParentHeader(t))&&(l.toggle(t),l.keyboardNav.fetchTargets()))}},!0),window.addEventListener("keydown",function(e){if(e.target===document.body&&!e.altKey&&!e.ctrlKey)if(68===e.keyCode){if(l.keyboardNav.active)l.keyboardNav.active=!1;else if(l.keyboardNav.active=!0,l.keyboardNav.fetchTargets(),0===l.keyboardNav.targets.length)return void(l.keyboardNav.active=!1);l.keyboardNav.sync(),e.preventDefault()}else if(l.keyboardNav.active)if(9===e.keyCode)l.keyboardNav.moveCursor(e.shiftKey?-1:1),e.preventDefault();else if(38===e.keyCode||75===e.keyCode)l.keyboardNav.moveCursor(-1),e.preventDefault();else if(40===e.keyCode||74===e.keyCode)l.keyboardNav.moveCursor(1),e.preventDefault();else{var t,a,o=l.keyboardNav.targets[l.keyboardNav.target];if("li"===o.nodeName.toLowerCase()){if(32===e.keyCode||13===e.keyCode)return l.switchTab(o),l.keyboardNav.fetchTargets(),l.keyboardNav.sync(),void e.preventDefault();if(39===e.keyCode||76===e.keyCode)return l.keyboardNav.moveCursor(1),void e.preventDefault();if(37===e.keyCode||72===e.keyCode)return l.keyboardNav.moveCursor(-1),void e.preventDefault()}o=o.parentNode,65===e.keyCode?(l.showAccessPath(o),e.preventDefault()):"footer"===o.nodeName.toLowerCase()&&o.parentNode.classList.contains("kint-rich")?32===e.keyCode||13===e.keyCode?(o.classList.toggle("kint-show"),e.preventDefault()):37===e.keyCode||72===e.keyCode?(o.classList.remove("kint-show"),e.preventDefault()):39!==e.keyCode&&76!==e.keyCode||(o.classList.add("kint-show"),e.preventDefault()):32===e.keyCode||13===e.keyCode?(l.toggle(o),l.keyboardNav.fetchTargets(),e.preventDefault()):39!==e.keyCode&&76!==e.keyCode&&37!==e.keyCode&&72!==e.keyCode||(t=39===e.keyCode||76===e.keyCode,o.classList.contains("kint-show")?l.toggleChildren(o,t):t||(a=l.getParentHeader(o.parentNode.parentNode,!0))&&(l.keyboardNav.setCursor((o=a).querySelector("nav")),l.keyboardNav.sync()),l.toggle(o,t),l.keyboardNav.fetchTargets(),e.preventDefault())}},!0),l}()),window.kintShared.runOnce(window.kintRich.initLoad); diff --git a/system4.4.6/ThirdParty/Kint/resources/compiled/shared.js b/system4.4.6/ThirdParty/Kint/resources/compiled/shared.js deleted file mode 100644 index fdaaaa6e..00000000 --- a/system4.4.6/ThirdParty/Kint/resources/compiled/shared.js +++ /dev/null @@ -1 +0,0 @@ -void 0===window.kintShared&&(window.kintShared=function(){"use strict";var e={dedupe:function(e,n){return[].forEach.call(document.querySelectorAll(e),function(e){e!==(n=n&&n.ownerDocument.contains(n)?n:e)&&e.parentNode.removeChild(e)}),n},runOnce:function(e){"complete"===document.readyState?e():window.addEventListener("load",e)}};return window.addEventListener("click",function(e){var n;e.target.classList.contains("kint-ide-link")&&((n=new XMLHttpRequest).open("GET",e.target.href),n.send(null),e.preventDefault())}),e}()); diff --git a/system4.4.6/ThirdParty/Kint/resources/compiled/solarized-dark.css b/system4.4.6/ThirdParty/Kint/resources/compiled/solarized-dark.css deleted file mode 100644 index 2cc125ed..00000000 --- a/system4.4.6/ThirdParty/Kint/resources/compiled/solarized-dark.css +++ /dev/null @@ -1 +0,0 @@ -.kint-rich{font-size:13px;overflow-x:auto;white-space:nowrap;background:#073642}.kint-rich.kint-folder{position:fixed;bottom:0;left:0;right:0;z-index:999999;width:100%;margin:0;display:block}.kint-rich.kint-folder dd.kint-foldout{max-height:calc(100vh - 100px);padding-right:10px;overflow-y:scroll;display:none}.kint-rich.kint-folder dd.kint-foldout.kint-show{display:block}.kint-rich::selection,.kint-rich::-moz-selection,.kint-rich::-webkit-selection{background:#268bd2;color:#839496}.kint-rich .kint-focused{box-shadow:0 0 3px 2px #2aa198}.kint-rich,.kint-rich::before,.kint-rich::after,.kint-rich *,.kint-rich *::before,.kint-rich *::after{box-sizing:border-box;border-radius:0;color:#839496;float:none !important;font-family:Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif;line-height:15px;margin:0;padding:0;text-align:left}.kint-rich{margin:10px 0}.kint-rich dt,.kint-rich dl{width:auto}.kint-rich dt,.kint-rich div.access-path{background:#002b36;border:1px solid #586e75;color:#839496;display:block;font-weight:bold;list-style:none outside none;overflow:auto;padding:5px}.kint-rich dt:hover,.kint-rich div.access-path:hover{border-color:#268bd2}.kint-rich>dl dl{padding:0 0 0 15px}.kint-rich dt.kint-parent>nav,.kint-rich>footer>nav{background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMzAgMTUwIj48ZGVmcz48cGF0aCBzdHJva2UtbGluZWpvaW49InJvdW5kIiBkPSJNNCAzYTI0IDMyIDAgMCAxIDAgMjQgNDAgMjAtMTAgMCAxIDIzLTEyQTQwIDIwIDEwIDAgMSA0IDN6IiBpZD0iYSIvPjwvZGVmcz48ZyBmaWxsPSIjOTNhMWExIiBzdHJva2U9IiM5M2ExYTEiPjx1c2UgeGxpbms6aHJlZj0iI2EiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB0cmFuc2Zvcm09InJvdGF0ZSg5MCAtMTUgNDUpIi8+PC9nPjxnIGZpbGw9IiM1ODZlNzUiIHN0cm9rZT0iIzU4NmU3NSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAzMCkiPjx1c2UgeGxpbms6aHJlZj0iI2EiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB0cmFuc2Zvcm09InJvdGF0ZSg5MCAtMTUgNDUpIi8+PC9nPjxwYXRoIGQ9Ik02IDEyNmwxOCAxOG0tMTggMGwxOC0xOCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2U9IiM1ODZlNzUiLz48L3N2Zz4=") no-repeat scroll 0 0/15px 75px rgba(0,0,0,0);cursor:pointer;display:inline-block;height:15px;width:15px;margin-right:3px;vertical-align:middle}.kint-rich dt.kint-parent:hover>nav,.kint-rich>footer>nav:hover{background-position:0 25%}.kint-rich dt.kint-parent.kint-show>nav,.kint-rich>footer.kint-show>nav{background-position:0 50%}.kint-rich dt.kint-parent.kint-show:hover>nav,.kint-rich>footer.kint-show>nav:hover{background-position:0 75%}.kint-rich dt.kint-parent.kint-locked>nav{background-position:0 100%}.kint-rich dt.kint-parent+dd{display:none;border-left:1px dashed #586e75}.kint-rich dt.kint-parent.kint-show+dd{display:block}.kint-rich var,.kint-rich var a{color:#268bd2;font-style:normal}.kint-rich dt:hover var,.kint-rich dt:hover var a{color:#2aa198}.kint-rich dfn{font-style:normal;font-family:monospace;color:#93a1a1}.kint-rich pre{color:#839496;margin:0 0 0 15px;padding:5px;overflow-y:hidden;border-top:0;border:1px solid #586e75;background:#002b36;display:block;word-break:normal}.kint-rich .kint-popup-trigger,.kint-rich .kint-access-path-trigger,.kint-rich .kint-search-trigger{background:rgba(131,148,150,.8);border-radius:3px;height:16px;font-size:16px;margin-left:5px;font-weight:bold;width:16px;text-align:center;float:right !important;cursor:pointer;color:#002b36;position:relative;overflow:hidden;line-height:17.6px}.kint-rich .kint-popup-trigger:hover,.kint-rich .kint-access-path-trigger:hover,.kint-rich .kint-search-trigger:hover{color:#839496;background:#002b36}.kint-rich dt.kint-parent>.kint-popup-trigger{line-height:19.2px}.kint-rich .kint-search-trigger{font-size:20px}.kint-rich input.kint-search{display:none;border:1px solid #586e75;border-top-width:0;border-bottom-width:0;padding:5px;float:right !important;margin:-5px 0;color:#93a1a1;background:#073642;height:26px;width:160px;position:relative;z-index:100}.kint-rich input.kint-search.kint-show{display:block}.kint-rich .kint-search-root ul.kint-tabs>li:not(.kint-search-match){background:#252525;opacity:.5}.kint-rich .kint-search-root dl:not(.kint-search-match){opacity:.5}.kint-rich .kint-search-root dl:not(.kint-search-match)>dt{background:#1b1b1b}.kint-rich .kint-search-root dl:not(.kint-search-match) dl,.kint-rich .kint-search-root dl:not(.kint-search-match) ul.kint-tabs>li:not(.kint-search-match){opacity:1}.kint-rich div.access-path{background:#073642;display:none;margin-top:5px;padding:4px;white-space:pre}.kint-rich div.access-path.kint-show{display:block}.kint-rich footer{padding:0 3px 3px;font-size:9px;background:rgba(0,0,0,0)}.kint-rich footer>.kint-popup-trigger{background:rgba(0,0,0,0);color:#839496}.kint-rich footer nav{height:10px;width:10px;background-size:10px 50px}.kint-rich footer>ol{display:none;margin-left:32px}.kint-rich footer.kint-show>ol{display:block}.kint-rich a{color:#839496;text-shadow:none;text-decoration:underline}.kint-rich a:hover{color:#93a1a1;border-bottom:1px dotted #93a1a1}.kint-rich ul{list-style:none;padding-left:15px}.kint-rich ul:not(.kint-tabs) li{border-left:1px dashed #586e75}.kint-rich ul:not(.kint-tabs) li>dl{border-left:none}.kint-rich ul.kint-tabs{margin:0 0 0 15px;padding-left:0;background:#002b36;border:1px solid #586e75;border-top:0}.kint-rich ul.kint-tabs>li{background:#073642;border:1px solid #586e75;cursor:pointer;display:inline-block;height:30px;margin:3px;padding:0 15px;vertical-align:top}.kint-rich ul.kint-tabs>li:hover,.kint-rich ul.kint-tabs>li.kint-active-tab:hover{border-color:#268bd2;color:#2aa198}.kint-rich ul.kint-tabs>li.kint-active-tab{background:#002b36;border-top:0;margin-top:-1px;height:27px;line-height:24px}.kint-rich ul.kint-tabs>li:not(.kint-active-tab){line-height:25px}.kint-rich ul.kint-tabs li+li{margin-left:0}.kint-rich ul.kint-tab-contents>li{display:none}.kint-rich ul.kint-tab-contents>li.kint-show{display:block}.kint-rich dt:hover+dd>ul>li.kint-active-tab{border-color:#268bd2;color:#2aa198}.kint-rich dt>.kint-color-preview{width:16px;height:16px;display:inline-block;vertical-align:middle;margin-left:10px;border:1px solid #586e75;background-color:#ccc;background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2"><path fill="%23FFF" d="M0 0h1v2h1V1H0z"/></svg>');background-size:100%}.kint-rich dt>.kint-color-preview:hover{border-color:#268bd2}.kint-rich dt>.kint-color-preview>div{width:100%;height:100%}.kint-rich table{border-collapse:collapse;empty-cells:show;border-spacing:0}.kint-rich table *{font-size:12px}.kint-rich table dt{background:none;padding:2.5px}.kint-rich table dt .kint-parent{min-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kint-rich table td,.kint-rich table th{border:1px solid #586e75;padding:2.5px;vertical-align:center}.kint-rich table th{cursor:alias}.kint-rich table td:first-child,.kint-rich table th{font-weight:bold;background:#073642;color:#93a1a1}.kint-rich table td{background:#002b36;white-space:pre}.kint-rich table td>dl{padding:0}.kint-rich table pre{border-top:0;border-right:0}.kint-rich table thead th:first-child{background:none;border:0}.kint-rich table tr:hover>td{box-shadow:0 0 1px 0 #268bd2 inset}.kint-rich table tr:hover var{color:#2aa198}.kint-rich table ul.kint-tabs li.kint-active-tab{height:20px;line-height:17px}.kint-rich pre.kint-source{margin-left:-1px}.kint-rich pre.kint-source[data-kint-filename]:before{display:block;content:attr(data-kint-filename);margin-bottom:5px;padding-bottom:5px;border-bottom:1px solid #073642}.kint-rich pre.kint-source>div:before{display:inline-block;content:counter(kint-l);counter-increment:kint-l;border-right:1px solid #268bd2;padding-right:10px;margin-right:10px}.kint-rich pre.kint-source>div.kint-highlight{background:#073642}.kint-rich .kint-microtime-lap{text-shadow:-1px 0 #268bd2,0 1px #268bd2,1px 0 #268bd2,0 -1px #268bd2;color:#002b36;font-weight:bold}input.kint-note-input{width:100%}.kint-rich .kint-focused{box-shadow:0 0 3px 2px #859900 inset;border-radius:7px}.kint-rich>dl>dt,.kint-rich ul.kint-tabs{box-shadow:4px 0 2px -3px #268bd2 inset}.kint-rich ul.kint-tabs li.kint-active-tab{padding-top:7px;height:34px}.kint-rich footer li{color:#ddd} diff --git a/system4.4.6/ThirdParty/Kint/resources/compiled/solarized.css b/system4.4.6/ThirdParty/Kint/resources/compiled/solarized.css deleted file mode 100644 index 8c1a67f0..00000000 --- a/system4.4.6/ThirdParty/Kint/resources/compiled/solarized.css +++ /dev/null @@ -1 +0,0 @@ -.kint-rich{font-size:13px;overflow-x:auto;white-space:nowrap;background:rgba(255,255,255,.9)}.kint-rich.kint-folder{position:fixed;bottom:0;left:0;right:0;z-index:999999;width:100%;margin:0;display:block}.kint-rich.kint-folder dd.kint-foldout{max-height:calc(100vh - 100px);padding-right:10px;overflow-y:scroll;display:none}.kint-rich.kint-folder dd.kint-foldout.kint-show{display:block}.kint-rich::selection,.kint-rich::-moz-selection,.kint-rich::-webkit-selection{background:#268bd2;color:#657b83}.kint-rich .kint-focused{box-shadow:0 0 3px 2px #2aa198}.kint-rich,.kint-rich::before,.kint-rich::after,.kint-rich *,.kint-rich *::before,.kint-rich *::after{box-sizing:border-box;border-radius:0;color:#657b83;float:none !important;font-family:Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif;line-height:15px;margin:0;padding:0;text-align:left}.kint-rich{margin:10px 0}.kint-rich dt,.kint-rich dl{width:auto}.kint-rich dt,.kint-rich div.access-path{background:#fdf6e3;border:1px solid #93a1a1;color:#657b83;display:block;font-weight:bold;list-style:none outside none;overflow:auto;padding:5px}.kint-rich dt:hover,.kint-rich div.access-path:hover{border-color:#268bd2}.kint-rich>dl dl{padding:0 0 0 15px}.kint-rich dt.kint-parent>nav,.kint-rich>footer>nav{background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMzAgMTUwIj48ZGVmcz48cGF0aCBzdHJva2UtbGluZWpvaW49InJvdW5kIiBkPSJNNCAzYTI0IDMyIDAgMCAxIDAgMjQgNDAgMjAtMTAgMCAxIDIzLTEyQTQwIDIwIDEwIDAgMSA0IDN6IiBpZD0iYSIvPjwvZGVmcz48ZyBmaWxsPSIjOTNhMWExIiBzdHJva2U9IiM5M2ExYTEiPjx1c2UgeGxpbms6aHJlZj0iI2EiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB0cmFuc2Zvcm09InJvdGF0ZSg5MCAtMTUgNDUpIi8+PC9nPjxnIGZpbGw9IiM1ODZlNzUiIHN0cm9rZT0iIzU4NmU3NSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAzMCkiPjx1c2UgeGxpbms6aHJlZj0iI2EiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB0cmFuc2Zvcm09InJvdGF0ZSg5MCAtMTUgNDUpIi8+PC9nPjxwYXRoIGQ9Ik02IDEyNmwxOCAxOG0tMTggMGwxOC0xOCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2U9IiM1ODZlNzUiLz48L3N2Zz4=") no-repeat scroll 0 0/15px 75px rgba(0,0,0,0);cursor:pointer;display:inline-block;height:15px;width:15px;margin-right:3px;vertical-align:middle}.kint-rich dt.kint-parent:hover>nav,.kint-rich>footer>nav:hover{background-position:0 25%}.kint-rich dt.kint-parent.kint-show>nav,.kint-rich>footer.kint-show>nav{background-position:0 50%}.kint-rich dt.kint-parent.kint-show:hover>nav,.kint-rich>footer.kint-show>nav:hover{background-position:0 75%}.kint-rich dt.kint-parent.kint-locked>nav{background-position:0 100%}.kint-rich dt.kint-parent+dd{display:none;border-left:1px dashed #93a1a1}.kint-rich dt.kint-parent.kint-show+dd{display:block}.kint-rich var,.kint-rich var a{color:#268bd2;font-style:normal}.kint-rich dt:hover var,.kint-rich dt:hover var a{color:#2aa198}.kint-rich dfn{font-style:normal;font-family:monospace;color:#586e75}.kint-rich pre{color:#657b83;margin:0 0 0 15px;padding:5px;overflow-y:hidden;border-top:0;border:1px solid #93a1a1;background:#fdf6e3;display:block;word-break:normal}.kint-rich .kint-popup-trigger,.kint-rich .kint-access-path-trigger,.kint-rich .kint-search-trigger{background:rgba(101,123,131,.8);border-radius:3px;height:16px;font-size:16px;margin-left:5px;font-weight:bold;width:16px;text-align:center;float:right !important;cursor:pointer;color:#fdf6e3;position:relative;overflow:hidden;line-height:17.6px}.kint-rich .kint-popup-trigger:hover,.kint-rich .kint-access-path-trigger:hover,.kint-rich .kint-search-trigger:hover{color:#657b83;background:#fdf6e3}.kint-rich dt.kint-parent>.kint-popup-trigger{line-height:19.2px}.kint-rich .kint-search-trigger{font-size:20px}.kint-rich input.kint-search{display:none;border:1px solid #93a1a1;border-top-width:0;border-bottom-width:0;padding:5px;float:right !important;margin:-5px 0;color:#586e75;background:#eee8d5;height:26px;width:160px;position:relative;z-index:100}.kint-rich input.kint-search.kint-show{display:block}.kint-rich .kint-search-root ul.kint-tabs>li:not(.kint-search-match){background:#e2e2e2;opacity:.5}.kint-rich .kint-search-root dl:not(.kint-search-match){opacity:.5}.kint-rich .kint-search-root dl:not(.kint-search-match)>dt{background:#f0f0f0}.kint-rich .kint-search-root dl:not(.kint-search-match) dl,.kint-rich .kint-search-root dl:not(.kint-search-match) ul.kint-tabs>li:not(.kint-search-match){opacity:1}.kint-rich div.access-path{background:#eee8d5;display:none;margin-top:5px;padding:4px;white-space:pre}.kint-rich div.access-path.kint-show{display:block}.kint-rich footer{padding:0 3px 3px;font-size:9px;background:rgba(0,0,0,0)}.kint-rich footer>.kint-popup-trigger{background:rgba(0,0,0,0);color:#657b83}.kint-rich footer nav{height:10px;width:10px;background-size:10px 50px}.kint-rich footer>ol{display:none;margin-left:32px}.kint-rich footer.kint-show>ol{display:block}.kint-rich a{color:#657b83;text-shadow:none;text-decoration:underline}.kint-rich a:hover{color:#586e75;border-bottom:1px dotted #586e75}.kint-rich ul{list-style:none;padding-left:15px}.kint-rich ul:not(.kint-tabs) li{border-left:1px dashed #93a1a1}.kint-rich ul:not(.kint-tabs) li>dl{border-left:none}.kint-rich ul.kint-tabs{margin:0 0 0 15px;padding-left:0;background:#fdf6e3;border:1px solid #93a1a1;border-top:0}.kint-rich ul.kint-tabs>li{background:#eee8d5;border:1px solid #93a1a1;cursor:pointer;display:inline-block;height:30px;margin:3px;padding:0 15px;vertical-align:top}.kint-rich ul.kint-tabs>li:hover,.kint-rich ul.kint-tabs>li.kint-active-tab:hover{border-color:#268bd2;color:#2aa198}.kint-rich ul.kint-tabs>li.kint-active-tab{background:#fdf6e3;border-top:0;margin-top:-1px;height:27px;line-height:24px}.kint-rich ul.kint-tabs>li:not(.kint-active-tab){line-height:25px}.kint-rich ul.kint-tabs li+li{margin-left:0}.kint-rich ul.kint-tab-contents>li{display:none}.kint-rich ul.kint-tab-contents>li.kint-show{display:block}.kint-rich dt:hover+dd>ul>li.kint-active-tab{border-color:#268bd2;color:#2aa198}.kint-rich dt>.kint-color-preview{width:16px;height:16px;display:inline-block;vertical-align:middle;margin-left:10px;border:1px solid #93a1a1;background-color:#ccc;background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2"><path fill="%23FFF" d="M0 0h1v2h1V1H0z"/></svg>');background-size:100%}.kint-rich dt>.kint-color-preview:hover{border-color:#268bd2}.kint-rich dt>.kint-color-preview>div{width:100%;height:100%}.kint-rich table{border-collapse:collapse;empty-cells:show;border-spacing:0}.kint-rich table *{font-size:12px}.kint-rich table dt{background:none;padding:2.5px}.kint-rich table dt .kint-parent{min-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kint-rich table td,.kint-rich table th{border:1px solid #93a1a1;padding:2.5px;vertical-align:center}.kint-rich table th{cursor:alias}.kint-rich table td:first-child,.kint-rich table th{font-weight:bold;background:#eee8d5;color:#586e75}.kint-rich table td{background:#fdf6e3;white-space:pre}.kint-rich table td>dl{padding:0}.kint-rich table pre{border-top:0;border-right:0}.kint-rich table thead th:first-child{background:none;border:0}.kint-rich table tr:hover>td{box-shadow:0 0 1px 0 #268bd2 inset}.kint-rich table tr:hover var{color:#2aa198}.kint-rich table ul.kint-tabs li.kint-active-tab{height:20px;line-height:17px}.kint-rich pre.kint-source{margin-left:-1px}.kint-rich pre.kint-source[data-kint-filename]:before{display:block;content:attr(data-kint-filename);margin-bottom:5px;padding-bottom:5px;border-bottom:1px solid #eee8d5}.kint-rich pre.kint-source>div:before{display:inline-block;content:counter(kint-l);counter-increment:kint-l;border-right:1px solid #268bd2;padding-right:10px;margin-right:10px}.kint-rich pre.kint-source>div.kint-highlight{background:#eee8d5}.kint-rich .kint-microtime-lap{text-shadow:-1px 0 #268bd2,0 1px #268bd2,1px 0 #268bd2,0 -1px #268bd2;color:#fdf6e3;font-weight:bold}input.kint-note-input{width:100%}.kint-rich .kint-focused{box-shadow:0 0 3px 2px #859900 inset;border-radius:7px}.kint-rich>dl>dt,.kint-rich ul.kint-tabs{box-shadow:4px 0 2px -3px #268bd2 inset}.kint-rich ul.kint-tabs li.kint-active-tab{padding-top:7px;height:34px} diff --git a/system4.4.6/ThirdParty/PSR/Log/AbstractLogger.php b/system4.4.6/ThirdParty/PSR/Log/AbstractLogger.php deleted file mode 100644 index e02f9daf..00000000 --- a/system4.4.6/ThirdParty/PSR/Log/AbstractLogger.php +++ /dev/null @@ -1,128 +0,0 @@ -<?php - -namespace Psr\Log; - -/** - * This is a simple Logger implementation that other Loggers can inherit from. - * - * It simply delegates all log-level-specific methods to the `log` method to - * reduce boilerplate code that a simple Logger that does the same thing with - * messages regardless of the error level has to implement. - */ -abstract class AbstractLogger implements LoggerInterface -{ - /** - * System is unusable. - * - * @param string $message - * @param mixed[] $context - * - * @return void - */ - public function emergency($message, array $context = array()) - { - $this->log(LogLevel::EMERGENCY, $message, $context); - } - - /** - * Action must be taken immediately. - * - * Example: Entire website down, database unavailable, etc. This should - * trigger the SMS alerts and wake you up. - * - * @param string $message - * @param mixed[] $context - * - * @return void - */ - public function alert($message, array $context = array()) - { - $this->log(LogLevel::ALERT, $message, $context); - } - - /** - * Critical conditions. - * - * Example: Application component unavailable, unexpected exception. - * - * @param string $message - * @param mixed[] $context - * - * @return void - */ - public function critical($message, array $context = array()) - { - $this->log(LogLevel::CRITICAL, $message, $context); - } - - /** - * Runtime errors that do not require immediate action but should typically - * be logged and monitored. - * - * @param string $message - * @param mixed[] $context - * - * @return void - */ - public function error($message, array $context = array()) - { - $this->log(LogLevel::ERROR, $message, $context); - } - - /** - * Exceptional occurrences that are not errors. - * - * Example: Use of deprecated APIs, poor use of an API, undesirable things - * that are not necessarily wrong. - * - * @param string $message - * @param mixed[] $context - * - * @return void - */ - public function warning($message, array $context = array()) - { - $this->log(LogLevel::WARNING, $message, $context); - } - - /** - * Normal but significant events. - * - * @param string $message - * @param mixed[] $context - * - * @return void - */ - public function notice($message, array $context = array()) - { - $this->log(LogLevel::NOTICE, $message, $context); - } - - /** - * Interesting events. - * - * Example: User logs in, SQL logs. - * - * @param string $message - * @param mixed[] $context - * - * @return void - */ - public function info($message, array $context = array()) - { - $this->log(LogLevel::INFO, $message, $context); - } - - /** - * Detailed debug information. - * - * @param string $message - * @param mixed[] $context - * - * @return void - */ - public function debug($message, array $context = array()) - { - $this->log(LogLevel::DEBUG, $message, $context); - } -} diff --git a/system4.4.6/ThirdParty/PSR/Log/InvalidArgumentException.php b/system4.4.6/ThirdParty/PSR/Log/InvalidArgumentException.php deleted file mode 100644 index 67f852d1..00000000 --- a/system4.4.6/ThirdParty/PSR/Log/InvalidArgumentException.php +++ /dev/null @@ -1,7 +0,0 @@ -<?php - -namespace Psr\Log; - -class InvalidArgumentException extends \InvalidArgumentException -{ -} diff --git a/system4.4.6/ThirdParty/PSR/Log/LICENSE b/system4.4.6/ThirdParty/PSR/Log/LICENSE deleted file mode 100644 index 474c952b..00000000 --- a/system4.4.6/ThirdParty/PSR/Log/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012 PHP Framework Interoperability Group - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/system4.4.6/ThirdParty/PSR/Log/LogLevel.php b/system4.4.6/ThirdParty/PSR/Log/LogLevel.php deleted file mode 100644 index 9cebcace..00000000 --- a/system4.4.6/ThirdParty/PSR/Log/LogLevel.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - -namespace Psr\Log; - -/** - * Describes log levels. - */ -class LogLevel -{ - const EMERGENCY = 'emergency'; - const ALERT = 'alert'; - const CRITICAL = 'critical'; - const ERROR = 'error'; - const WARNING = 'warning'; - const NOTICE = 'notice'; - const INFO = 'info'; - const DEBUG = 'debug'; -} diff --git a/system4.4.6/ThirdParty/PSR/Log/LoggerAwareInterface.php b/system4.4.6/ThirdParty/PSR/Log/LoggerAwareInterface.php deleted file mode 100644 index 4d64f478..00000000 --- a/system4.4.6/ThirdParty/PSR/Log/LoggerAwareInterface.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - -namespace Psr\Log; - -/** - * Describes a logger-aware instance. - */ -interface LoggerAwareInterface -{ - /** - * Sets a logger instance on the object. - * - * @param LoggerInterface $logger - * - * @return void - */ - public function setLogger(LoggerInterface $logger); -} diff --git a/system4.4.6/ThirdParty/PSR/Log/LoggerAwareTrait.php b/system4.4.6/ThirdParty/PSR/Log/LoggerAwareTrait.php deleted file mode 100644 index 82bf45c8..00000000 --- a/system4.4.6/ThirdParty/PSR/Log/LoggerAwareTrait.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php - -namespace Psr\Log; - -/** - * Basic Implementation of LoggerAwareInterface. - */ -trait LoggerAwareTrait -{ - /** - * The logger instance. - * - * @var LoggerInterface|null - */ - protected $logger; - - /** - * Sets a logger. - * - * @param LoggerInterface $logger - */ - public function setLogger(LoggerInterface $logger) - { - $this->logger = $logger; - } -} diff --git a/system4.4.6/ThirdParty/PSR/Log/LoggerInterface.php b/system4.4.6/ThirdParty/PSR/Log/LoggerInterface.php deleted file mode 100644 index 2206cfde..00000000 --- a/system4.4.6/ThirdParty/PSR/Log/LoggerInterface.php +++ /dev/null @@ -1,125 +0,0 @@ -<?php - -namespace Psr\Log; - -/** - * Describes a logger instance. - * - * The message MUST be a string or object implementing __toString(). - * - * The message MAY contain placeholders in the form: {foo} where foo - * will be replaced by the context data in key "foo". - * - * The context array can contain arbitrary data. The only assumption that - * can be made by implementors is that if an Exception instance is given - * to produce a stack trace, it MUST be in a key named "exception". - * - * See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md - * for the full interface specification. - */ -interface LoggerInterface -{ - /** - * System is unusable. - * - * @param string $message - * @param mixed[] $context - * - * @return void - */ - public function emergency($message, array $context = array()); - - /** - * Action must be taken immediately. - * - * Example: Entire website down, database unavailable, etc. This should - * trigger the SMS alerts and wake you up. - * - * @param string $message - * @param mixed[] $context - * - * @return void - */ - public function alert($message, array $context = array()); - - /** - * Critical conditions. - * - * Example: Application component unavailable, unexpected exception. - * - * @param string $message - * @param mixed[] $context - * - * @return void - */ - public function critical($message, array $context = array()); - - /** - * Runtime errors that do not require immediate action but should typically - * be logged and monitored. - * - * @param string $message - * @param mixed[] $context - * - * @return void - */ - public function error($message, array $context = array()); - - /** - * Exceptional occurrences that are not errors. - * - * Example: Use of deprecated APIs, poor use of an API, undesirable things - * that are not necessarily wrong. - * - * @param string $message - * @param mixed[] $context - * - * @return void - */ - public function warning($message, array $context = array()); - - /** - * Normal but significant events. - * - * @param string $message - * @param mixed[] $context - * - * @return void - */ - public function notice($message, array $context = array()); - - /** - * Interesting events. - * - * Example: User logs in, SQL logs. - * - * @param string $message - * @param mixed[] $context - * - * @return void - */ - public function info($message, array $context = array()); - - /** - * Detailed debug information. - * - * @param string $message - * @param mixed[] $context - * - * @return void - */ - public function debug($message, array $context = array()); - - /** - * Logs with an arbitrary level. - * - * @param mixed $level - * @param string $message - * @param mixed[] $context - * - * @return void - * - * @throws \Psr\Log\InvalidArgumentException - */ - public function log($level, $message, array $context = array()); -} diff --git a/system4.4.6/ThirdParty/PSR/Log/LoggerTrait.php b/system4.4.6/ThirdParty/PSR/Log/LoggerTrait.php deleted file mode 100644 index e392fef0..00000000 --- a/system4.4.6/ThirdParty/PSR/Log/LoggerTrait.php +++ /dev/null @@ -1,142 +0,0 @@ -<?php - -namespace Psr\Log; - -/** - * This is a simple Logger trait that classes unable to extend AbstractLogger - * (because they extend another class, etc) can include. - * - * It simply delegates all log-level-specific methods to the `log` method to - * reduce boilerplate code that a simple Logger that does the same thing with - * messages regardless of the error level has to implement. - */ -trait LoggerTrait -{ - /** - * System is unusable. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function emergency($message, array $context = array()) - { - $this->log(LogLevel::EMERGENCY, $message, $context); - } - - /** - * Action must be taken immediately. - * - * Example: Entire website down, database unavailable, etc. This should - * trigger the SMS alerts and wake you up. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function alert($message, array $context = array()) - { - $this->log(LogLevel::ALERT, $message, $context); - } - - /** - * Critical conditions. - * - * Example: Application component unavailable, unexpected exception. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function critical($message, array $context = array()) - { - $this->log(LogLevel::CRITICAL, $message, $context); - } - - /** - * Runtime errors that do not require immediate action but should typically - * be logged and monitored. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function error($message, array $context = array()) - { - $this->log(LogLevel::ERROR, $message, $context); - } - - /** - * Exceptional occurrences that are not errors. - * - * Example: Use of deprecated APIs, poor use of an API, undesirable things - * that are not necessarily wrong. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function warning($message, array $context = array()) - { - $this->log(LogLevel::WARNING, $message, $context); - } - - /** - * Normal but significant events. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function notice($message, array $context = array()) - { - $this->log(LogLevel::NOTICE, $message, $context); - } - - /** - * Interesting events. - * - * Example: User logs in, SQL logs. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function info($message, array $context = array()) - { - $this->log(LogLevel::INFO, $message, $context); - } - - /** - * Detailed debug information. - * - * @param string $message - * @param array $context - * - * @return void - */ - public function debug($message, array $context = array()) - { - $this->log(LogLevel::DEBUG, $message, $context); - } - - /** - * Logs with an arbitrary level. - * - * @param mixed $level - * @param string $message - * @param array $context - * - * @return void - * - * @throws \Psr\Log\InvalidArgumentException - */ - abstract public function log($level, $message, array $context = array()); -} diff --git a/system4.4.6/ThirdParty/PSR/Log/NullLogger.php b/system4.4.6/ThirdParty/PSR/Log/NullLogger.php deleted file mode 100644 index c8f7293b..00000000 --- a/system4.4.6/ThirdParty/PSR/Log/NullLogger.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -namespace Psr\Log; - -/** - * This Logger can be used to avoid conditional log calls. - * - * Logging should always be optional, and if no logger is provided to your - * library creating a NullLogger instance to have something to throw logs at - * is a good way to avoid littering your code with `if ($this->logger) { }` - * blocks. - */ -class NullLogger extends AbstractLogger -{ - /** - * Logs with an arbitrary level. - * - * @param mixed $level - * @param string $message - * @param array $context - * - * @return void - * - * @throws \Psr\Log\InvalidArgumentException - */ - public function log($level, $message, array $context = array()) - { - // noop - } -} diff --git a/system4.4.6/Throttle/Throttler.php b/system4.4.6/Throttle/Throttler.php deleted file mode 100644 index 0a10c023..00000000 --- a/system4.4.6/Throttle/Throttler.php +++ /dev/null @@ -1,182 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Throttle; - -use CodeIgniter\Cache\CacheInterface; -use CodeIgniter\I18n\Time; - -/** - * Class Throttler - * - * Uses an implementation of the Token Bucket algorithm to implement a - * "rolling window" type of throttling that can be used for rate limiting - * an API or any other request. - * - * Each "token" in the "bucket" is equivalent to a single request - * for the purposes of this implementation. - * - * @see https://en.wikipedia.org/wiki/Token_bucket - */ -class Throttler implements ThrottlerInterface -{ - /** - * Container for throttle counters. - * - * @var CacheInterface - */ - protected $cache; - - /** - * The number of seconds until the next token is available. - * - * @var int - */ - protected $tokenTime = 0; - - /** - * The prefix applied to all keys to - * minimize potential conflicts. - * - * @var string - */ - protected $prefix = 'throttler_'; - - /** - * Timestamp to use (during testing) - * - * @var int - */ - protected $testTime; - - /** - * Constructor. - */ - public function __construct(CacheInterface $cache) - { - $this->cache = $cache; - } - - /** - * Returns the number of seconds until the next available token will - * be released for usage. - */ - public function getTokenTime(): int - { - return $this->tokenTime; - } - - /** - * Restricts the number of requests made by a single IP address within - * a set number of seconds. - * - * Example: - * - * if (! $throttler->check($request->ipAddress(), 60, MINUTE)) { - * die('You submitted over 60 requests within a minute.'); - * } - * - * @param string $key The name to use as the "bucket" name. - * @param int $capacity The number of requests the "bucket" can hold - * @param int $seconds The time it takes the "bucket" to completely refill - * @param int $cost The number of tokens this action uses. - * - * @internal param int $maxRequests - */ - public function check(string $key, int $capacity, int $seconds, int $cost = 1): bool - { - $tokenName = $this->prefix . $key; - - // Number of tokens to add back per second - $rate = $capacity / $seconds; - // Number of seconds to get one token - $refresh = 1 / $rate; - - // Check to see if the bucket has even been created yet. - if (($tokens = $this->cache->get($tokenName)) === null) { - // If it hasn't been created, then we'll set it to the maximum - // capacity - 1, and save it to the cache. - $tokens = $capacity - $cost; - $this->cache->save($tokenName, $tokens, $seconds); - $this->cache->save($tokenName . 'Time', $this->time(), $seconds); - - $this->tokenTime = 0; - - return true; - } - - // If $tokens > 0, then we need to replenish the bucket - // based on how long it's been since the last update. - $throttleTime = $this->cache->get($tokenName . 'Time'); - $elapsed = $this->time() - $throttleTime; - - // Add tokens based up on number per second that - // should be refilled, then checked against capacity - // to be sure the bucket didn't overflow. - $tokens += $rate * $elapsed; - $tokens = $tokens > $capacity ? $capacity : $tokens; - - // If $tokens >= 1, then we are safe to perform the action, but - // we need to decrement the number of available tokens. - if ($tokens >= 1) { - $tokens -= $cost; - $this->cache->save($tokenName, $tokens, $seconds); - $this->cache->save($tokenName . 'Time', $this->time(), $seconds); - - $this->tokenTime = 0; - - return true; - } - - // How many seconds till a new token is available. - // We must have a minimum wait of 1 second for a new token. - // Primarily stored to allow devs to report back to users. - $newTokenAvailable = (int) round((1 - $tokens) * $refresh); - $this->tokenTime = max(1, $newTokenAvailable); - - return false; - } - - /** - * @param string $key The name of the bucket - */ - public function remove(string $key): self - { - $tokenName = $this->prefix . $key; - - $this->cache->delete($tokenName); - $this->cache->delete($tokenName . 'Time'); - - return $this; - } - - /** - * Used during testing to set the current timestamp to use. - * - * @return $this - */ - public function setTestTime(int $time) - { - $this->testTime = $time; - - return $this; - } - - /** - * Return the test time, defaulting to current. - * - * @TODO should be private - */ - public function time(): int - { - return $this->testTime ?? Time::now()->getTimestamp(); - } -} diff --git a/system4.4.6/Throttle/ThrottlerInterface.php b/system4.4.6/Throttle/ThrottlerInterface.php deleted file mode 100644 index 2fffcb7a..00000000 --- a/system4.4.6/Throttle/ThrottlerInterface.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Throttle; - -/** - * Expected behavior of a Throttler - */ -interface ThrottlerInterface -{ - /** - * Restricts the number of requests made by a single key within - * a set number of seconds. - * - * Example: - * - * if (! $throttler->checkIPAddress($request->ipAddress(), 60, MINUTE)) - * { - * die('You submitted over 60 requests within a minute.'); - * } - * - * @param string $key The name to use as the "bucket" name. - * @param int $capacity The number of requests the "bucket" can hold - * @param int $seconds The time it takes the "bucket" to completely refill - * @param int $cost The number of tokens this action uses. - * - * @return bool - */ - public function check(string $key, int $capacity, int $seconds, int $cost); - - /** - * Returns the number of seconds until the next available token will - * be released for usage. - */ - public function getTokenTime(): int; -} diff --git a/system4.4.6/Traits/ConditionalTrait.php b/system4.4.6/Traits/ConditionalTrait.php deleted file mode 100644 index 5b8273ee..00000000 --- a/system4.4.6/Traits/ConditionalTrait.php +++ /dev/null @@ -1,61 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Traits; - -trait ConditionalTrait -{ - /** - * Only runs the query when $condition evaluates to true - * - * @template TWhen of mixed - * - * @phpstan-param TWhen $condition - * @phpstan-param callable(self, TWhen): mixed $callback - * @phpstan-param (callable(self): mixed)|null $defaultCallback - * @param array|bool|float|int|object|resource|string|null $condition - * - * @return $this - */ - public function when($condition, callable $callback, ?callable $defaultCallback = null): self - { - if ($condition) { - $callback($this, $condition); - } elseif ($defaultCallback) { - $defaultCallback($this); - } - - return $this; - } - - /** - * Only runs the query when $condition evaluates to false - * - * @template TWhenNot of mixed - * - * @phpstan-param TWhenNot $condition - * @phpstan-param callable(self, TWhenNot): mixed $callback - * @phpstan-param (callable(self): mixed)|null $defaultCallback - * @param array|bool|float|int|object|resource|string|null $condition - * - * @return $this - */ - public function whenNot($condition, callable $callback, ?callable $defaultCallback = null): self - { - if (! $condition) { - $callback($this, $condition); - } elseif ($defaultCallback) { - $defaultCallback($this); - } - - return $this; - } -} diff --git a/system4.4.6/Traits/PropertiesTrait.php b/system4.4.6/Traits/PropertiesTrait.php deleted file mode 100644 index 4983ed68..00000000 --- a/system4.4.6/Traits/PropertiesTrait.php +++ /dev/null @@ -1,78 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Traits; - -use ReflectionClass; -use ReflectionProperty; - -/** - * Trait PropertiesTrait - * - * Provides utilities for reading and writing - * class properties, primarily for limiting access - * to public properties. - */ -trait PropertiesTrait -{ - /** - * Attempts to set the values of public class properties. - * - * @return $this - */ - final public function fill(array $params): self - { - foreach ($params as $key => $value) { - if (property_exists($this, $key)) { - $this->{$key} = $value; - } - } - - return $this; - } - - /** - * Get the public properties of the class and return as an array. - */ - final public function getPublicProperties(): array - { - $worker = new class () { - public function getProperties(object $obj): array - { - return get_object_vars($obj); - } - }; - - return $worker->getProperties($this); - } - - /** - * Get the protected and private properties of the class and return as an array. - */ - final public function getNonPublicProperties(): array - { - $exclude = ['view']; - $properties = []; - - $reflection = new ReflectionClass($this); - - foreach ($reflection->getProperties(ReflectionProperty::IS_PRIVATE | ReflectionProperty::IS_PROTECTED) as $property) { - if ($property->isStatic() || in_array($property->getName(), $exclude, true)) { - continue; - } - - $property->setAccessible(true); - $properties[] = $property; - } - - return $properties; - } -} diff --git a/system4.4.6/Typography/Typography.php b/system4.4.6/Typography/Typography.php deleted file mode 100644 index fd763cd5..00000000 --- a/system4.4.6/Typography/Typography.php +++ /dev/null @@ -1,342 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Typography; - -use Config\DocTypes; - -/** - * Typography Class - * - * @see \CodeIgniter\Typography\TypographyTest - */ -class Typography -{ - /** - * Block level elements that should not be wrapped inside <p> tags - * - * @var string - */ - public $blockElements = 'address|blockquote|div|dl|fieldset|form|h\d|hr|noscript|object|ol|p|pre|script|table|ul'; - - /** - * Elements that should not have <p> and <br> tags within them. - * - * @var string - */ - public $skipElements = 'p|pre|ol|ul|dl|object|table|h\d'; - - /** - * Tags we want the parser to completely ignore when splitting the string. - * - * @var string - */ - public $inlineElements = 'a|abbr|acronym|b|bdo|big|br|button|cite|code|del|dfn|em|i|img|ins|input|label|map|kbd|q|samp|select|small|span|strong|sub|sup|textarea|tt|var'; - - /** - * array of block level elements that require inner content to be within another block level element - * - * @var array - */ - public $innerBlockRequired = ['blockquote']; - - /** - * the last block element parsed - * - * @var string - */ - public $lastBlockElement = ''; - - /** - * whether or not to protect quotes within { curly braces } - * - * @var bool - */ - public $protectBracedQuotes = false; - - /** - * Auto Typography - * - * This function converts text, making it typographically correct: - * - Converts double spaces into paragraphs. - * - Converts single line breaks into <br> tags - * - Converts single and double quotes into correctly facing curly quote entities. - * - Converts three dots into ellipsis. - * - Converts double dashes into em-dashes. - * - Converts two spaces into entities - * - * @param bool $reduceLinebreaks whether to reduce more then two consecutive newlines to two - */ - public function autoTypography(string $str, bool $reduceLinebreaks = false): string - { - if ($str === '') { - return ''; - } - - // Standardize Newlines to make matching easier - if (strpos($str, "\r") !== false) { - $str = str_replace(["\r\n", "\r"], "\n", $str); - } - - // Reduce line breaks. If there are more than two consecutive linebreaks - // we'll compress them down to a maximum of two since there's no benefit to more. - if ($reduceLinebreaks === false) { - $str = preg_replace("/\n\n+/", "\n\n", $str); - } - - // HTML comment tags don't conform to patterns of normal tags, so pull them out separately, only if needed - $htmlComments = []; - if (strpos($str, '<!--') !== false && preg_match_all('#(<!\-\-.*?\-\->)#s', $str, $matches)) { - for ($i = 0, $total = count($matches[0]); $i < $total; $i++) { - $htmlComments[] = $matches[0][$i]; - $str = str_replace($matches[0][$i], '{@HC' . $i . '}', $str); - } - } - - // match and yank <pre> tags if they exist. It's cheaper to do this separately since most content will - // not contain <pre> tags, and it keeps the PCRE patterns below simpler and faster - if (strpos($str, '<pre') !== false) { - $str = preg_replace_callback('#<pre.*?>.*?</pre>#si', [$this, 'protectCharacters'], $str); - } - - // Convert quotes within tags to temporary markers. - $str = preg_replace_callback('#<.+?>#si', [$this, 'protectCharacters'], $str); - - // Do the same with braces if necessary - if ($this->protectBracedQuotes === false) { - $str = preg_replace_callback('#\{.+?\}#si', [$this, 'protectCharacters'], $str); - } - - // Convert "ignore" tags to temporary marker. The parser splits out the string at every tag - // it encounters. Certain inline tags, like image tags, links, span tags, etc. will be - // adversely affected if they are split out so we'll convert the opening bracket < temporarily to: {@TAG} - $str = preg_replace('#<(/*)(' . $this->inlineElements . ')([ >])#i', '{@TAG}\\1\\2\\3', $str); - - /* Split the string at every tag. This expression creates an array with this prototype: - * - * [array] - * { - * [0] = <opening tag> - * [1] = Content... - * [2] = <closing tag> - * Etc... - * } - */ - $chunks = preg_split('/(<(?:[^<>]+(?:"[^"]*"|\'[^\']*\')?)+>)/', $str, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); - - // Build our finalized string. We cycle through the array, skipping tags, and processing the contained text - $str = ''; - $process = true; - - for ($i = 0, $c = count($chunks) - 1; $i <= $c; $i++) { - // Are we dealing with a tag? If so, we'll skip the processing for this cycle. - // Well also set the "process" flag which allows us to skip <pre> tags and a few other things. - if (preg_match('#<(/*)(' . $this->blockElements . ').*?>#', $chunks[$i], $match)) { - if (preg_match('#' . $this->skipElements . '#', $match[2])) { - $process = ($match[1] === '/'); - } - - if ($match[1] === '') { - $this->lastBlockElement = $match[2]; - } - - $str .= $chunks[$i]; - - continue; - } - - if ($process === false) { - $str .= $chunks[$i]; - - continue; - } - - // Force a newline to make sure end tags get processed by _format_newlines() - if ($i === $c) { - $chunks[$i] .= "\n"; - } - - // Convert Newlines into <p> and <br> tags - $str .= $this->formatNewLines($chunks[$i]); - } - - // No opening block level tag? Add it if needed. - if (! preg_match('/^\s*<(?:' . $this->blockElements . ')/i', $str)) { - $str = preg_replace('/^(.*?)<(' . $this->blockElements . ')/i', '<p>$1</p><$2', $str); - } - - // Convert quotes, elipsis, em-dashes, non-breaking spaces, and ampersands - $str = $this->formatCharacters($str); - - foreach ($htmlComments as $i => $htmlComment) { - // remove surrounding paragraph tags, but only if there's an opening paragraph tag - // otherwise HTML comments at the ends of paragraphs will have the closing tag removed - // if '<p>{@HC1}' then replace <p>{@HC1}</p> with the comment, else replace only {@HC1} with the comment - $str = preg_replace('#(?(?=<p>\{@HC' . $i . '\})<p>\{@HC' . $i . '\}(\s*</p>)|\{@HC' . $i . '\})#s', $htmlComment, $str); - } - - // Final clean up - $table = [ - // If the user submitted their own paragraph tags within the text - // we will retain them instead of using our tags. - '/(<p[^>*?]>)<p>/' => '$1', // <?php BBEdit syntax coloring bug fix - // Reduce multiple instances of opening/closing paragraph tags to a single one - '#(</p>)+#' => '</p>', - '/(<p>\W*<p>)+/' => '<p>', - // Clean up stray paragraph tags that appear before block level elements - '#<p></p><(' . $this->blockElements . ')#' => '<$1', - // Clean up stray non-breaking spaces preceeding block elements - '#( \s*)+<(' . $this->blockElements . ')#' => ' <$2', - // Replace the temporary markers we added earlier - '/\{@TAG\}/' => '<', - '/\{@DQ\}/' => '"', - '/\{@SQ\}/' => "'", - '/\{@DD\}/' => '--', - '/\{@NBS\}/' => ' ', - // An unintended consequence of the _format_newlines function is that - // some of the newlines get truncated, resulting in <p> tags - // starting immediately after <block> tags on the same line. - // This forces a newline after such occurrences, which looks much nicer. - "/><p>\n/" => ">\n<p>", - // Similarly, there might be cases where a closing </block> will follow - // a closing </p> tag, so we'll correct it by adding a newline in between - '#</p></#' => "</p>\n</", - ]; - - // Do we need to reduce empty lines? - if ($reduceLinebreaks === true) { - $table['#<p>\n*</p>#'] = ''; - } else { - // If we have empty paragraph tags we add a non-breaking space - // otherwise most browsers won't treat them as true paragraphs - $table['#<p></p>#'] = '<p> </p>'; - } - - return preg_replace(array_keys($table), $table, $str); - } - - /** - * Format Characters - * - * This function mainly converts double and single quotes - * to curly entities, but it also converts em-dashes, - * double spaces, and ampersands - */ - public function formatCharacters(string $str): string - { - static $table; - - if (! isset($table)) { - $table = [ - // nested smart quotes, opening and closing - // note that rules for grammar (English) allow only for two levels deep - // and that single quotes are _supposed_ to always be on the outside - // but we'll accommodate both - // Note that in all cases, whitespace is the primary determining factor - // on which direction to curl, with non-word characters like punctuation - // being a secondary factor only after whitespace is addressed. - '/\'"(\s|$)/' => '’”$1', - '/(^|\s|<p>)\'"/' => '$1‘“', - '/\'"(\W)/' => '’”$1', - '/(\W)\'"/' => '$1‘“', - '/"\'(\s|$)/' => '”’$1', - '/(^|\s|<p>)"\'/' => '$1“‘', - '/"\'(\W)/' => '”’$1', - '/(\W)"\'/' => '$1“‘', - // single quote smart quotes - '/\'(\s|$)/' => '’$1', - '/(^|\s|<p>)\'/' => '$1‘', - '/\'(\W)/' => '’$1', - '/(\W)\'/' => '$1‘', - // double quote smart quotes - '/"(\s|$)/' => '”$1', - '/(^|\s|<p>)"/' => '$1“', - '/"(\W)/' => '”$1', - '/(\W)"/' => '$1“', - // apostrophes - '/(\w)\'(\w)/' => '$1’$2', - // Em dash and ellipses dots - '/\s?\-\-\s?/' => '—', - '/(\w)\.{3}/' => '$1…', - // double space after sentences - '/(\W) /' => '$1 ', - // ampersands, if not a character entity - '/&(?!#?[a-zA-Z0-9]{2,};)/' => '&', - ]; - } - - return preg_replace(array_keys($table), $table, $str); - } - - /** - * Format Newlines - * - * Converts newline characters into either <p> tags or <br> - */ - protected function formatNewLines(string $str): string - { - if ($str === '' || (strpos($str, "\n") === false && ! in_array($this->lastBlockElement, $this->innerBlockRequired, true))) { - return $str; - } - - // Convert two consecutive newlines to paragraphs - $str = str_replace("\n\n", "</p>\n\n<p>", $str); - - // Convert single spaces to <br> tags - $br = '<br' . _solidus() . '>'; - $str = preg_replace("/([^\n])(\n)([^\n])/", '\\1' . $br . '\\2\\3', $str); - - // Wrap the whole enchilada in enclosing paragraphs - if ($str !== "\n") { - // We trim off the right-side new line so that the closing </p> tag - // will be positioned immediately following the string, matching - // the behavior of the opening <p> tag - $str = '<p>' . rtrim($str) . '</p>'; - } - - // Remove empty paragraphs if they are on the first line, as this - // is a potential unintended consequence of the previous code - return preg_replace('/<p><\/p>(.*)/', '\\1', $str, 1); - } - - /** - * Protect Characters - * - * Protects special characters from being formatted later - * We don't want quotes converted within tags so we'll temporarily convert them to {@DQ} and {@SQ} - * and we don't want double dashes converted to emdash entities, so they are marked with {@DD} - * likewise double spaces are converted to {@NBS} to prevent entity conversion - */ - protected function protectCharacters(array $match): string - { - return str_replace(["'", '"', '--', ' '], ['{@SQ}', '{@DQ}', '{@DD}', '{@NBS}'], $match[0]); - } - - /** - * Convert newlines to HTML line breaks except within PRE tags - */ - public function nl2brExceptPre(string $str): string - { - $newstr = ''; - $docTypes = new DocTypes(); - - for ($ex = explode('pre>', $str), $ct = count($ex), $i = 0; $i < $ct; $i++) { - $xhtml = ! ($docTypes->html5 ?? false); - $newstr .= (($i % 2) === 0) ? nl2br($ex[$i], $xhtml) : $ex[$i]; - - if ($ct - 1 !== $i) { - $newstr .= 'pre>'; - } - } - - return $newstr; - } -} diff --git a/system4.4.6/Validation/CreditCardRules.php b/system4.4.6/Validation/CreditCardRules.php deleted file mode 100644 index 8e17b75d..00000000 --- a/system4.4.6/Validation/CreditCardRules.php +++ /dev/null @@ -1,281 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Validation; - -/** - * Class CreditCardRules - * - * Provides validation methods for common credit-card inputs. - * - * @see http://en.wikipedia.org/wiki/Credit_card_number - * @see \CodeIgniter\Validation\CreditCardRulesTest - */ -class CreditCardRules -{ - /** - * The cards that we support, with the defining details: - * - * name - The type of card as found in the form. Must match the user's value - * length - List of possible lengths for the card number - * prefixes - List of possible prefixes for the card - * checkdigit - Boolean on whether we should do a modulus10 check on the numbers. - * - * @var array - */ - protected $cards = [ - 'American Express' => [ - 'name' => 'amex', - 'length' => '15', - 'prefixes' => '34,37', - 'checkdigit' => true, - ], - 'China UnionPay' => [ - 'name' => 'unionpay', - 'length' => '16,17,18,19', - 'prefixes' => '62', - 'checkdigit' => true, - ], - 'Dankort' => [ - 'name' => 'dankort', - 'length' => '16', - 'prefixes' => '5019,4175,4571,4', - 'checkdigit' => true, - ], - 'DinersClub' => [ - 'name' => 'dinersclub', - 'length' => '14,16', - 'prefixes' => '300,301,302,303,304,305,309,36,38,39,54,55', - 'checkdigit' => true, - ], - 'DinersClub CarteBlanche' => [ - 'name' => 'carteblanche', - 'length' => '14', - 'prefixes' => '300,301,302,303,304,305', - 'checkdigit' => true, - ], - 'Discover Card' => [ - 'name' => 'discover', - 'length' => '16,19', - 'prefixes' => '6011,622,644,645,656,647,648,649,65', - 'checkdigit' => true, - ], - 'InterPayment' => [ - 'name' => 'interpayment', - 'length' => '16,17,18,19', - 'prefixes' => '4', - 'checkdigit' => true, - ], - 'JCB' => [ - 'name' => 'jcb', - 'length' => '16,17,18,19', - 'prefixes' => '352,353,354,355,356,357,358', - 'checkdigit' => true, - ], - 'Maestro' => [ - 'name' => 'maestro', - 'length' => '12,13,14,15,16,18,19', - 'prefixes' => '50,56,57,58,59,60,61,62,63,64,65,66,67,68,69', - 'checkdigit' => true, - ], - 'MasterCard' => [ - 'name' => 'mastercard', - 'length' => '16', - 'prefixes' => '51,52,53,54,55,22,23,24,25,26,27', - 'checkdigit' => true, - ], - 'NSPK MIR' => [ - 'name' => 'mir', - 'length' => '16', - 'prefixes' => '2200,2201,2202,2203,2204', - 'checkdigit' => true, - ], - 'Troy' => [ - 'name' => 'troy', - 'length' => '16', - 'prefixes' => '979200,979289', - 'checkdigit' => true, - ], - 'UATP' => [ - 'name' => 'uatp', - 'length' => '15', - 'prefixes' => '1', - 'checkdigit' => true, - ], - 'Verve' => [ - 'name' => 'verve', - 'length' => '16,19', - 'prefixes' => '506,650', - 'checkdigit' => true, - ], - 'Visa' => [ - 'name' => 'visa', - 'length' => '13,16,19', - 'prefixes' => '4', - 'checkdigit' => true, - ], - // Canadian Cards - 'BMO ABM Card' => [ - 'name' => 'bmoabm', - 'length' => '16', - 'prefixes' => '500', - 'checkdigit' => false, - ], - 'CIBC Convenience Card' => [ - 'name' => 'cibc', - 'length' => '16', - 'prefixes' => '4506', - 'checkdigit' => false, - ], - 'HSBC Canada Card' => [ - 'name' => 'hsbc', - 'length' => '16', - 'prefixes' => '56', - 'checkdigit' => false, - ], - 'Royal Bank of Canada Client Card' => [ - 'name' => 'rbc', - 'length' => '16', - 'prefixes' => '45', - 'checkdigit' => false, - ], - 'Scotiabank Scotia Card' => [ - 'name' => 'scotia', - 'length' => '16', - 'prefixes' => '4536', - 'checkdigit' => false, - ], - 'TD Canada Trust Access Card' => [ - 'name' => 'tdtrust', - 'length' => '16', - 'prefixes' => '589297', - 'checkdigit' => false, - ], - ]; - - /** - * Verifies that a credit card number is valid and matches the known - * formats for a wide number of credit card types. This does not verify - * that the card is a valid card, only that the number is formatted correctly. - * - * Example: - * $rules = [ - * 'cc_num' => 'valid_cc_number[visa]' - * ]; - */ - public function valid_cc_number(?string $ccNumber, string $type): bool - { - $type = strtolower($type); - $info = null; - - // Get our card info based on provided name. - foreach ($this->cards as $card) { - if ($card['name'] === $type) { - $info = $card; - break; - } - } - - // If empty, it's not a card type we recognize, or invalid type. - if ($info === null) { - return false; - } - - // Make sure we have a valid length - if ((string) $ccNumber === '') { - return false; - } - - // Remove any spaces and dashes - $ccNumber = str_replace([' ', '-'], '', $ccNumber); - - // Non-numeric values cannot be a number...duh - if (! is_numeric($ccNumber)) { - return false; - } - - // Make sure it's a valid length for this card - $lengths = explode(',', $info['length']); - - if (! in_array((string) strlen($ccNumber), $lengths, true)) { - return false; - } - - // Make sure it has a valid prefix - $prefixes = explode(',', $info['prefixes']); - - $validPrefix = false; - - foreach ($prefixes as $prefix) { - if (strpos($ccNumber, $prefix) === 0) { - $validPrefix = true; - break; - } - } - - if ($validPrefix === false) { - return false; - } - - // Still here? Then check the number against the Luhn algorithm, if required - // @see https://en.wikipedia.org/wiki/Luhn_algorithm - // @see https://gist.github.com/troelskn/1287893 - if ($info['checkdigit'] === true) { - return $this->isValidLuhn($ccNumber); - } - - return true; - } - - /** - * Checks the given number to see if the number passing a Luhn check. - */ - protected function isValidLuhn(?string $number = null): bool - { - $number = (string) $number; - - $sumTable = [ - [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - ], - [ - 0, - 2, - 4, - 6, - 8, - 1, - 3, - 5, - 7, - 9, - ], - ]; - - $sum = 0; - $flip = 0; - - for ($i = strlen($number) - 1; $i >= 0; $i--) { - $sum += $sumTable[$flip++ & 0x1][$number[$i]]; - } - - return $sum % 10 === 0; - } -} diff --git a/system4.4.6/Validation/DotArrayFilter.php b/system4.4.6/Validation/DotArrayFilter.php deleted file mode 100644 index 1ba9b92f..00000000 --- a/system4.4.6/Validation/DotArrayFilter.php +++ /dev/null @@ -1,112 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Validation; - -/** - * @see \CodeIgniter\Validation\DotArrayFilterTest - */ -final class DotArrayFilter -{ - /** - * Creates a new array with only the elements specified in dot array syntax. - * - * This code comes from the dot_array_search() function. - * - * @param array $indexes The dot array syntax pattern to use for filtering. - * @param array $array The array to filter. - * - * @return array The filtered array. - */ - public static function run(array $indexes, array $array): array - { - $result = []; - - foreach ($indexes as $index) { - // See https://regex101.com/r/44Ipql/1 - $segments = preg_split( - '/(?<!\\\\)\./', - rtrim($index, '* '), - 0, - PREG_SPLIT_NO_EMPTY - ); - - $segments = array_map( - static fn ($key) => str_replace('\.', '.', $key), - $segments - ); - - $result = array_replace_recursive($result, self::filter($segments, $array)); - } - - return $result; - } - - /** - * Used by `run()` to recursively filter the array with wildcards. - * - * @param array $indexes The dot array syntax pattern to use for filtering. - * @param array $array The array to filter. - * - * @return array The filtered array. - */ - private static function filter(array $indexes, array $array): array - { - // If index is empty, returns empty array. - if ($indexes === []) { - return []; - } - - // Grab the current index. - $currentIndex = array_shift($indexes); - - if (! isset($array[$currentIndex]) && $currentIndex !== '*') { - return []; - } - - // Handle Wildcard (*) - if ($currentIndex === '*') { - $answer = []; - - foreach ($array as $key => $value) { - if (! is_array($value)) { - continue; - } - - $result = self::filter($indexes, $value); - - if ($result !== []) { - $answer[$key] = $result; - } - } - - return $answer; - } - - // If this is the last index, make sure to return it now, - // and not try to recurse through things. - if ($indexes === []) { - return [$currentIndex => $array[$currentIndex]]; - } - - // Do we need to recursively filter this value? - if (is_array($array[$currentIndex]) && $array[$currentIndex] !== []) { - $result = self::filter($indexes, $array[$currentIndex]); - - if ($result !== []) { - return [$currentIndex => $result]; - } - } - - // Otherwise, not found. - return []; - } -} diff --git a/system4.4.6/Validation/Exceptions/ValidationException.php b/system4.4.6/Validation/Exceptions/ValidationException.php deleted file mode 100644 index 83772adb..00000000 --- a/system4.4.6/Validation/Exceptions/ValidationException.php +++ /dev/null @@ -1,67 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Validation\Exceptions; - -use CodeIgniter\Exceptions\FrameworkException; - -class ValidationException extends FrameworkException -{ - /** - * Throws when the validation rule is not found. - * - * @return static - */ - public static function forRuleNotFound(?string $rule = null) - { - return new static(lang('Validation.ruleNotFound', [$rule])); - } - - /** - * Throws when the group value of config is not set. - * - * @return static - */ - public static function forGroupNotFound(?string $group = null) - { - return new static(lang('Validation.groupNotFound', [$group])); - } - - /** - * Throws when the group value of config is not array type. - * - * @return static - */ - public static function forGroupNotArray(?string $group = null) - { - return new static(lang('Validation.groupNotArray', [$group])); - } - - /** - * Throws when the template of config is invalid. - * - * @return static - */ - public static function forInvalidTemplate(?string $template = null) - { - return new static(lang('Validation.invalidTemplate', [$template])); - } - - /** - * Throws when there is no any rule set. - * - * @return static - */ - public static function forNoRuleSets() - { - return new static(lang('Validation.noRuleSets')); - } -} diff --git a/system4.4.6/Validation/FileRules.php b/system4.4.6/Validation/FileRules.php deleted file mode 100644 index ce0ed814..00000000 --- a/system4.4.6/Validation/FileRules.php +++ /dev/null @@ -1,256 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Validation; - -use CodeIgniter\HTTP\CLIRequest; -use CodeIgniter\HTTP\IncomingRequest; -use CodeIgniter\HTTP\RequestInterface; -use Config\Mimes; -use Config\Services; -use InvalidArgumentException; - -/** - * File validation rules - * - * @see \CodeIgniter\Validation\FileRulesTest - */ -class FileRules -{ - /** - * Request instance. So we can get access to the files. - * - * @var IncomingRequest - */ - protected $request; - - /** - * Constructor. - */ - public function __construct(?RequestInterface $request = null) - { - if ($request === null) { - $request = Services::request(); - } - - assert($request instanceof IncomingRequest || $request instanceof CLIRequest); - - $this->request = $request; - } - - /** - * Verifies that $name is the name of a valid uploaded file. - */ - public function uploaded(?string $blank, string $name): bool - { - if (! ($files = $this->request->getFileMultiple($name))) { - $files = [$this->request->getFile($name)]; - } - - foreach ($files as $file) { - if ($file === null) { - return false; - } - - if (ENVIRONMENT === 'testing') { - if ($file->getError() !== 0) { - return false; - } - } else { - // Note: cannot unit test this; no way to over-ride ENVIRONMENT? - // @codeCoverageIgnoreStart - if (! $file->isValid()) { - return false; - } - // @codeCoverageIgnoreEnd - } - } - - return true; - } - - /** - * Verifies if the file's size in Kilobytes is no larger than the parameter. - */ - public function max_size(?string $blank, string $params): bool - { - // Grab the file name off the top of the $params - // after we split it. - $paramArray = explode(',', $params); - if (count($paramArray) !== 2) { - throw new InvalidArgumentException('Invalid max_size parameter: "' . $params . '"'); - } - $name = array_shift($paramArray); - - if (! ($files = $this->request->getFileMultiple($name))) { - $files = [$this->request->getFile($name)]; - } - - foreach ($files as $file) { - if ($file === null) { - return false; - } - - if ($file->getError() === UPLOAD_ERR_NO_FILE) { - return true; - } - - if ($file->getError() === UPLOAD_ERR_INI_SIZE) { - return false; - } - - if ($file->getSize() / 1024 > $paramArray[0]) { - return false; - } - } - - return true; - } - - /** - * Uses the mime config file to determine if a file is considered an "image", - * which for our purposes basically means that it's a raster image or svg. - */ - public function is_image(?string $blank, string $params): bool - { - // Grab the file name off the top of the $params - // after we split it. - $params = explode(',', $params); - $name = array_shift($params); - - if (! ($files = $this->request->getFileMultiple($name))) { - $files = [$this->request->getFile($name)]; - } - - foreach ($files as $file) { - if ($file === null) { - return false; - } - - if ($file->getError() === UPLOAD_ERR_NO_FILE) { - return true; - } - - // We know that our mimes list always has the first mime - // start with `image` even when then are multiple accepted types. - $type = Mimes::guessTypeFromExtension($file->getExtension()) ?? ''; - - if (mb_strpos($type, 'image') !== 0) { - return false; - } - } - - return true; - } - - /** - * Checks to see if an uploaded file's mime type matches one in the parameter. - */ - public function mime_in(?string $blank, string $params): bool - { - // Grab the file name off the top of the $params - // after we split it. - $params = explode(',', $params); - $name = array_shift($params); - - if (! ($files = $this->request->getFileMultiple($name))) { - $files = [$this->request->getFile($name)]; - } - - foreach ($files as $file) { - if ($file === null) { - return false; - } - - if ($file->getError() === UPLOAD_ERR_NO_FILE) { - return true; - } - - if (! in_array($file->getMimeType(), $params, true)) { - return false; - } - } - - return true; - } - - /** - * Checks to see if an uploaded file's extension matches one in the parameter. - */ - public function ext_in(?string $blank, string $params): bool - { - // Grab the file name off the top of the $params - // after we split it. - $params = explode(',', $params); - $name = array_shift($params); - - if (! ($files = $this->request->getFileMultiple($name))) { - $files = [$this->request->getFile($name)]; - } - - foreach ($files as $file) { - if ($file === null) { - return false; - } - - if ($file->getError() === UPLOAD_ERR_NO_FILE) { - return true; - } - - if (! in_array($file->guessExtension(), $params, true)) { - return false; - } - } - - return true; - } - - /** - * Checks an uploaded file to verify that the dimensions are within - * a specified allowable dimension. - */ - public function max_dims(?string $blank, string $params): bool - { - // Grab the file name off the top of the $params - // after we split it. - $params = explode(',', $params); - $name = array_shift($params); - - if (! ($files = $this->request->getFileMultiple($name))) { - $files = [$this->request->getFile($name)]; - } - - foreach ($files as $file) { - if ($file === null) { - return false; - } - - if ($file->getError() === UPLOAD_ERR_NO_FILE) { - return true; - } - - // Get Parameter sizes - $allowedWidth = $params[0] ?? 0; - $allowedHeight = $params[1] ?? 0; - - // Get uploaded image size - $info = getimagesize($file->getTempName()); - $fileWidth = $info[0]; - $fileHeight = $info[1]; - - if ($fileWidth > $allowedWidth || $fileHeight > $allowedHeight) { - return false; - } - } - - return true; - } -} diff --git a/system4.4.6/Validation/FormatRules.php b/system4.4.6/Validation/FormatRules.php deleted file mode 100644 index 88775d14..00000000 --- a/system4.4.6/Validation/FormatRules.php +++ /dev/null @@ -1,352 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Validation; - -use DateTime; - -/** - * Format validation Rules. - * - * @see \CodeIgniter\Validation\FormatRulesTest - */ -class FormatRules -{ - /** - * Alpha - */ - public function alpha(?string $str = null): bool - { - return ctype_alpha($str ?? ''); - } - - /** - * Alpha with spaces. - * - * @param string|null $value Value. - * - * @return bool True if alpha with spaces, else false. - */ - public function alpha_space(?string $value = null): bool - { - if ($value === null) { - return true; - } - - // @see https://regex101.com/r/LhqHPO/1 - return (bool) preg_match('/\A[A-Z ]+\z/i', $value); - } - - /** - * Alphanumeric with underscores and dashes - * - * @see https://regex101.com/r/XfVY3d/1 - */ - public function alpha_dash(?string $str = null): bool - { - if ($str === null) { - return false; - } - - return preg_match('/\A[a-z0-9_-]+\z/i', $str) === 1; - } - - /** - * Alphanumeric, spaces, and a limited set of punctuation characters. - * Accepted punctuation characters are: ~ tilde, ! exclamation, - * # number, $ dollar, % percent, & ampersand, * asterisk, - dash, - * _ underscore, + plus, = equals, | vertical bar, : colon, . period - * ~ ! # $ % & * - _ + = | : . - * - * @param string|null $str - * - * @return bool - * - * @see https://regex101.com/r/6N8dDY/1 - */ - public function alpha_numeric_punct($str) - { - if ($str === null) { - return false; - } - - return preg_match('/\A[A-Z0-9 ~!#$%\&\*\-_+=|:.]+\z/i', $str) === 1; - } - - /** - * Alphanumeric - */ - public function alpha_numeric(?string $str = null): bool - { - return ctype_alnum($str ?? ''); - } - - /** - * Alphanumeric w/ spaces - */ - public function alpha_numeric_space(?string $str = null): bool - { - // @see https://regex101.com/r/0AZDME/1 - return (bool) preg_match('/\A[A-Z0-9 ]+\z/i', $str ?? ''); - } - - /** - * Any type of string - * - * Note: we specifically do NOT type hint $str here so that - * it doesn't convert numbers into strings. - * - * @param string|null $str - */ - public function string($str = null): bool - { - return is_string($str); - } - - /** - * Decimal number - */ - public function decimal(?string $str = null): bool - { - // @see https://regex101.com/r/HULifl/2/ - return (bool) preg_match('/\A[-+]?\d{0,}\.?\d+\z/', $str ?? ''); - } - - /** - * String of hexidecimal characters - */ - public function hex(?string $str = null): bool - { - return ctype_xdigit($str ?? ''); - } - - /** - * Integer - */ - public function integer(?string $str = null): bool - { - return (bool) preg_match('/\A[\-+]?\d+\z/', $str ?? ''); - } - - /** - * Is a Natural number (0,1,2,3, etc.) - */ - public function is_natural(?string $str = null): bool - { - return ctype_digit($str ?? ''); - } - - /** - * Is a Natural number, but not a zero (1,2,3, etc.) - */ - public function is_natural_no_zero(?string $str = null): bool - { - return $str !== '0' && ctype_digit($str ?? ''); - } - - /** - * Numeric - */ - public function numeric(?string $str = null): bool - { - // @see https://regex101.com/r/bb9wtr/2 - return (bool) preg_match('/\A[\-+]?\d*\.?\d+\z/', $str ?? ''); - } - - /** - * Compares value against a regular expression pattern. - */ - public function regex_match(?string $str, string $pattern): bool - { - if (strpos($pattern, '/') !== 0) { - $pattern = "/{$pattern}/"; - } - - return (bool) preg_match($pattern, $str ?? ''); - } - - /** - * Validates that the string is a valid timezone as per the - * timezone_identifiers_list function. - * - * @see http://php.net/manual/en/datetimezone.listidentifiers.php - */ - public function timezone(?string $str = null): bool - { - return in_array($str ?? '', timezone_identifiers_list(), true); - } - - /** - * Valid Base64 - * - * Tests a string for characters outside of the Base64 alphabet - * as defined by RFC 2045 http://www.faqs.org/rfcs/rfc2045 - */ - public function valid_base64(?string $str = null): bool - { - if ($str === null) { - return false; - } - - return base64_encode(base64_decode($str, true)) === $str; - } - - /** - * Valid JSON - */ - public function valid_json(?string $str = null): bool - { - json_decode($str ?? ''); - - return json_last_error() === JSON_ERROR_NONE; - } - - /** - * Checks for a correctly formatted email address - */ - public function valid_email(?string $str = null): bool - { - // @see https://regex101.com/r/wlJG1t/1/ - if (function_exists('idn_to_ascii') && defined('INTL_IDNA_VARIANT_UTS46') && preg_match('#\A([^@]+)@(.+)\z#', $str ?? '', $matches)) { - $str = $matches[1] . '@' . idn_to_ascii($matches[2], 0, INTL_IDNA_VARIANT_UTS46); - } - - return (bool) filter_var($str, FILTER_VALIDATE_EMAIL); - } - - /** - * Validate a comma-separated list of email addresses. - * - * Example: - * valid_emails[one@example.com,two@example.com] - */ - public function valid_emails(?string $str = null): bool - { - foreach (explode(',', $str ?? '') as $email) { - $email = trim($email); - - if ($email === '') { - return false; - } - - if ($this->valid_email($email) === false) { - return false; - } - } - - return true; - } - - /** - * Validate an IP address (human readable format or binary string - inet_pton) - * - * @param string|null $which IP protocol: 'ipv4' or 'ipv6' - */ - public function valid_ip(?string $ip = null, ?string $which = null): bool - { - if ($ip === null || $ip === '') { - return false; - } - - switch (strtolower($which ?? '')) { - case 'ipv4': - $option = FILTER_FLAG_IPV4; - break; - - case 'ipv6': - $option = FILTER_FLAG_IPV6; - break; - - default: - $option = 0; - } - - return filter_var($ip, FILTER_VALIDATE_IP, $option) !== false - || (! ctype_print($ip) && filter_var(inet_ntop($ip), FILTER_VALIDATE_IP, $option) !== false); - } - - /** - * Checks a string to ensure it is (loosely) a URL. - * - * Warning: this rule will pass basic strings like - * "banana"; use valid_url_strict for a stricter rule. - */ - public function valid_url(?string $str = null): bool - { - if ($str === null || $str === '') { - return false; - } - - if (preg_match('/\A(?:([^:]*)\:)?\/\/(.+)\z/', $str, $matches)) { - if (! in_array($matches[1], ['http', 'https'], true)) { - return false; - } - - $str = $matches[2]; - } - - $str = 'http://' . $str; - - return filter_var($str, FILTER_VALIDATE_URL) !== false; - } - - /** - * Checks a URL to ensure it's formed correctly. - * - * @param string|null $validSchemes comma separated list of allowed schemes - */ - public function valid_url_strict(?string $str = null, ?string $validSchemes = null): bool - { - if ($str === null || $str === '' || $str === '0') { - return false; - } - - // parse_url() may return null and false - $scheme = strtolower((string) parse_url($str, PHP_URL_SCHEME)); - $validSchemes = explode( - ',', - strtolower($validSchemes ?? 'http,https') - ); - - return in_array($scheme, $validSchemes, true) - && filter_var($str, FILTER_VALIDATE_URL) !== false; - } - - /** - * Checks for a valid date and matches a given date format - * - * @param non-empty-string|null $format - */ - public function valid_date(?string $str = null, ?string $format = null): bool - { - if ($str === null) { - return false; - } - - if ($format === null || $format === '') { - return strtotime($str) !== false; - } - - $date = DateTime::createFromFormat($format, $str); - $errors = DateTime::getLastErrors(); - - if ($date === false) { - return false; - } - - // PHP 8.2 or later. - if ($errors === false) { - return true; - } - - return $errors['warning_count'] === 0 && $errors['error_count'] === 0; - } -} diff --git a/system4.4.6/Validation/Rules.php b/system4.4.6/Validation/Rules.php deleted file mode 100644 index 7a051f90..00000000 --- a/system4.4.6/Validation/Rules.php +++ /dev/null @@ -1,357 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Validation; - -use Config\Database; -use InvalidArgumentException; - -/** - * Validation Rules. - * - * @see \CodeIgniter\Validation\RulesTest - */ -class Rules -{ - /** - * The value does not match another field in $data. - * - * @param string|null $str - * @param array $data Other field/value pairs - */ - public function differs($str, string $field, array $data): bool - { - if (strpos($field, '.') !== false) { - return $str !== dot_array_search($field, $data); - } - - return array_key_exists($field, $data) && $str !== $data[$field]; - } - - /** - * Equals the static value provided. - */ - public function equals(?string $str, string $val): bool - { - return $str === $val; - } - - /** - * Returns true if $str is $val characters long. - * $val = "5" (one) | "5,8,12" (multiple values) - */ - public function exact_length(?string $str, string $val): bool - { - $val = explode(',', $val); - - foreach ($val as $tmp) { - if (is_numeric($tmp) && (int) $tmp === mb_strlen($str ?? '')) { - return true; - } - } - - return false; - } - - /** - * Greater than - */ - public function greater_than(?string $str, string $min): bool - { - return is_numeric($str) && $str > $min; - } - - /** - * Equal to or Greater than - */ - public function greater_than_equal_to(?string $str, string $min): bool - { - return is_numeric($str) && $str >= $min; - } - - /** - * Checks the database to see if the given value exist. - * Can ignore records by field/value to filter (currently - * accept only one filter). - * - * Example: - * is_not_unique[table.field,where_field,where_value] - * is_not_unique[menu.id,active,1] - */ - public function is_not_unique(?string $str, string $field, array $data): bool - { - // Grab any data for exclusion of a single row. - [$field, $whereField, $whereValue] = array_pad( - explode(',', $field), - 3, - null - ); - - // Break the table and field apart - sscanf($field, '%[^.].%[^.]', $table, $field); - - $row = Database::connect($data['DBGroup'] ?? null) - ->table($table) - ->select('1') - ->where($field, $str) - ->limit(1); - - if ( - $whereField !== null && $whereField !== '' - && $whereValue !== null && $whereValue !== '' - && ! preg_match('/^\{(\w+)\}$/', $whereValue) - ) { - $row = $row->where($whereField, $whereValue); - } - - return $row->get()->getRow() !== null; - } - - /** - * Value should be within an array of values - */ - public function in_list(?string $value, string $list): bool - { - $list = array_map('trim', explode(',', $list)); - - return in_array($value, $list, true); - } - - /** - * Checks the database to see if the given value is unique. Can - * ignore a single record by field/value to make it useful during - * record updates. - * - * Example: - * is_unique[table.field,ignore_field,ignore_value] - * is_unique[users.email,id,5] - */ - public function is_unique(?string $str, string $field, array $data): bool - { - [$field, $ignoreField, $ignoreValue] = array_pad( - explode(',', $field), - 3, - null - ); - - sscanf($field, '%[^.].%[^.]', $table, $field); - - $row = Database::connect($data['DBGroup'] ?? null) - ->table($table) - ->select('1') - ->where($field, $str) - ->limit(1); - - if ( - $ignoreField !== null && $ignoreField !== '' - && $ignoreValue !== null && $ignoreValue !== '' - && ! preg_match('/^\{(\w+)\}$/', $ignoreValue) - ) { - $row = $row->where("{$ignoreField} !=", $ignoreValue); - } - - return $row->get()->getRow() === null; - } - - /** - * Less than - */ - public function less_than(?string $str, string $max): bool - { - return is_numeric($str) && $str < $max; - } - - /** - * Equal to or Less than - */ - public function less_than_equal_to(?string $str, string $max): bool - { - return is_numeric($str) && $str <= $max; - } - - /** - * Matches the value of another field in $data. - * - * @param string|null $str - * @param array $data Other field/value pairs - */ - public function matches($str, string $field, array $data): bool - { - if (strpos($field, '.') !== false) { - return $str === dot_array_search($field, $data); - } - - return isset($data[$field]) && $str === $data[$field]; - } - - /** - * Returns true if $str is $val or fewer characters in length. - */ - public function max_length(?string $str, string $val): bool - { - return is_numeric($val) && $val >= mb_strlen($str ?? ''); - } - - /** - * Returns true if $str is at least $val length. - */ - public function min_length(?string $str, string $val): bool - { - return is_numeric($val) && $val <= mb_strlen($str ?? ''); - } - - /** - * Does not equal the static value provided. - */ - public function not_equals(?string $str, string $val): bool - { - return $str !== $val; - } - - /** - * Value should not be within an array of values. - */ - public function not_in_list(?string $value, string $list): bool - { - return ! $this->in_list($value, $list); - } - - /** - * @param array|bool|float|int|object|string|null $str - */ - public function required($str = null): bool - { - if ($str === null) { - return false; - } - - if (is_object($str)) { - return true; - } - - if (is_array($str)) { - return $str !== []; - } - - return trim((string) $str) !== ''; - } - - /** - * The field is required when any of the other required fields are present - * in the data. - * - * Example (field is required when the password field is present): - * - * required_with[password] - * - * @param string|null $str - * @param string|null $fields List of fields that we should check if present - * @param array $data Complete list of fields from the form - */ - public function required_with($str = null, ?string $fields = null, array $data = []): bool - { - if ($fields === null || $data === []) { - throw new InvalidArgumentException('You must supply the parameters: fields, data.'); - } - - // If the field is present we can safely assume that - // the field is here, no matter whether the corresponding - // search field is present or not. - $present = $this->required($str ?? ''); - - if ($present) { - return true; - } - - // Still here? Then we fail this test if - // any of the fields are present in $data - // as $fields is the list - $requiredFields = []; - - foreach (explode(',', $fields) as $field) { - if ( - (array_key_exists($field, $data) - && ! empty($data[$field])) // @phpstan-ignore-line Use empty() - || (strpos($field, '.') !== false - && ! empty(dot_array_search($field, $data))) // @phpstan-ignore-line Use empty() - ) { - $requiredFields[] = $field; - } - } - - return $requiredFields === []; - } - - /** - * The field is required when all the other fields are present - * in the data but not required. - * - * Example (field is required when the id or email field is missing): - * - * required_without[id,email] - * - * @param string|null $str - * @param string|null $otherFields The param fields of required_without[]. - * @param string|null $field This rule param fields aren't present, this field is required. - */ - public function required_without( - $str = null, - ?string $otherFields = null, - array $data = [], - ?string $error = null, - ?string $field = null - ): bool { - if ($otherFields === null || $data === []) { - throw new InvalidArgumentException('You must supply the parameters: otherFields, data.'); - } - - // If the field is present we can safely assume that - // the field is here, no matter whether the corresponding - // search field is present or not. - $present = $this->required($str ?? ''); - - if ($present) { - return true; - } - - // Still here? Then we fail this test if - // any of the fields are not present in $data - foreach (explode(',', $otherFields) as $otherField) { - if ( - (strpos($otherField, '.') === false) - && (! array_key_exists($otherField, $data) - || empty($data[$otherField])) // @phpstan-ignore-line Use empty() - ) { - return false; - } - - if (strpos($otherField, '.') !== false) { - if ($field === null) { - throw new InvalidArgumentException('You must supply the parameters: field.'); - } - - $fieldData = dot_array_search($otherField, $data); - $fieldSplitArray = explode('.', $field); - $fieldKey = $fieldSplitArray[1]; - - if (is_array($fieldData)) { - return ! empty(dot_array_search($otherField, $data)[$fieldKey]); // @phpstan-ignore-line Use empty() - } - $nowField = str_replace('*', $fieldKey, $otherField); - $nowFieldVaule = dot_array_search($nowField, $data); - - return null !== $nowFieldVaule; - } - } - - return true; - } -} diff --git a/system4.4.6/Validation/StrictRules/CreditCardRules.php b/system4.4.6/Validation/StrictRules/CreditCardRules.php deleted file mode 100644 index 2ceacdc6..00000000 --- a/system4.4.6/Validation/StrictRules/CreditCardRules.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php - -declare(strict_types=1); - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Validation\StrictRules; - -use CodeIgniter\Validation\CreditCardRules as NonStrictCreditCardRules; - -/** - * Class CreditCardRules - * - * Provides validation methods for common credit-card inputs. - * - * @see http://en.wikipedia.org/wiki/Credit_card_number - * @see \CodeIgniter\Validation\StrictRules\CreditCardRulesTest - */ -class CreditCardRules -{ - private NonStrictCreditCardRules $nonStrictCreditCardRules; - - public function __construct() - { - $this->nonStrictCreditCardRules = new NonStrictCreditCardRules(); - } - - /** - * Verifies that a credit card number is valid and matches the known - * formats for a wide number of credit card types. This does not verify - * that the card is a valid card, only that the number is formatted correctly. - * - * Example: - * $rules = [ - * 'cc_num' => 'valid_cc_number[visa]' - * ]; - * - * @param array|bool|float|int|object|string|null $ccNumber - */ - public function valid_cc_number($ccNumber, string $type): bool - { - if (! is_string($ccNumber)) { - return false; - } - - return $this->nonStrictCreditCardRules->valid_cc_number($ccNumber, $type); - } -} diff --git a/system4.4.6/Validation/StrictRules/FileRules.php b/system4.4.6/Validation/StrictRules/FileRules.php deleted file mode 100644 index e86b84e9..00000000 --- a/system4.4.6/Validation/StrictRules/FileRules.php +++ /dev/null @@ -1,25 +0,0 @@ -<?php - -declare(strict_types=1); - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Validation\StrictRules; - -use CodeIgniter\Validation\FileRules as NonStrictFileRules; - -/** - * File validation rules - * - * @see \CodeIgniter\Validation\StrictRules\FileRulesTest - */ -class FileRules extends NonStrictFileRules -{ -} diff --git a/system4.4.6/Validation/StrictRules/FormatRules.php b/system4.4.6/Validation/StrictRules/FormatRules.php deleted file mode 100644 index c186a75b..00000000 --- a/system4.4.6/Validation/StrictRules/FormatRules.php +++ /dev/null @@ -1,411 +0,0 @@ -<?php - -declare(strict_types=1); - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Validation\StrictRules; - -use CodeIgniter\Validation\FormatRules as NonStrictFormatRules; - -/** - * Format validation Rules. - * - * @see \CodeIgniter\Validation\StrictRules\FormatRulesTest - */ -class FormatRules -{ - private NonStrictFormatRules $nonStrictFormatRules; - - public function __construct() - { - $this->nonStrictFormatRules = new NonStrictFormatRules(); - } - - /** - * Alpha - * - * @param array|bool|float|int|object|string|null $str - */ - public function alpha($str = null): bool - { - if (! is_string($str)) { - return false; - } - - return $this->nonStrictFormatRules->alpha($str); - } - - /** - * Alpha with spaces. - * - * @param array|bool|float|int|object|string|null $value Value. - * - * @return bool True if alpha with spaces, else false. - */ - public function alpha_space($value = null): bool - { - if (! is_string($value)) { - return false; - } - - return $this->nonStrictFormatRules->alpha_space($value); - } - - /** - * Alphanumeric with underscores and dashes - * - * @param array|bool|float|int|object|string|null $str - */ - public function alpha_dash($str = null): bool - { - if (is_int($str)) { - $str = (string) $str; - } - - if (! is_string($str)) { - return false; - } - - return $this->nonStrictFormatRules->alpha_dash($str); - } - - /** - * Alphanumeric, spaces, and a limited set of punctuation characters. - * Accepted punctuation characters are: ~ tilde, ! exclamation, - * # number, $ dollar, % percent, & ampersand, * asterisk, - dash, - * _ underscore, + plus, = equals, | vertical bar, : colon, . period - * ~ ! # $ % & * - _ + = | : . - * - * @param array|bool|float|int|object|string|null $str - * - * @return bool - */ - public function alpha_numeric_punct($str) - { - if (is_int($str) || is_float($str)) { - $str = (string) $str; - } - - if (! is_string($str)) { - return false; - } - - return $this->nonStrictFormatRules->alpha_numeric_punct($str); - } - - /** - * Alphanumeric - * - * @param array|bool|float|int|object|string|null $str - */ - public function alpha_numeric($str = null): bool - { - if (is_int($str)) { - $str = (string) $str; - } - - if (! is_string($str)) { - return false; - } - - return $this->nonStrictFormatRules->alpha_numeric($str); - } - - /** - * Alphanumeric w/ spaces - * - * @param array|bool|float|int|object|string|null $str - */ - public function alpha_numeric_space($str = null): bool - { - if (is_int($str)) { - $str = (string) $str; - } - - if (! is_string($str)) { - return false; - } - - return $this->nonStrictFormatRules->alpha_numeric_space($str); - } - - /** - * Any type of string - * - * @param array|bool|float|int|object|string|null $str - */ - public function string($str = null): bool - { - return $this->nonStrictFormatRules->string($str); - } - - /** - * Decimal number - * - * @param array|bool|float|int|object|string|null $str - */ - public function decimal($str = null): bool - { - if (is_int($str) || is_float($str)) { - $str = (string) $str; - } - - if (! is_string($str)) { - return false; - } - - return $this->nonStrictFormatRules->decimal($str); - } - - /** - * String of hexidecimal characters - * - * @param array|bool|float|int|object|string|null $str - */ - public function hex($str = null): bool - { - if (is_int($str)) { - $str = (string) $str; - } - - if (! is_string($str)) { - return false; - } - - return $this->nonStrictFormatRules->hex($str); - } - - /** - * Integer - * - * @param array|bool|float|int|object|string|null $str - */ - public function integer($str = null): bool - { - if (is_int($str)) { - $str = (string) $str; - } - - if (! is_string($str)) { - return false; - } - - return $this->nonStrictFormatRules->integer($str); - } - - /** - * Is a Natural number (0,1,2,3, etc.) - * - * @param array|bool|float|int|object|string|null $str - */ - public function is_natural($str = null): bool - { - if (is_int($str)) { - $str = (string) $str; - } - - if (! is_string($str)) { - return false; - } - - return $this->nonStrictFormatRules->is_natural($str); - } - - /** - * Is a Natural number, but not a zero (1,2,3, etc.) - * - * @param array|bool|float|int|object|string|null $str - */ - public function is_natural_no_zero($str = null): bool - { - if (is_int($str)) { - $str = (string) $str; - } - - if (! is_string($str)) { - return false; - } - - return $this->nonStrictFormatRules->is_natural_no_zero($str); - } - - /** - * Numeric - * - * @param array|bool|float|int|object|string|null $str - */ - public function numeric($str = null): bool - { - if (is_int($str) || is_float($str)) { - $str = (string) $str; - } - - if (! is_string($str)) { - return false; - } - - return $this->nonStrictFormatRules->numeric($str); - } - - /** - * Compares value against a regular expression pattern. - * - * @param array|bool|float|int|object|string|null $str - */ - public function regex_match($str, string $pattern): bool - { - if (! is_string($str)) { - return false; - } - - return $this->nonStrictFormatRules->regex_match($str, $pattern); - } - - /** - * Validates that the string is a valid timezone as per the - * timezone_identifiers_list function. - * - * @see http://php.net/manual/en/datetimezone.listidentifiers.php - * - * @param array|bool|float|int|object|string|null $str - */ - public function timezone($str = null): bool - { - if (! is_string($str)) { - return false; - } - - return $this->nonStrictFormatRules->timezone($str); - } - - /** - * Valid Base64 - * - * Tests a string for characters outside of the Base64 alphabet - * as defined by RFC 2045 http://www.faqs.org/rfcs/rfc2045 - * - * @param array|bool|float|int|object|string|null $str - */ - public function valid_base64($str = null): bool - { - if (! is_string($str)) { - return false; - } - - return $this->nonStrictFormatRules->valid_base64($str); - } - - /** - * Valid JSON - * - * @param array|bool|float|int|object|string|null $str - */ - public function valid_json($str = null): bool - { - if (! is_string($str)) { - return false; - } - - return $this->nonStrictFormatRules->valid_json($str); - } - - /** - * Checks for a correctly formatted email address - * - * @param array|bool|float|int|object|string|null $str - */ - public function valid_email($str = null): bool - { - if (! is_string($str)) { - return false; - } - - return $this->nonStrictFormatRules->valid_email($str); - } - - /** - * Validate a comma-separated list of email addresses. - * - * Example: - * valid_emails[one@example.com,two@example.com] - * - * @param array|bool|float|int|object|string|null $str - */ - public function valid_emails($str = null): bool - { - if (! is_string($str)) { - return false; - } - - return $this->nonStrictFormatRules->valid_emails($str); - } - - /** - * Validate an IP address (human readable format or binary string - inet_pton) - * - * @param array|bool|float|int|object|string|null $ip - * @param string|null $which IP protocol: 'ipv4' or 'ipv6' - */ - public function valid_ip($ip = null, ?string $which = null): bool - { - if (! is_string($ip)) { - return false; - } - - return $this->nonStrictFormatRules->valid_ip($ip, $which); - } - - /** - * Checks a string to ensure it is (loosely) a URL. - * - * Warning: this rule will pass basic strings like - * "banana"; use valid_url_strict for a stricter rule. - * - * @param array|bool|float|int|object|string|null $str - */ - public function valid_url($str = null): bool - { - if (! is_string($str)) { - return false; - } - - return $this->nonStrictFormatRules->valid_url($str); - } - - /** - * Checks a URL to ensure it's formed correctly. - * - * @param array|bool|float|int|object|string|null $str - * @param string|null $validSchemes comma separated list of allowed schemes - */ - public function valid_url_strict($str = null, ?string $validSchemes = null): bool - { - if (! is_string($str)) { - return false; - } - - return $this->nonStrictFormatRules->valid_url_strict($str, $validSchemes); - } - - /** - * Checks for a valid date and matches a given date format - * - * @param array|bool|float|int|object|string|null $str - */ - public function valid_date($str = null, ?string $format = null): bool - { - if (! is_string($str)) { - return false; - } - - return $this->nonStrictFormatRules->valid_date($str, $format); - } -} diff --git a/system4.4.6/Validation/StrictRules/Rules.php b/system4.4.6/Validation/StrictRules/Rules.php deleted file mode 100644 index 3086ca5a..00000000 --- a/system4.4.6/Validation/StrictRules/Rules.php +++ /dev/null @@ -1,408 +0,0 @@ -<?php - -declare(strict_types=1); - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Validation\StrictRules; - -use CodeIgniter\Validation\Rules as NonStrictRules; -use Config\Database; - -/** - * Validation Rules. - * - * @see \CodeIgniter\Validation\StrictRules\RulesTest - */ -class Rules -{ - private NonStrictRules $nonStrictRules; - - public function __construct() - { - $this->nonStrictRules = new NonStrictRules(); - } - - /** - * The value does not match another field in $data. - * - * @param array|bool|float|int|object|string|null $str - * @param array $data Other field/value pairs - */ - public function differs( - $str, - string $otherField, - array $data, - ?string $error = null, - ?string $field = null - ): bool { - if (strpos($otherField, '.') !== false) { - return $str !== dot_array_search($otherField, $data); - } - - if (! array_key_exists($field, $data)) { - return false; - } - - if (! array_key_exists($otherField, $data)) { - return false; - } - - return $str !== ($data[$otherField] ?? null); - } - - /** - * Equals the static value provided. - * - * @param array|bool|float|int|object|string|null $str - */ - public function equals($str, string $val): bool - { - return $this->nonStrictRules->equals($str, $val); - } - - /** - * Returns true if $str is $val characters long. - * $val = "5" (one) | "5,8,12" (multiple values) - * - * @param array|bool|float|int|object|string|null $str - */ - public function exact_length($str, string $val): bool - { - if (is_int($str) || is_float($str)) { - $str = (string) $str; - } - - if (! is_string($str)) { - return false; - } - - return $this->nonStrictRules->exact_length($str, $val); - } - - /** - * Greater than - * - * @param array|bool|float|int|object|string|null $str expects int|string - */ - public function greater_than($str, string $min): bool - { - if (is_int($str) || is_float($str)) { - $str = (string) $str; - } - - if (! is_string($str)) { - return false; - } - - return $this->nonStrictRules->greater_than($str, $min); - } - - /** - * Equal to or Greater than - * - * @param array|bool|float|int|object|string|null $str expects int|string - */ - public function greater_than_equal_to($str, string $min): bool - { - if (is_int($str) || is_float($str)) { - $str = (string) $str; - } - - if (! is_string($str)) { - return false; - } - - return $this->nonStrictRules->greater_than_equal_to($str, $min); - } - - /** - * Checks the database to see if the given value exist. - * Can ignore records by field/value to filter (currently - * accept only one filter). - * - * Example: - * is_not_unique[table.field,where_field,where_value] - * is_not_unique[menu.id,active,1] - * - * @param array|bool|float|int|object|string|null $str - */ - public function is_not_unique($str, string $field, array $data): bool - { - if (is_object($str) || is_array($str)) { - return false; - } - - // Grab any data for exclusion of a single row. - [$field, $whereField, $whereValue] = array_pad( - explode(',', $field), - 3, - null - ); - - // Break the table and field apart - sscanf($field, '%[^.].%[^.]', $table, $field); - - $row = Database::connect($data['DBGroup'] ?? null) - ->table($table) - ->select('1') - ->where($field, $str) - ->limit(1); - - if ( - $whereField !== null && $whereField !== '' - && $whereValue !== null && $whereValue !== '' - && ! preg_match('/^\{(\w+)\}$/', $whereValue) - ) { - $row = $row->where($whereField, $whereValue); - } - - return $row->get()->getRow() !== null; - } - - /** - * Value should be within an array of values - * - * @param array|bool|float|int|object|string|null $value - */ - public function in_list($value, string $list): bool - { - if (is_int($value) || is_float($value)) { - $value = (string) $value; - } - - if (! is_string($value)) { - return false; - } - - return $this->nonStrictRules->in_list($value, $list); - } - - /** - * Checks the database to see if the given value is unique. Can - * ignore a single record by field/value to make it useful during - * record updates. - * - * Example: - * is_unique[table.field,ignore_field,ignore_value] - * is_unique[users.email,id,5] - * - * @param array|bool|float|int|object|string|null $str - */ - public function is_unique($str, string $field, array $data): bool - { - if (is_object($str) || is_array($str)) { - return false; - } - - [$field, $ignoreField, $ignoreValue] = array_pad( - explode(',', $field), - 3, - null - ); - - sscanf($field, '%[^.].%[^.]', $table, $field); - - $row = Database::connect($data['DBGroup'] ?? null) - ->table($table) - ->select('1') - ->where($field, $str) - ->limit(1); - - if ( - $ignoreField !== null && $ignoreField !== '' - && $ignoreValue !== null && $ignoreValue !== '' - && ! preg_match('/^\{(\w+)\}$/', $ignoreValue) - ) { - $row = $row->where("{$ignoreField} !=", $ignoreValue); - } - - return $row->get()->getRow() === null; - } - - /** - * Less than - * - * @param array|bool|float|int|object|string|null $str expects int|string - */ - public function less_than($str, string $max): bool - { - if (is_int($str) || is_float($str)) { - $str = (string) $str; - } - - if (! is_string($str)) { - return false; - } - - return $this->nonStrictRules->less_than($str, $max); - } - - /** - * Equal to or Less than - * - * @param array|bool|float|int|object|string|null $str expects int|string - */ - public function less_than_equal_to($str, string $max): bool - { - if (is_int($str) || is_float($str)) { - $str = (string) $str; - } - - if (! is_string($str)) { - return false; - } - - return $this->nonStrictRules->less_than_equal_to($str, $max); - } - - /** - * Matches the value of another field in $data. - * - * @param array|bool|float|int|object|string|null $str - * @param array $data Other field/value pairs - */ - public function matches( - $str, - string $otherField, - array $data, - ?string $error = null, - ?string $field = null - ): bool { - if (strpos($otherField, '.') !== false) { - return $str === dot_array_search($otherField, $data); - } - - if (! array_key_exists($field, $data)) { - return false; - } - - if (! array_key_exists($otherField, $data)) { - return false; - } - - return $str === ($data[$otherField] ?? null); - } - - /** - * Returns true if $str is $val or fewer characters in length. - * - * @param array|bool|float|int|object|string|null $str - */ - public function max_length($str, string $val): bool - { - if (is_int($str) || is_float($str) || null === $str) { - $str = (string) $str; - } - - if (! is_string($str)) { - return false; - } - - return $this->nonStrictRules->max_length($str, $val); - } - - /** - * Returns true if $str is at least $val length. - * - * @param array|bool|float|int|object|string|null $str - */ - public function min_length($str, string $val): bool - { - if (is_int($str) || is_float($str)) { - $str = (string) $str; - } - - if (! is_string($str)) { - return false; - } - - return $this->nonStrictRules->min_length($str, $val); - } - - /** - * Does not equal the static value provided. - * - * @param array|bool|float|int|object|string|null $str - */ - public function not_equals($str, string $val): bool - { - return $this->nonStrictRules->not_equals($str, $val); - } - - /** - * Value should not be within an array of values. - * - * @param array|bool|float|int|object|string|null $value - */ - public function not_in_list($value, string $list): bool - { - if (null === $value) { - return true; - } - - if (is_int($value) || is_float($value)) { - $value = (string) $value; - } - - if (! is_string($value)) { - return false; - } - - return $this->nonStrictRules->not_in_list($value, $list); - } - - /** - * @param array|bool|float|int|object|string|null $str - */ - public function required($str = null): bool - { - return $this->nonStrictRules->required($str); - } - - /** - * The field is required when any of the other required fields are present - * in the data. - * - * Example (field is required when the password field is present): - * - * required_with[password] - * - * @param array|bool|float|int|object|string|null $str - * @param string|null $fields List of fields that we should check if present - * @param array $data Complete list of fields from the form - */ - public function required_with($str = null, ?string $fields = null, array $data = []): bool - { - return $this->nonStrictRules->required_with($str, $fields, $data); - } - - /** - * The field is required when all the other fields are present - * in the data but not required. - * - * Example (field is required when the id or email field is missing): - * - * required_without[id,email] - * - * @param array|bool|float|int|object|string|null $str - * @param string|null $otherFields The param fields of required_without[]. - * @param string|null $field This rule param fields aren't present, this field is required. - */ - public function required_without( - $str = null, - ?string $otherFields = null, - array $data = [], - ?string $error = null, - ?string $field = null - ): bool { - return $this->nonStrictRules->required_without($str, $otherFields, $data, $error, $field); - } -} diff --git a/system4.4.6/Validation/Validation.php b/system4.4.6/Validation/Validation.php deleted file mode 100644 index 83bb361e..00000000 --- a/system4.4.6/Validation/Validation.php +++ /dev/null @@ -1,983 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Validation; - -use Closure; -use CodeIgniter\HTTP\Exceptions\HTTPException; -use CodeIgniter\HTTP\IncomingRequest; -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\Validation\Exceptions\ValidationException; -use CodeIgniter\View\RendererInterface; -use Config\Services; -use Config\Validation as ValidationConfig; -use InvalidArgumentException; -use LogicException; -use TypeError; - -/** - * Validator - * - * @see \CodeIgniter\Validation\ValidationTest - */ -class Validation implements ValidationInterface -{ - /** - * Files to load with validation functions. - * - * @var array - */ - protected $ruleSetFiles; - - /** - * The loaded instances of our validation files. - * - * @var array - */ - protected $ruleSetInstances = []; - - /** - * Stores the actual rules that should be run against $data. - * - * @var array - * - * [ - * field1 => [ - * 'label' => label, - * 'rules' => [ - * rule1, rule2, ... - * ], - * ], - * ] - */ - protected $rules = []; - - /** - * The data that should be validated, - * where 'key' is the alias, with value. - * - * @var array - */ - protected $data = []; - - /** - * The data that was actually validated. - * - * @var array - */ - protected $validated = []; - - /** - * Any generated errors during validation. - * 'key' is the alias, 'value' is the message. - * - * @var array - */ - protected $errors = []; - - /** - * Stores custom error message to use - * during validation. Where 'key' is the alias. - * - * @var array - */ - protected $customErrors = []; - - /** - * Our configuration. - * - * @var ValidationConfig - */ - protected $config; - - /** - * The view renderer used to render validation messages. - * - * @var RendererInterface - */ - protected $view; - - /** - * Validation constructor. - * - * @param ValidationConfig $config - */ - public function __construct($config, RendererInterface $view) - { - $this->ruleSetFiles = $config->ruleSets; - - $this->config = $config; - - $this->view = $view; - - $this->loadRuleSets(); - } - - /** - * Runs the validation process, returning true/false determining whether - * validation was successful or not. - * - * @param array|null $data The array of data to validate. - * @param string|null $group The predefined group of rules to apply. - * @param string|null $dbGroup The database group to use. - * - * @TODO Type ?string for $dbGroup should be removed. - * See https://github.com/codeigniter4/CodeIgniter4/issues/6723 - */ - public function run(?array $data = null, ?string $group = null, ?string $dbGroup = null): bool - { - if ($data === null) { - $data = $this->data; - } else { - // Store data to validate. - $this->data = $data; - } - - // `DBGroup` is a reserved name. For is_unique and is_not_unique - $data['DBGroup'] = $dbGroup; - - $this->loadRuleGroup($group); - - // If no rules exist, we return false to ensure - // the developer didn't forget to set the rules. - if ($this->rules === []) { - return false; - } - - // Replace any placeholders (e.g. {id}) in the rules with - // the value found in $data, if any. - $this->rules = $this->fillPlaceholders($this->rules, $data); - - // Need this for searching arrays in validation. - helper('array'); - - // Run through each rule. If we have any field set for - // this rule, then we need to run them through! - foreach ($this->rules as $field => $setup) { - $rules = $setup['rules']; - - if (is_string($rules)) { - $rules = $this->splitRules($rules); - } - - if (strpos($field, '*') !== false) { - $flattenedArray = array_flatten_with_dots($data); - - $values = array_filter( - $flattenedArray, - static fn ($key) => preg_match(self::getRegex($field), $key), - ARRAY_FILTER_USE_KEY - ); - - // if keys not found - $values = $values ?: [$field => null]; - } else { - $values = dot_array_search($field, $data); - } - - if ($values === []) { - // We'll process the values right away if an empty array - $this->processRules($field, $setup['label'] ?? $field, $values, $rules, $data); - - continue; - } - - if (strpos($field, '*') !== false) { - // Process multiple fields - foreach ($values as $dotField => $value) { - $this->processRules($dotField, $setup['label'] ?? $field, $value, $rules, $data, $field); - } - } else { - // Process single field - $this->processRules($field, $setup['label'] ?? $field, $values, $rules, $data); - } - } - - if ($this->getErrors() === []) { - // Store data that was actually validated. - $this->validated = DotArrayFilter::run( - array_keys($this->rules), - $this->data - ); - - return true; - } - - return false; - } - - /** - * Returns regex pattern for key with dot array syntax. - */ - private static function getRegex(string $field): string - { - return '/\A' - . str_replace( - ['\.\*', '\*\.'], - ['\.[^.]+', '[^.]+\.'], - preg_quote($field, '/') - ) - . '\z/'; - } - - /** - * Runs the validation process, returning true or false determining whether - * validation was successful or not. - * - * @param array|bool|float|int|object|string|null $value The data to validate. - * @param array|string $rules The validation rules. - * @param string[] $errors The custom error message. - * @param string|null $dbGroup The database group to use. - */ - public function check($value, $rules, array $errors = [], $dbGroup = null): bool - { - $this->reset(); - - return $this->setRule( - 'check', - null, - $rules, - $errors - )->run( - ['check' => $value], - null, - $dbGroup - ); - } - - /** - * Returns the actual validated data. - */ - public function getValidated(): array - { - return $this->validated; - } - - /** - * Runs all of $rules against $field, until one fails, or - * all of them have been processed. If one fails, it adds - * the error to $this->errors and moves on to the next, - * so that we can collect all of the first errors. - * - * @param array|string $value - * @param array $rules - * @param array $data The array of data to validate, with `DBGroup`. - * @param string|null $originalField The original asterisk field name like "foo.*.bar". - */ - protected function processRules( - string $field, - ?string $label, - $value, - $rules = null, // @TODO remove `= null` - ?array $data = null, // @TODO remove `= null` - ?string $originalField = null - ): bool { - if ($data === null) { - throw new InvalidArgumentException('You must supply the parameter: data.'); - } - - $rules = $this->processIfExist($field, $rules, $data); - if ($rules === true) { - return true; - } - - $rules = $this->processPermitEmpty($value, $rules, $data); - if ($rules === true) { - return true; - } - - foreach ($rules as $i => $rule) { - $isCallable = is_callable($rule); - - $passed = false; - $param = false; - - if (! $isCallable && preg_match('/(.*?)\[(.*)\]/', $rule, $match)) { - $rule = $match[1]; - $param = $match[2]; - } - - // Placeholder for custom errors from the rules. - $error = null; - - // If it's a callable, call and get out of here. - if ($this->isClosure($rule)) { - $passed = $rule($value, $data, $error, $field); - } elseif ($isCallable) { - $passed = $param === false ? $rule($value) : $rule($value, $param, $data); - } else { - $found = false; - - // Check in our rulesets - foreach ($this->ruleSetInstances as $set) { - if (! method_exists($set, $rule)) { - continue; - } - - $found = true; - $passed = $param === false - ? $set->{$rule}($value, $error) - : $set->{$rule}($value, $param, $data, $error, $field); - - break; - } - - // If the rule wasn't found anywhere, we - // should throw an exception so the developer can find it. - if (! $found) { - throw ValidationException::forRuleNotFound($rule); - } - } - - // Set the error message if we didn't survive. - if ($passed === false) { - // if the $value is an array, convert it to as string representation - if (is_array($value)) { - $value = $this->isStringList($value) - ? '[' . implode(', ', $value) . ']' - : json_encode($value); - } elseif (is_object($value)) { - $value = json_encode($value); - } - - $param = ($param === false) ? '' : $param; - - // @phpstan-ignore-next-line $error may be set by rule methods. - $this->errors[$field] = $error ?? $this->getErrorMessage( - $this->isClosure($rule) ? $i : $rule, - $field, - $label, - $param, - (string) $value, - $originalField - ); - - return false; - } - } - - return true; - } - - /** - * @param array $data The array of data to validate, with `DBGroup`. - * - * @return array|true The modified rules or true if we return early - */ - private function processIfExist(string $field, array $rules, array $data) - { - if (in_array('if_exist', $rules, true)) { - $flattenedData = array_flatten_with_dots($data); - $ifExistField = $field; - - if (strpos($field, '.*') !== false) { - // We'll change the dot notation into a PCRE pattern that can be used later - $ifExistField = str_replace('\.\*', '\.(?:[^\.]+)', preg_quote($field, '/')); - $dataIsExisting = false; - $pattern = sprintf('/%s/u', $ifExistField); - - foreach (array_keys($flattenedData) as $item) { - if (preg_match($pattern, $item) === 1) { - $dataIsExisting = true; - break; - } - } - } else { - $dataIsExisting = array_key_exists($ifExistField, $flattenedData); - } - - if (! $dataIsExisting) { - // we return early if `if_exist` is not satisfied. we have nothing to do here. - return true; - } - - // Otherwise remove the if_exist rule and continue the process - $rules = array_filter($rules, static fn ($rule) => $rule instanceof Closure || $rule !== 'if_exist'); - } - - return $rules; - } - - /** - * @param array|string $value - * @param array $data The array of data to validate, with `DBGroup`. - * - * @return array|true The modified rules or true if we return early - */ - private function processPermitEmpty($value, array $rules, array $data) - { - if (in_array('permit_empty', $rules, true)) { - if ( - ! in_array('required', $rules, true) - && (is_array($value) ? $value === [] : trim((string) $value) === '') - ) { - $passed = true; - - foreach ($rules as $rule) { - if (! $this->isClosure($rule) && preg_match('/(.*?)\[(.*)\]/', $rule, $match)) { - $rule = $match[1]; - $param = $match[2]; - - if (! in_array($rule, ['required_with', 'required_without'], true)) { - continue; - } - - // Check in our rulesets - foreach ($this->ruleSetInstances as $set) { - if (! method_exists($set, $rule)) { - continue; - } - - $passed = $passed && $set->{$rule}($value, $param, $data); - break; - } - } - } - - if ($passed === true) { - return true; - } - } - - $rules = array_filter($rules, static fn ($rule) => $rule instanceof Closure || $rule !== 'permit_empty'); - } - - return $rules; - } - - /** - * @param Closure|string $rule - */ - private function isClosure($rule): bool - { - return $rule instanceof Closure; - } - - /** - * Is the array a string list `list<string>`? - */ - private function isStringList(array $array): bool - { - $expectedKey = 0; - - foreach ($array as $key => $val) { - // Note: also covers PHP array key conversion, e.g. '5' and 5.1 both become 5 - if (! is_int($key)) { - return false; - } - - if ($key !== $expectedKey) { - return false; - } - $expectedKey++; - - if (! is_string($val)) { - return false; - } - } - - return true; - } - - /** - * Takes a Request object and grabs the input data to use from its - * array values. - */ - public function withRequest(RequestInterface $request): ValidationInterface - { - /** @var IncomingRequest $request */ - if (strpos($request->getHeaderLine('Content-Type'), 'application/json') !== false) { - $this->data = $request->getJSON(true); - - if (! is_array($this->data)) { - throw HTTPException::forUnsupportedJSONFormat(); - } - - return $this; - } - - if (in_array(strtolower($request->getMethod()), ['put', 'patch', 'delete'], true) - && strpos($request->getHeaderLine('Content-Type'), 'multipart/form-data') === false - ) { - $this->data = $request->getRawInput(); - } else { - $this->data = $request->getVar() ?? []; - } - - return $this; - } - - /** - * Sets (or adds) an individual rule and custom error messages for a single - * field. - * - * The custom error message should be just the messages that apply to - * this field, like so: - * [ - * 'rule1' => 'message1', - * 'rule2' => 'message2', - * ] - * - * @param array|string $rules The validation rules. - * @param array $errors The custom error message. - * - * @return $this - * - * @throws TypeError - */ - public function setRule(string $field, ?string $label, $rules, array $errors = []) - { - if (! is_array($rules) && ! is_string($rules)) { - throw new TypeError('$rules must be of type string|array'); - } - - $ruleSet = [ - $field => [ - 'label' => $label, - 'rules' => $rules, - ], - ]; - - if ($errors !== []) { - $ruleSet[$field]['errors'] = $errors; - } - - $this->setRules(array_merge($this->getRules(), $ruleSet), $this->customErrors); - - return $this; - } - - /** - * Stores the rules that should be used to validate the items. - * - * Rules should be an array formatted like: - * [ - * 'field' => 'rule1|rule2' - * ] - * - * The $errors array should be formatted like: - * [ - * 'field' => [ - * 'rule1' => 'message1', - * 'rule2' => 'message2', - * ], - * ] - * - * @param array $errors An array of custom error messages - */ - public function setRules(array $rules, array $errors = []): ValidationInterface - { - $this->customErrors = $errors; - - foreach ($rules as $field => &$rule) { - if (is_array($rule)) { - if (array_key_exists('errors', $rule)) { - $this->customErrors[$field] = $rule['errors']; - unset($rule['errors']); - } - - // if $rule is already a rule collection, just move it to "rules" - // transforming [foo => [required, foobar]] to [foo => [rules => [required, foobar]]] - if (! array_key_exists('rules', $rule)) { - $rule = ['rules' => $rule]; - } - } - - if (isset($rule['rules']) && is_string($rule['rules'])) { - $rule['rules'] = $this->splitRules($rule['rules']); - } - - if (is_string($rule)) { - $rule = ['rules' => $this->splitRules($rule)]; - } - } - - $this->rules = $rules; - - return $this; - } - - /** - * Returns all of the rules currently defined. - */ - public function getRules(): array - { - return $this->rules; - } - - /** - * Checks to see if the rule for key $field has been set or not. - */ - public function hasRule(string $field): bool - { - return array_key_exists($field, $this->rules); - } - - /** - * Get rule group. - * - * @param string $group Group. - * - * @return string[] Rule group. - * - * @throws ValidationException If group not found. - */ - public function getRuleGroup(string $group): array - { - if (! isset($this->config->{$group})) { - throw ValidationException::forGroupNotFound($group); - } - - if (! is_array($this->config->{$group})) { - throw ValidationException::forGroupNotArray($group); - } - - return $this->config->{$group}; - } - - /** - * Set rule group. - * - * @param string $group Group. - * - * @return void - * - * @throws ValidationException If group not found. - */ - public function setRuleGroup(string $group) - { - $rules = $this->getRuleGroup($group); - $this->setRules($rules); - - $errorName = $group . '_errors'; - if (isset($this->config->{$errorName})) { - $this->customErrors = $this->config->{$errorName}; - } - } - - /** - * Returns the rendered HTML of the errors as defined in $template. - * - * You can also use validation_list_errors() in Form helper. - */ - public function listErrors(string $template = 'list'): string - { - if (! array_key_exists($template, $this->config->templates)) { - throw ValidationException::forInvalidTemplate($template); - } - - return $this->view - ->setVar('errors', $this->getErrors()) - ->render($this->config->templates[$template]); - } - - /** - * Displays a single error in formatted HTML as defined in the $template view. - * - * You can also use validation_show_error() in Form helper. - */ - public function showError(string $field, string $template = 'single'): string - { - if (! array_key_exists($field, $this->getErrors())) { - return ''; - } - - if (! array_key_exists($template, $this->config->templates)) { - throw ValidationException::forInvalidTemplate($template); - } - - return $this->view - ->setVar('error', $this->getError($field)) - ->render($this->config->templates[$template]); - } - - /** - * Loads all of the rulesets classes that have been defined in the - * Config\Validation and stores them locally so we can use them. - * - * @return void - */ - protected function loadRuleSets() - { - if ($this->ruleSetFiles === [] || $this->ruleSetFiles === null) { - throw ValidationException::forNoRuleSets(); - } - - foreach ($this->ruleSetFiles as $file) { - $this->ruleSetInstances[] = new $file(); - } - } - - /** - * Loads custom rule groups (if set) into the current rules. - * - * Rules can be pre-defined in Config\Validation and can - * be any name, but must all still be an array of the - * same format used with setRules(). Additionally, check - * for {group}_errors for an array of custom error messages. - * - * @param non-empty-string|null $group - * - * @return array<int, array> [rules, customErrors] - * - * @throws ValidationException - */ - public function loadRuleGroup(?string $group = null) - { - if ($group === null || $group === '') { - return []; - } - - if (! isset($this->config->{$group})) { - throw ValidationException::forGroupNotFound($group); - } - - if (! is_array($this->config->{$group})) { - throw ValidationException::forGroupNotArray($group); - } - - $this->setRules($this->config->{$group}); - - // If {group}_errors exists in the config file, - // then override our custom errors with them. - $errorName = $group . '_errors'; - - if (isset($this->config->{$errorName})) { - $this->customErrors = $this->config->{$errorName}; - } - - return [$this->rules, $this->customErrors]; - } - - /** - * Replace any placeholders within the rules with the values that - * match the 'key' of any properties being set. For example, if - * we had the following $data array: - * - * [ 'id' => 13 ] - * - * and the following rule: - * - * 'is_unique[users,email,id,{id}]' - * - * The value of {id} would be replaced with the actual id in the form data: - * - * 'is_unique[users,email,id,13]' - */ - protected function fillPlaceholders(array $rules, array $data): array - { - foreach ($rules as &$rule) { - $ruleSet = $rule['rules']; - - foreach ($ruleSet as &$row) { - if (is_string($row)) { - $placeholderFields = $this->retrievePlaceholders($row, $data); - - foreach ($placeholderFields as $field) { - $validator ??= Services::validation(null, false); - assert($validator instanceof Validation); - - $placeholderRules = $rules[$field]['rules'] ?? null; - - // Check if the validation rule for the placeholder exists - if ($placeholderRules === null) { - throw new LogicException( - 'No validation rules for the placeholder: ' . $field - ); - } - - // Check if the rule does not have placeholders - foreach ($placeholderRules as $placeholderRule) { - if ($this->retrievePlaceholders($placeholderRule, $data) !== []) { - throw new LogicException( - 'The placeholder field cannot use placeholder: ' . $field - ); - } - } - - // Validate the placeholder field - $dbGroup = $data['DBGroup'] ?? null; - if (! $validator->check($data[$field], $placeholderRules, [], $dbGroup)) { - // if fails, do nothing - continue; - } - - // Replace the placeholder in the rule - $ruleSet = str_replace('{' . $field . '}', $data[$field], $ruleSet); - } - } - } - - $rule['rules'] = $ruleSet; - } - - return $rules; - } - - /** - * Retrieves valid placeholder fields. - */ - private function retrievePlaceholders(string $rule, array $data): array - { - preg_match_all('/{(.+?)}/', $rule, $matches); - - return array_intersect($matches[1], array_keys($data)); - } - - /** - * Checks to see if an error exists for the given field. - */ - public function hasError(string $field): bool - { - return (bool) preg_grep(self::getRegex($field), array_keys($this->getErrors())); - } - - /** - * Returns the error(s) for a specified $field (or empty string if not - * set). - */ - public function getError(?string $field = null): string - { - if ($field === null && count($this->rules) === 1) { - $field = array_key_first($this->rules); - } - - $errors = array_filter( - $this->getErrors(), - static fn ($key) => preg_match(self::getRegex($field), $key), - ARRAY_FILTER_USE_KEY - ); - - return $errors === [] ? '' : implode("\n", $errors); - } - - /** - * Returns the array of errors that were encountered during - * a run() call. The array should be in the following format: - * - * [ - * 'field1' => 'error message', - * 'field2' => 'error message', - * ] - * - * @return array<string, string> - * - * @codeCoverageIgnore - */ - public function getErrors(): array - { - return $this->errors; - } - - /** - * Sets the error for a specific field. Used by custom validation methods. - */ - public function setError(string $field, string $error): ValidationInterface - { - $this->errors[$field] = $error; - - return $this; - } - - /** - * Attempts to find the appropriate error message - * - * @param non-empty-string|null $label - * @param string|null $value The value that caused the validation to fail. - */ - protected function getErrorMessage( - string $rule, - string $field, - ?string $label = null, - ?string $param = null, - ?string $value = null, - ?string $originalField = null - ): string { - $param ??= ''; - - // Check if custom message has been defined by user - if (isset($this->customErrors[$field][$rule])) { - $message = lang($this->customErrors[$field][$rule]); - } elseif (null !== $originalField && isset($this->customErrors[$originalField][$rule])) { - $message = lang($this->customErrors[$originalField][$rule]); - } else { - // Try to grab a localized version of the message... - // lang() will return the rule name back if not found, - // so there will always be a string being returned. - $message = lang('Validation.' . $rule); - } - - $message = str_replace('{field}', ($label === null || $label === '') ? $field : lang($label), $message); - $message = str_replace( - '{param}', - (! isset($this->rules[$param]['label'])) ? $param : lang($this->rules[$param]['label']), - $message - ); - - return str_replace('{value}', $value ?? '', $message); - } - - /** - * Split rules string by pipe operator. - */ - protected function splitRules(string $rules): array - { - if (strpos($rules, '|') === false) { - return [$rules]; - } - - $string = $rules; - $rules = []; - $length = strlen($string); - $cursor = 0; - - while ($cursor < $length) { - $pos = strpos($string, '|', $cursor); - - if ($pos === false) { - // we're in the last rule - $pos = $length; - } - - $rule = substr($string, $cursor, $pos - $cursor); - - while ( - (substr_count($rule, '[') - substr_count($rule, '\[')) - !== (substr_count($rule, ']') - substr_count($rule, '\]')) - ) { - // the pipe is inside the brackets causing the closing bracket to - // not be included. so, we adjust the rule to include that portion. - $pos = strpos($string, '|', $cursor + strlen($rule) + 1) ?: $length; - $rule = substr($string, $cursor, $pos - $cursor); - } - - $rules[] = $rule; - $cursor += strlen($rule) + 1; // +1 to exclude the pipe - } - - return array_unique($rules); - } - - /** - * Resets the class to a blank slate. Should be called whenever - * you need to process more than one array. - */ - public function reset(): ValidationInterface - { - $this->data = []; - $this->validated = []; - $this->rules = []; - $this->errors = []; - $this->customErrors = []; - - return $this; - } -} diff --git a/system4.4.6/Validation/ValidationInterface.php b/system4.4.6/Validation/ValidationInterface.php deleted file mode 100644 index c289afc4..00000000 --- a/system4.4.6/Validation/ValidationInterface.php +++ /dev/null @@ -1,162 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\Validation; - -use CodeIgniter\HTTP\RequestInterface; - -/** - * Expected behavior of a validator - */ -interface ValidationInterface -{ - /** - * Runs the validation process, returning true/false determining whether - * validation was successful or not. - * - * @param array|null $data The array of data to validate. - * @param string|null $group The predefined group of rules to apply. - * @param string|null $dbGroup The database group to use. - */ - public function run(?array $data = null, ?string $group = null, ?string $dbGroup = null): bool; - - /** - * Check; runs the validation process, returning true or false - * determining whether or not validation was successful. - * - * @param array|bool|float|int|object|string|null $value Value to validate. - * @param array|string $rules - * @param string[] $errors - * @param string|null $dbGroup The database group to use. - * - * @return bool True if valid, else false. - */ - public function check($value, $rules, array $errors = [], $dbGroup = null): bool; - - /** - * Takes a Request object and grabs the input data to use from its - * array values. - */ - public function withRequest(RequestInterface $request): ValidationInterface; - - /** - * Sets an individual rule and custom error messages for a single field. - * - * The custom error message should be just the messages that apply to - * this field, like so: - * - * [ - * 'rule' => 'message', - * 'rule' => 'message', - * ] - * - * @param array|string $rules - * - * @return $this - */ - public function setRule(string $field, ?string $label, $rules, array $errors = []); - - /** - * Stores the rules that should be used to validate the items. - */ - public function setRules(array $rules, array $messages = []): ValidationInterface; - - /** - * Returns all of the rules currently defined. - */ - public function getRules(): array; - - /** - * Checks to see if the rule for key $field has been set or not. - */ - public function hasRule(string $field): bool; - - /** - * Get rule group. - * - * @param string $group Group. - * - * @return string[] Rule group. - */ - public function getRuleGroup(string $group): array; - - /** - * Set rule group. - * - * @param string $group Group. - * - * @return void - */ - public function setRuleGroup(string $group); - - /** - * Returns the error for a specified $field (or empty string if not set). - */ - public function getError(string $field): string; - - /** - * Returns the array of errors that were encountered during - * a run() call. The array should be in the following format: - * - * [ - * 'field1' => 'error message', - * 'field2' => 'error message', - * ] - * - * @return array<string,string> - */ - public function getErrors(): array; - - /** - * Sets the error for a specific field. Used by custom validation methods. - */ - public function setError(string $alias, string $error): ValidationInterface; - - /** - * Resets the class to a blank slate. Should be called whenever - * you need to process more than one array. - */ - public function reset(): ValidationInterface; - - /** - * Loads custom rule groups (if set) into the current rules. - * - * Rules can be pre-defined in Config\Validation and can - * be any name, but must all still be an array of the - * same format used with setRules(). Additionally, check - * for {group}_errors for an array of custom error messages. - * - * @param non-empty-string|null $group - * - * @return array - */ - public function loadRuleGroup(?string $group = null); - - /** - * Checks to see if an error exists for the given field. - */ - public function hasError(string $field): bool; - - /** - * Returns the rendered HTML of the errors as defined in $template. - */ - public function listErrors(string $template = 'list'): string; - - /** - * Displays a single error in formatted HTML as defined in the $template view. - */ - public function showError(string $field, string $template = 'single'): string; - - /** - * Returns the actual validated data. - */ - public function getValidated(): array; -} diff --git a/system4.4.6/Validation/Views/list.php b/system4.4.6/Validation/Views/list.php deleted file mode 100644 index 3669f038..00000000 --- a/system4.4.6/Validation/Views/list.php +++ /dev/null @@ -1,9 +0,0 @@ -<?php if (isset($errors) && $errors !== []) : ?> - <div class="errors" role="alert"> - <ul> - <?php foreach ($errors as $error) : ?> - <li><?= esc($error) ?></li> - <?php endforeach ?> - </ul> - </div> -<?php endif ?> diff --git a/system4.4.6/Validation/Views/single.php b/system4.4.6/Validation/Views/single.php deleted file mode 100644 index 3967917d..00000000 --- a/system4.4.6/Validation/Views/single.php +++ /dev/null @@ -1 +0,0 @@ -<span class="help-block"><?= esc($error) ?></span> diff --git a/system4.4.6/View/Cell.php b/system4.4.6/View/Cell.php deleted file mode 100644 index 141ceaf3..00000000 --- a/system4.4.6/View/Cell.php +++ /dev/null @@ -1,310 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\View; - -use CodeIgniter\Cache\CacheInterface; -use CodeIgniter\Config\Factories; -use CodeIgniter\View\Cells\Cell as BaseCell; -use CodeIgniter\View\Exceptions\ViewException; -use Config\Services; -use ReflectionException; -use ReflectionMethod; - -/** - * Class Cell - * - * A simple class that can call any other class that can be loaded, - * and echo out it's result. Intended for displaying small blocks of - * content within views that can be managed by other libraries and - * not require they are loaded within controller. - * - * Used with the helper function, it's use will look like: - * - * viewCell('\Some\Class::method', 'limit=5 sort=asc', 60, 'cache-name'); - * - * Parameters are matched up with the callback method's arguments of the same name: - * - * class Class { - * function method($limit, $sort) - * } - * - * Alternatively, the params will be passed into the callback method as a simple array - * if matching params are not found. - * - * class Class { - * function method(array $params=null) - * } - * - * @see \CodeIgniter\View\CellTest - */ -class Cell -{ - /** - * Instance of the current Cache Instance - * - * @var CacheInterface - */ - protected $cache; - - /** - * Cell constructor. - */ - public function __construct(CacheInterface $cache) - { - $this->cache = $cache; - } - - /** - * Render a cell, returning its body as a string. - * - * @param string $library Cell class and method name. - * @param array|string|null $params Parameters to pass to the method. - * @param int $ttl Number of seconds to cache the cell. - * @param string|null $cacheName Cache item name. - * - * @throws ReflectionException - */ - public function render(string $library, $params = null, int $ttl = 0, ?string $cacheName = null): string - { - [$instance, $method] = $this->determineClass($library); - - $class = is_object($instance) - ? get_class($instance) - : null; - - $params = $this->prepareParams($params); - - // Is the output cached? - $cacheName ??= str_replace(['\\', '/'], '', $class) . $method . md5(serialize($params)); - - if ($output = $this->cache->get($cacheName)) { - return $output; - } - - if (method_exists($instance, 'initController')) { - $instance->initController(Services::request(), Services::response(), Services::logger()); - } - - if (! method_exists($instance, $method)) { - throw ViewException::forInvalidCellMethod($class, $method); - } - - $output = $instance instanceof BaseCell - ? $this->renderCell($instance, $method, $params) - : $this->renderSimpleClass($instance, $method, $params, $class); - - // Can we cache it? - if ($ttl !== 0) { - $this->cache->save($cacheName, $output, $ttl); - } - - return $output; - } - - /** - * Parses the params attribute. If an array, returns untouched. - * If a string, it should be in the format "key1=value key2=value". - * It will be split and returned as an array. - * - * @param array|string|null $params - * - * @return array - */ - public function prepareParams($params) - { - if ( - ($params === null || $params === '' || $params === []) - || (! is_string($params) && ! is_array($params)) - ) { - return []; - } - - if (is_string($params)) { - $newParams = []; - $separator = ' '; - - if (strpos($params, ',') !== false) { - $separator = ','; - } - - $params = explode($separator, $params); - unset($separator); - - foreach ($params as $p) { - if ($p !== '') { - [$key, $val] = explode('=', $p); - - $newParams[trim($key)] = trim($val, ', '); - } - } - - $params = $newParams; - unset($newParams); - } - - if ($params === []) { - return []; - } - - return $params; - } - - /** - * Given the library string, attempts to determine the class and method - * to call. - */ - protected function determineClass(string $library): array - { - // We don't want to actually call static methods - // by default, so convert any double colons. - $library = str_replace('::', ':', $library); - - // controlled cells might be called with just - // the class name, so add a default method - if (strpos($library, ':') === false) { - $library .= ':render'; - } - - [$class, $method] = explode(':', $library); - - if ($class === '') { - throw ViewException::forNoCellClass(); - } - - // locate and return an instance of the cell - $object = Factories::cells($class, ['getShared' => false]); - - if (! is_object($object)) { - throw ViewException::forInvalidCellClass($class); - } - - if ($method === '') { - $method = 'index'; - } - - return [ - $object, - $method, - ]; - } - - /** - * Renders a cell that extends the BaseCell class. - */ - final protected function renderCell(BaseCell $instance, string $method, array $params): string - { - // Only allow public properties to be set, or protected/private - // properties that have a method to get them (get<Foo>Property()) - $publicProperties = $instance->getPublicProperties(); - $privateProperties = array_column($instance->getNonPublicProperties(), 'name'); - $publicParams = array_intersect_key($params, $publicProperties); - - foreach ($params as $key => $value) { - $getter = 'get' . ucfirst($key) . 'Property'; - if (in_array($key, $privateProperties, true) && method_exists($instance, $getter)) { - $publicParams[$key] = $value; - } - } - - // Fill in any public properties that were passed in - // but only ones that are in the $pulibcProperties array. - $instance = $instance->fill($publicParams); - - // If there are any protected/private properties, we need to - // send them to the mount() method. - if (method_exists($instance, 'mount')) { - // if any $params have keys that match the name of an argument in the - // mount method, pass those variables to the method. - $mountParams = $this->getMethodParams($instance, 'mount', $params); - $instance->mount(...$mountParams); - } - - return $instance->{$method}(); - } - - /** - * Returns the values from $params that match the parameters - * for a method, in the order they are defined. This allows - * them to be passed directly into the method. - */ - private function getMethodParams(BaseCell $instance, string $method, array $params): array - { - $mountParams = []; - - try { - $reflectionMethod = new ReflectionMethod($instance, $method); - $reflectionParams = $reflectionMethod->getParameters(); - - foreach ($reflectionParams as $reflectionParam) { - $paramName = $reflectionParam->getName(); - - if (array_key_exists($paramName, $params)) { - $mountParams[] = $params[$paramName]; - } - } - } catch (ReflectionException $e) { - // do nothing - } - - return $mountParams; - } - - /** - * Renders the non-Cell class, passing in the string/array params. - * - * @todo Determine if this can be refactored to use $this-getMethodParams(). - * - * @param object $instance - */ - final protected function renderSimpleClass($instance, string $method, array $params, string $class): string - { - // Try to match up the parameter list we were provided - // with the parameter name in the callback method. - $refMethod = new ReflectionMethod($instance, $method); - $paramCount = $refMethod->getNumberOfParameters(); - $refParams = $refMethod->getParameters(); - - if ($paramCount === 0) { - if ($params !== []) { - throw ViewException::forMissingCellParameters($class, $method); - } - - $output = $instance->{$method}(); - } elseif (($paramCount === 1) - && ((! array_key_exists($refParams[0]->name, $params)) - || (array_key_exists($refParams[0]->name, $params) - && count($params) !== 1)) - ) { - $output = $instance->{$method}($params); - } else { - $fireArgs = []; - $methodParams = []; - - foreach ($refParams as $arg) { - $methodParams[$arg->name] = true; - if (array_key_exists($arg->name, $params)) { - $fireArgs[$arg->name] = $params[$arg->name]; - } - } - - foreach (array_keys($params) as $key) { - if (! isset($methodParams[$key])) { - throw ViewException::forInvalidCellParameter($key); - } - } - - $output = $instance->{$method}(...array_values($fireArgs)); - } - - return $output; - } -} diff --git a/system4.4.6/View/Cells/Cell.php b/system4.4.6/View/Cells/Cell.php deleted file mode 100644 index dc97fd99..00000000 --- a/system4.4.6/View/Cells/Cell.php +++ /dev/null @@ -1,152 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\View\Cells; - -use CodeIgniter\Traits\PropertiesTrait; -use LogicException; -use ReflectionClass; - -/** - * Class Cell - * - * The base class that View Cells should extend. - * Provides extended features for managing/rendering - * a single cell's contents. - * - * @function mount() - */ -class Cell -{ - use PropertiesTrait; - - /** - * The name of the view to render. - * If empty, will be determined based - * on the cell class' name. - */ - protected string $view = ''; - - /** - * Responsible for converting the view into HTML. - * Expected to be overridden by the child class - * in many occasions, but not all. - */ - public function render(): string - { - if (! function_exists('decamelize')) { - helper('inflector'); - } - - return $this->view($this->view); - } - - /** - * Sets the view to use when rendered. - * - * @return $this - */ - public function setView(string $view) - { - $this->view = $view; - - return $this; - } - - /** - * Actually renders the view, and returns the HTML. - * In order to provide access to public properties and methods - * from within the view, this method extracts $data into the - * current scope and captures the output buffer instead of - * relying on the view service. - * - * @throws LogicException - */ - final protected function view(?string $view, array $data = []): string - { - $properties = $this->getPublicProperties(); - $properties = $this->includeComputedProperties($properties); - $properties = array_merge($properties, $data); - - $view = (string) $view; - - if ($view === '') { - $viewName = decamelize(class_basename(static::class)); - $directory = dirname((new ReflectionClass($this))->getFileName()) . DIRECTORY_SEPARATOR; - - $possibleView1 = $directory . substr($viewName, 0, strrpos($viewName, '_cell')) . '.php'; - $possibleView2 = $directory . $viewName . '.php'; - } - - if ($view !== '' && ! is_file($view)) { - $directory = dirname((new ReflectionClass($this))->getFileName()) . DIRECTORY_SEPARATOR; - - $view = $directory . $view . '.php'; - } - - $candidateViews = array_filter( - [$view, $possibleView1 ?? '', $possibleView2 ?? ''], - static fn (string $path): bool => $path !== '' && is_file($path) - ); - - if ($candidateViews === []) { - throw new LogicException(sprintf( - 'Cannot locate the view file for the "%s" cell.', - static::class - )); - } - - $foundView = current($candidateViews); - - return (function () use ($properties, $foundView): string { - extract($properties); - ob_start(); - include $foundView; - - return ob_get_clean(); - })(); - } - - /** - * Provides capability to render on string casting. - */ - public function __toString() - { - return $this->render(); - } - - /** - * Allows the developer to define computed properties - * as methods with `get` prefixed to the protected/private property name. - */ - private function includeComputedProperties(array $properties): array - { - $reservedProperties = ['data', 'view']; - $privateProperties = $this->getNonPublicProperties(); - - foreach ($privateProperties as $property) { - $name = $property->getName(); - - // don't include any methods in the base class - if (in_array($name, $reservedProperties, true)) { - continue; - } - - $computedMethod = 'get' . ucfirst($name) . 'Property'; - - if (method_exists($this, $computedMethod)) { - $properties[$name] = $this->{$computedMethod}(); - } - } - - return $properties; - } -} diff --git a/system4.4.6/View/Exceptions/ViewException.php b/system4.4.6/View/Exceptions/ViewException.php deleted file mode 100644 index 84ab72c5..00000000 --- a/system4.4.6/View/Exceptions/ViewException.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\View\Exceptions; - -use CodeIgniter\Exceptions\FrameworkException; - -class ViewException extends FrameworkException -{ - /** - * @return static - */ - public static function forInvalidCellMethod(string $class, string $method) - { - return new static(lang('View.invalidCellMethod', ['class' => $class, 'method' => $method])); - } - - /** - * @return static - */ - public static function forMissingCellParameters(string $class, string $method) - { - return new static(lang('View.missingCellParameters', ['class' => $class, 'method' => $method])); - } - - /** - * @return static - */ - public static function forInvalidCellParameter(string $key) - { - return new static(lang('View.invalidCellParameter', [$key])); - } - - /** - * @return static - */ - public static function forNoCellClass() - { - return new static(lang('View.noCellClass')); - } - - /** - * @return static - */ - public static function forInvalidCellClass(?string $class = null) - { - return new static(lang('View.invalidCellClass', [$class])); - } - - /** - * @return static - */ - public static function forTagSyntaxError(string $output) - { - return new static(lang('View.tagSyntaxError', [$output])); - } - - /** - * @return static - */ - public static function forInvalidDecorator(string $className) - { - return new static(lang('View.invalidDecoratorClass', [$className])); - } -} diff --git a/system4.4.6/View/Filters.php b/system4.4.6/View/Filters.php deleted file mode 100644 index 4b89b126..00000000 --- a/system4.4.6/View/Filters.php +++ /dev/null @@ -1,250 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\View; - -use Config\Services; -use NumberFormatter; - -/** - * View filters - */ -class Filters -{ - /** - * Returns $value as all lowercase with the first letter capitalized. - */ - public static function capitalize(string $value): string - { - return ucfirst(strtolower($value)); - } - - /** - * Formats a date into the given $format. - * - * @param int|string|null $value - */ - public static function date($value, string $format): string - { - if (is_string($value) && ! is_numeric($value)) { - $value = strtotime($value); - } - - return date($format, $value); - } - - /** - * Given a string or DateTime object, will return the date modified - * by the given value. Returns the value as a unix timestamp - * - * Example: - * my_date|date_modify(+1 day) - * - * @param int|string|null $value - * - * @return false|int - */ - public static function date_modify($value, string $adjustment) - { - $value = static::date($value, 'Y-m-d H:i:s'); - - return strtotime($adjustment, strtotime($value)); - } - - /** - * Returns the given default value if $value is empty or undefined. - * - * @param array|bool|float|int|object|resource|string|null $value - */ - public static function default($value, string $default): string - { - return empty($value) // @phpstan-ignore-line - ? $default - : $value; - } - - /** - * Escapes the given value with our `esc()` helper function. - * - * @param string $value - * @phpstan-param 'html'|'js'|'css'|'url'|'attr'|'raw' $context - */ - public static function esc($value, string $context = 'html'): string - { - return esc($value, $context); - } - - /** - * Returns an excerpt of the given string. - */ - public static function excerpt(string $value, string $phrase, int $radius = 100): string - { - helper('text'); - - return excerpt($value, $phrase, $radius); - } - - /** - * Highlights a given phrase within the text using '<mark></mark>' tags. - */ - public static function highlight(string $value, string $phrase): string - { - helper('text'); - - return highlight_phrase($value, $phrase); - } - - /** - * Highlights code samples with HTML/CSS. - * - * @param string $value - */ - public static function highlight_code($value): string - { - helper('text'); - - return highlight_code($value); - } - - /** - * Limits the number of characters to $limit, and trails of with an ellipsis. - * Will break at word break so may be more or less than $limit. - * - * @param string $value - */ - public static function limit_chars($value, int $limit = 500): string - { - helper('text'); - - return character_limiter($value, $limit); - } - - /** - * Limits the number of words to $limit, and trails of with an ellipsis. - * - * @param string $value - */ - public static function limit_words($value, int $limit = 100): string - { - helper('text'); - - return word_limiter($value, $limit); - } - - /** - * Returns the $value displayed in a localized manner. - * - * @param float|int $value - */ - public static function local_number($value, string $type = 'decimal', int $precision = 4, ?string $locale = null): string - { - helper('number'); - - $types = [ - 'decimal' => NumberFormatter::DECIMAL, - 'currency' => NumberFormatter::CURRENCY, - 'percent' => NumberFormatter::PERCENT, - 'scientific' => NumberFormatter::SCIENTIFIC, - 'spellout' => NumberFormatter::SPELLOUT, - 'ordinal' => NumberFormatter::ORDINAL, - 'duration' => NumberFormatter::DURATION, - ]; - - return format_number($value, $precision, $locale, ['type' => $types[$type]]); - } - - /** - * Returns the $value displayed as a currency string. - * - * @param float|int $value - * @param int $fraction - */ - public static function local_currency($value, string $currency, ?string $locale = null, $fraction = null): string - { - helper('number'); - - $fraction ??= 0; - - $options = [ - 'type' => NumberFormatter::CURRENCY, - 'currency' => $currency, - 'fraction' => $fraction, - ]; - - return format_number($value, 2, $locale, $options); - } - - /** - * Returns a string with all instances of newline character (\n) - * converted to an HTML <br> tag. - */ - public static function nl2br(string $value): string - { - $typography = Services::typography(); - - return $typography->nl2brExceptPre($value); - } - - /** - * Takes a body of text and uses the auto_typography() method to - * turn it into prettier, easier-to-read, prose. - */ - public static function prose(string $value): string - { - $typography = Services::typography(); - - return $typography->autoTypography($value); - } - - /** - * Rounds a given $value in one of 3 ways; - * - * - common Normal rounding - * - ceil always rounds up - * - floor always rounds down - * - * @param int|string $precision precision or type - * - * @return float|string - */ - public static function round(string $value, $precision = 2, string $type = 'common') - { - // In case that $precision is a type like `{ value1|round(ceil) }` - if (! is_numeric($precision)) { - $type = $precision; - $precision = 2; - } else { - $precision = (int) $precision; - } - - switch ($type) { - case 'common': - return round((float) $value, $precision); - - case 'ceil': - return ceil((float) $value); - - case 'floor': - return floor((float) $value); - } - - // Still here, just return the value. - return $value; - } - - /** - * Returns a "title case" version of the string. - */ - public static function title(string $value): string - { - return ucwords(strtolower($value)); - } -} diff --git a/system4.4.6/View/Parser.php b/system4.4.6/View/Parser.php deleted file mode 100644 index ff5656a5..00000000 --- a/system4.4.6/View/Parser.php +++ /dev/null @@ -1,723 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\View; - -use CodeIgniter\Autoloader\FileLocator; -use CodeIgniter\View\Exceptions\ViewException; -use Config\View as ViewConfig; -use ParseError; -use Psr\Log\LoggerInterface; - -/** - * Class for parsing pseudo-vars - * - * @phpstan-type parser_callable (callable(mixed): mixed) - * @phpstan-type parser_callable_string (callable(mixed): mixed)&string - * - * @see \CodeIgniter\View\ParserTest - */ -class Parser extends View -{ - use ViewDecoratorTrait; - - /** - * Left delimiter character for pseudo vars - * - * @var string - */ - public $leftDelimiter = '{'; - - /** - * Right delimiter character for pseudo vars - * - * @var string - */ - public $rightDelimiter = '}'; - - /** - * Left delimiter characters for conditionals - */ - protected string $leftConditionalDelimiter = '{'; - - /** - * Right delimiter characters for conditionals - */ - protected string $rightConditionalDelimiter = '}'; - - /** - * Stores extracted noparse blocks. - * - * @var array - */ - protected $noparseBlocks = []; - - /** - * Stores any plugins registered at run-time. - * - * @var array<string, array<string>|callable|string> - * @phpstan-var array<string, array<parser_callable_string>|parser_callable_string|parser_callable> - */ - protected $plugins = []; - - /** - * Stores the context for each data element - * when set by `setData` so the context is respected. - * - * @var array - */ - protected $dataContexts = []; - - /** - * Constructor - * - * @param FileLocator|null $loader - */ - public function __construct(ViewConfig $config, ?string $viewPath = null, $loader = null, ?bool $debug = null, ?LoggerInterface $logger = null) - { - // Ensure user plugins override core plugins. - $this->plugins = $config->plugins; - - parent::__construct($config, $viewPath, $loader, $debug, $logger); - } - - /** - * Parse a template - * - * Parses pseudo-variables contained in the specified template view, - * replacing them with any data that has already been set. - */ - public function render(string $view, ?array $options = null, ?bool $saveData = null): string - { - $start = microtime(true); - if ($saveData === null) { - $saveData = $this->config->saveData; - } - - $fileExt = pathinfo($view, PATHINFO_EXTENSION); - $view = ($fileExt === '') ? $view . '.php' : $view; // allow Views as .html, .tpl, etc (from CI3) - - $cacheName = $options['cache_name'] ?? str_replace('.php', '', $view); - - // Was it cached? - if (isset($options['cache']) && ($output = cache($cacheName))) { - $this->logPerformance($start, microtime(true), $view); - - return $output; - } - - $file = $this->viewPath . $view; - - if (! is_file($file)) { - $fileOrig = $file; - $file = $this->loader->locateFile($view, 'Views'); - - // locateFile() will return false if the file cannot be found. - if ($file === false) { - throw ViewException::forInvalidFile($fileOrig); - } - } - - if ($this->tempData === null) { - $this->tempData = $this->data; - } - - $template = file_get_contents($file); - $output = $this->parse($template, $this->tempData, $options); - $this->logPerformance($start, microtime(true), $view); - - if ($saveData) { - $this->data = $this->tempData; - } - - $output = $this->decorateOutput($output); - - // Should we cache? - if (isset($options['cache'])) { - cache()->save($cacheName, $output, (int) $options['cache']); - } - $this->tempData = null; - - return $output; - } - - /** - * Parse a String - * - * Parses pseudo-variables contained in the specified string, - * replacing them with any data that has already been set. - */ - public function renderString(string $template, ?array $options = null, ?bool $saveData = null): string - { - $start = microtime(true); - if ($saveData === null) { - $saveData = $this->config->saveData; - } - - if ($this->tempData === null) { - $this->tempData = $this->data; - } - - $output = $this->parse($template, $this->tempData, $options); - - $this->logPerformance($start, microtime(true), $this->excerpt($template)); - - if ($saveData) { - $this->data = $this->tempData; - } - - $this->tempData = null; - - return $output; - } - - /** - * Sets several pieces of view data at once. - * In the Parser, we need to store the context here - * so that the variable is correctly handled within the - * parsing itself, and contexts (including raw) are respected. - * - * @param non-empty-string|null $context The context to escape it for. - * If 'raw', no escaping will happen. - * @phpstan-param null|'html'|'js'|'css'|'url'|'attr'|'raw' $context - */ - public function setData(array $data = [], ?string $context = null): RendererInterface - { - if ($context !== null && $context !== '') { - foreach ($data as $key => &$value) { - if (is_array($value)) { - foreach ($value as &$obj) { - $obj = $this->objectToArray($obj); - } - } else { - $value = $this->objectToArray($value); - } - - $this->dataContexts[$key] = $context; - } - } - - $this->tempData ??= $this->data; - $this->tempData = array_merge($this->tempData, $data); - - return $this; - } - - /** - * Parse a template - * - * Parses pseudo-variables contained in the specified template, - * replacing them with the data in the second param - * - * @param array $options Future options - */ - protected function parse(string $template, array $data = [], ?array $options = null): string - { - if ($template === '') { - return ''; - } - - // Remove any possible PHP tags since we don't support it - // and parseConditionals needs it clean anyway... - $template = str_replace(['<?', '?>'], ['<?', '?>'], $template); - - $template = $this->parseComments($template); - $template = $this->extractNoparse($template); - - // Replace any conditional code here so we don't have to parse as much - $template = $this->parseConditionals($template); - - // Handle any plugins before normal data, so that - // it can potentially modify any template between its tags. - $template = $this->parsePlugins($template); - - // loop over the data variables, replacing - // the content as we go. - foreach ($data as $key => $val) { - $escape = true; - - if (is_array($val)) { - $escape = false; - $replace = $this->parsePair($key, $val, $template); - } else { - $replace = $this->parseSingle($key, (string) $val); - } - - foreach ($replace as $pattern => $content) { - $template = $this->replaceSingle($pattern, $content, $template, $escape); - } - } - - return $this->insertNoparse($template); - } - - /** - * Parse a single key/value, extracting it - */ - protected function parseSingle(string $key, string $val): array - { - $pattern = '#' . $this->leftDelimiter . '!?\s*' . preg_quote($key, '#') - . '(?(?=\s*\|\s*)(\s*\|*\s*([|\w<>=\(\),:.\-\s\+\\\\/]+)*\s*))(\s*)!?' - . $this->rightDelimiter . '#ums'; - - return [$pattern => $val]; - } - - /** - * Parse a tag pair - * - * Parses tag pairs: {some_tag} string... {/some_tag} - */ - protected function parsePair(string $variable, array $data, string $template): array - { - // Holds the replacement patterns and contents - // that will be used within a preg_replace in parse() - $replace = []; - - // Find all matches of space-flexible versions of {tag}{/tag} so we - // have something to loop over. - preg_match_all( - '#' . $this->leftDelimiter . '\s*' . preg_quote($variable, '#') . '\s*' . $this->rightDelimiter . '(.+?)' . - $this->leftDelimiter . '\s*/' . preg_quote($variable, '#') . '\s*' . $this->rightDelimiter . '#us', - $template, - $matches, - PREG_SET_ORDER - ); - - /* - * Each match looks like: - * - * $match[0] {tag}...{/tag} - * $match[1] Contents inside the tag - */ - foreach ($matches as $match) { - // Loop over each piece of $data, replacing - // its contents so that we know what to replace in parse() - $str = ''; // holds the new contents for this tag pair. - - foreach ($data as $row) { - // Objects that have a `toArray()` method should be - // converted with that method (i.e. Entities) - if (is_object($row) && method_exists($row, 'toArray')) { - $row = $row->toArray(); - } - // Otherwise, cast as an array and it will grab public properties. - elseif (is_object($row)) { - $row = (array) $row; - } - - $temp = []; - $pairs = []; - $out = $match[1]; - - foreach ($row as $key => $val) { - // For nested data, send us back through this method... - if (is_array($val)) { - $pair = $this->parsePair($key, $val, $match[1]); - - if ($pair !== []) { - $pairs[array_keys($pair)[0]] = true; - - $temp = array_merge($temp, $pair); - } - - continue; - } - - if (is_object($val)) { - $val = 'Class: ' . get_class($val); - } elseif (is_resource($val)) { - $val = 'Resource'; - } - - $temp['#' . $this->leftDelimiter . '!?\s*' . preg_quote($key, '#') . '(?(?=\s*\|\s*)(\s*\|*\s*([|\w<>=\(\),:.\-\s\+\\\\/]+)*\s*))(\s*)!?' . $this->rightDelimiter . '#us'] = $val; - } - - // Now replace our placeholders with the new content. - foreach ($temp as $pattern => $content) { - $out = $this->replaceSingle($pattern, $content, $out, ! isset($pairs[$pattern])); - } - - $str .= $out; - } - - $escapedMatch = preg_quote($match[0], '#'); - - $replace['#' . $escapedMatch . '#us'] = $str; - } - - return $replace; - } - - /** - * Removes any comments from the file. Comments are wrapped in {# #} symbols: - * - * {# This is a comment #} - */ - protected function parseComments(string $template): string - { - return preg_replace('/\{#.*?#\}/us', '', $template); - } - - /** - * Extracts noparse blocks, inserting a hash in its place so that - * those blocks of the page are not touched by parsing. - */ - protected function extractNoparse(string $template): string - { - $pattern = '/\{\s*noparse\s*\}(.*?)\{\s*\/noparse\s*\}/ums'; - - /* - * $matches[][0] is the raw match - * $matches[][1] is the contents - */ - if (preg_match_all($pattern, $template, $matches, PREG_SET_ORDER)) { - foreach ($matches as $match) { - // Create a hash of the contents to insert in its place. - $hash = md5($match[1]); - $this->noparseBlocks[$hash] = $match[1]; - $template = str_replace($match[0], "noparse_{$hash}", $template); - } - } - - return $template; - } - - /** - * Re-inserts the noparsed contents back into the template. - */ - public function insertNoparse(string $template): string - { - foreach ($this->noparseBlocks as $hash => $replace) { - $template = str_replace("noparse_{$hash}", $replace, $template); - unset($this->noparseBlocks[$hash]); - } - - return $template; - } - - /** - * Parses any conditionals in the code, removing blocks that don't - * pass so we don't try to parse it later. - * - * Valid conditionals: - * - if - * - elseif - * - else - */ - protected function parseConditionals(string $template): string - { - $leftDelimiter = preg_quote($this->leftConditionalDelimiter, '/'); - $rightDelimiter = preg_quote($this->rightConditionalDelimiter, '/'); - - $pattern = '/' - . $leftDelimiter - . '\s*(if|elseif)\s*((?:\()?(.*?)(?:\))?)\s*' - . $rightDelimiter - . '/ums'; - - /* - * For each match: - * [0] = raw match `{if var}` - * [1] = conditional `if` - * [2] = condition `do === true` - * [3] = same as [2] - */ - preg_match_all($pattern, $template, $matches, PREG_SET_ORDER); - - foreach ($matches as $match) { - // Build the string to replace the `if` statement with. - $condition = $match[2]; - - $statement = $match[1] === 'elseif' ? '<?php elseif (' . $condition . '): ?>' : '<?php if (' . $condition . '): ?>'; - $template = str_replace($match[0], $statement, $template); - } - - $template = preg_replace( - '/' . $leftDelimiter . '\s*else\s*' . $rightDelimiter . '/ums', - '<?php else: ?>', - $template - ); - $template = preg_replace( - '/' . $leftDelimiter . '\s*endif\s*' . $rightDelimiter . '/ums', - '<?php endif; ?>', - $template - ); - - // Parse the PHP itself, or insert an error so they can debug - ob_start(); - - if ($this->tempData === null) { - $this->tempData = $this->data; - } - - extract($this->tempData); - - try { - eval('?>' . $template . '<?php '); - } catch (ParseError $e) { - ob_end_clean(); - - throw ViewException::forTagSyntaxError(str_replace(['?>', '<?php '], '', $template)); - } - - return ob_get_clean(); - } - - /** - * Over-ride the substitution field delimiters. - * - * @param string $leftDelimiter - * @param string $rightDelimiter - */ - public function setDelimiters($leftDelimiter = '{', $rightDelimiter = '}'): RendererInterface - { - $this->leftDelimiter = $leftDelimiter; - $this->rightDelimiter = $rightDelimiter; - - return $this; - } - - /** - * Over-ride the substitution conditional delimiters. - * - * @param string $leftDelimiter - * @param string $rightDelimiter - */ - public function setConditionalDelimiters($leftDelimiter = '{', $rightDelimiter = '}'): RendererInterface - { - $this->leftConditionalDelimiter = $leftDelimiter; - $this->rightConditionalDelimiter = $rightDelimiter; - - return $this; - } - - /** - * Handles replacing a pseudo-variable with the actual content. Will double-check - * for escaping brackets. - * - * @param array|string $pattern - * @param string $content - * @param string $template - */ - protected function replaceSingle($pattern, $content, $template, bool $escape = false): string - { - $content = (string) $content; - - // Replace the content in the template - return preg_replace_callback($pattern, function ($matches) use ($content, $escape) { - // Check for {! !} syntax to not escape this one. - if ( - strpos($matches[0], $this->leftDelimiter . '!') === 0 - && substr($matches[0], -1 - strlen($this->rightDelimiter)) === '!' . $this->rightDelimiter - ) { - $escape = false; - } - - return $this->prepareReplacement($matches, $content, $escape); - }, (string) $template); - } - - /** - * Callback used during parse() to apply any filters to the value. - */ - protected function prepareReplacement(array $matches, string $replace, bool $escape = true): string - { - $orig = array_shift($matches); - - // Our regex earlier will leave all chained values on a single line - // so we need to break them apart so we can apply them all. - $filters = (isset($matches[1]) && $matches[1] !== '') ? explode('|', $matches[1]) : []; - - if ($escape && $filters === [] && ($context = $this->shouldAddEscaping($orig))) { - $filters[] = "esc({$context})"; - } - - return $this->applyFilters($replace, $filters); - } - - /** - * Checks the placeholder the view provided to see if we need to provide any autoescaping. - * - * @return false|string - */ - public function shouldAddEscaping(string $key) - { - $escape = false; - - $key = trim(str_replace(['{', '}'], '', $key)); - - // If the key has a context stored (from setData) - // we need to respect that. - if (array_key_exists($key, $this->dataContexts)) { - if ($this->dataContexts[$key] !== 'raw') { - return $this->dataContexts[$key]; - } - } - // No pipes, then we know we need to escape - elseif (strpos($key, '|') === false) { - $escape = 'html'; - } - // If there's a `noescape` then we're definitely false. - elseif (strpos($key, 'noescape') !== false) { - $escape = false; - } - // If no `esc` filter is found, then we'll need to add one. - elseif (! preg_match('/\s+esc/u', $key)) { - $escape = 'html'; - } - - return $escape; - } - - /** - * Given a set of filters, will apply each of the filters in turn - * to $replace, and return the modified string. - */ - protected function applyFilters(string $replace, array $filters): string - { - // Determine the requested filters - foreach ($filters as $filter) { - // Grab any parameter we might need to send - preg_match('/\([\w<>=\/\\\,:.\-\s\+]+\)/u', $filter, $param); - - // Remove the () and spaces to we have just the parameter left - $param = ($param !== []) ? trim($param[0], '() ') : null; - - // Params can be separated by commas to allow multiple parameters for the filter - if ($param !== null && $param !== '') { - $param = explode(',', $param); - - // Clean it up - foreach ($param as &$p) { - $p = trim($p, ' "'); - } - } else { - $param = []; - } - - // Get our filter name - $filter = $param !== [] ? trim(strtolower(substr($filter, 0, strpos($filter, '(')))) : trim($filter); - - if (! array_key_exists($filter, $this->config->filters)) { - continue; - } - - // Filter it.... - $replace = $this->config->filters[$filter]($replace, ...$param); - } - - return $replace; - } - - // Plugins - - /** - * Scans the template for any parser plugins, and attempts to execute them. - * Plugins are delimited by {+ ... +} - * - * @return string - */ - protected function parsePlugins(string $template) - { - foreach ($this->plugins as $plugin => $callable) { - // Paired tags are enclosed in an array in the config array. - $isPair = is_array($callable); - $callable = $isPair ? array_shift($callable) : $callable; - - // See https://regex101.com/r/BCBBKB/1 - $pattern = $isPair - ? '#\{\+\s*' . $plugin . '([\w=\-_:\+\s\(\)/"@.]*)?\s*\+\}(.+?)\{\+\s*/' . $plugin . '\s*\+\}#uims' - : '#\{\+\s*' . $plugin . '([\w=\-_:\+\s\(\)/"@.]*)?\s*\+\}#uims'; - - /** - * Match tag pairs - * - * Each match is an array: - * $matches[0] = entire matched string - * $matches[1] = all parameters string in opening tag - * $matches[2] = content between the tags to send to the plugin. - */ - if (! preg_match_all($pattern, $template, $matches, PREG_SET_ORDER)) { - continue; - } - - foreach ($matches as $match) { - $params = []; - - preg_match_all('/([\w-]+=\"[^"]+\")|([\w-]+=[^\"\s=]+)|(\"[^"]+\")|(\S+)/u', trim($match[1]), $matchesParams); - - foreach ($matchesParams[0] as $item) { - $keyVal = explode('=', $item); - - if (count($keyVal) === 2) { - $params[$keyVal[0]] = str_replace('"', '', $keyVal[1]); - } else { - $params[] = str_replace('"', '', $item); - } - } - - $template = $isPair - ? str_replace($match[0], $callable($match[2], $params), $template) - : str_replace($match[0], $callable($params), $template); - } - } - - return $template; - } - - /** - * Makes a new plugin available during the parsing of the template. - * - * @return $this - */ - public function addPlugin(string $alias, callable $callback, bool $isPair = false) - { - $this->plugins[$alias] = $isPair ? [$callback] : $callback; - - return $this; - } - - /** - * Removes a plugin from the available plugins. - * - * @return $this - */ - public function removePlugin(string $alias) - { - unset($this->plugins[$alias]); - - return $this; - } - - /** - * Converts an object to an array, respecting any - * toArray() methods on an object. - * - * @param array|bool|float|int|object|string|null $value - * - * @return array|bool|float|int|string|null - */ - protected function objectToArray($value) - { - // Objects that have a `toArray()` method should be - // converted with that method (i.e. Entities) - if (is_object($value) && method_exists($value, 'toArray')) { - $value = $value->toArray(); - } - // Otherwise, cast as an array and it will grab public properties. - elseif (is_object($value)) { - $value = (array) $value; - } - - return $value; - } -} diff --git a/system4.4.6/View/Plugins.php b/system4.4.6/View/Plugins.php deleted file mode 100644 index a842990d..00000000 --- a/system4.4.6/View/Plugins.php +++ /dev/null @@ -1,122 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\View; - -use CodeIgniter\HTTP\URI; -use Config\Services; - -/** - * View plugins - */ -class Plugins -{ - /** - * Wrap helper function to use as view plugin. - * - * @return string|URI - */ - public static function currentURL() - { - return current_url(); - } - - /** - * Wrap helper function to use as view plugin. - * - * @return string|URI - */ - public static function previousURL() - { - return previous_url(); - } - - /** - * Wrap helper function to use as view plugin. - */ - public static function mailto(array $params = []): string - { - $email = $params['email'] ?? ''; - $title = $params['title'] ?? ''; - $attrs = $params['attributes'] ?? ''; - - return mailto($email, $title, $attrs); - } - - /** - * Wrap helper function to use as view plugin. - */ - public static function safeMailto(array $params = []): string - { - $email = $params['email'] ?? ''; - $title = $params['title'] ?? ''; - $attrs = $params['attributes'] ?? ''; - - return safe_mailto($email, $title, $attrs); - } - - /** - * Wrap helper function to use as view plugin. - */ - public static function lang(array $params = []): string - { - $line = array_shift($params); - - return lang($line, $params); - } - - /** - * Wrap helper function to use as view plugin. - */ - public static function ValidationErrors(array $params = []): string - { - $validator = Services::validation(); - if ($params === []) { - return $validator->listErrors(); - } - - return $validator->showError($params['field']); - } - - /** - * Wrap helper function to use as view plugin. - * - * @return false|string - */ - public static function route(array $params = []) - { - return route_to(...$params); - } - - /** - * Wrap helper function to use as view plugin. - */ - public static function siteURL(array $params = []): string - { - return site_url(...$params); - } - - /** - * Wrap csp_script_nonce() function to use as view plugin. - */ - public static function cspScriptNonce(): string - { - return csp_script_nonce(); - } - - /** - * Wrap csp_style_nonce() function to use as view plugin. - */ - public static function cspStyleNonce(): string - { - return csp_style_nonce(); - } -} diff --git a/system4.4.6/View/RendererInterface.php b/system4.4.6/View/RendererInterface.php deleted file mode 100644 index c4edeb95..00000000 --- a/system4.4.6/View/RendererInterface.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\View; - -/** - * Interface RendererInterface - * - * The interface used for displaying Views and/or theme files. - */ -interface RendererInterface -{ - /** - * Builds the output based upon a file name and any - * data that has already been set. - * - * @param array|null $options Reserved for 3rd-party uses since - * it might be needed to pass additional info - * to other template engines. - * @param bool $saveData Whether to save data for subsequent calls - */ - public function render(string $view, ?array $options = null, bool $saveData = false): string; - - /** - * Builds the output based upon a string and any - * data that has already been set. - * - * @param string $view The view contents - * @param array|null $options Reserved for 3rd-party uses since - * it might be needed to pass additional info - * to other template engines. - * @param bool $saveData Whether to save data for subsequent calls - */ - public function renderString(string $view, ?array $options = null, bool $saveData = false): string; - - /** - * Sets several pieces of view data at once. - * - * @param non-empty-string|null $context The context to escape it for. - * If 'raw', no escaping will happen. - * @phpstan-param null|'html'|'js'|'css'|'url'|'attr'|'raw' $context - * - * @return RendererInterface - */ - public function setData(array $data = [], ?string $context = null); - - /** - * Sets a single piece of view data. - * - * @param mixed $value - * @param non-empty-string|null $context The context to escape it for. - * If 'raw', no escaping will happen. - * @phpstan-param null|'html'|'js'|'css'|'url'|'attr'|'raw' $context - * - * @return RendererInterface - */ - public function setVar(string $name, $value = null, ?string $context = null); - - /** - * Removes all of the view data from the system. - * - * @return RendererInterface - */ - public function resetData(); -} diff --git a/system4.4.6/View/Table.php b/system4.4.6/View/Table.php deleted file mode 100644 index c9cd33d3..00000000 --- a/system4.4.6/View/Table.php +++ /dev/null @@ -1,542 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\View; - -use CodeIgniter\Database\BaseResult; - -/** - * HTML Table Generating Class - * - * Lets you create tables manually or from database result objects, or arrays. - * - * @see \CodeIgniter\View\TableTest - */ -class Table -{ - /** - * Data for table rows - * - * @var list<array>|list<list<array>> - */ - public $rows = []; - - /** - * Data for table heading - * - * @var array - */ - public $heading = []; - - /** - * Data for table footing - * - * @var array - */ - public $footing = []; - - /** - * Whether or not to automatically create the table header - * - * @var bool - */ - public $autoHeading = true; - - /** - * Table caption - * - * @var string|null - */ - public $caption; - - /** - * Table layout template - * - * @var array - */ - public $template; - - /** - * Newline setting - * - * @var string - */ - public $newline = "\n"; - - /** - * Contents of empty cells - * - * @var string - */ - public $emptyCells = ''; - - /** - * Callback for custom table layout - * - * @var callable|null - */ - public $function; - - /** - * Order each inserted row by heading keys - */ - private bool $syncRowsWithHeading = false; - - /** - * Set the template from the table config file if it exists - * - * @param array $config (default: array()) - */ - public function __construct($config = []) - { - // initialize config - foreach ($config as $key => $val) { - $this->template[$key] = $val; - } - } - - /** - * Set the template - * - * @param array $template - * - * @return bool - */ - public function setTemplate($template) - { - if (! is_array($template)) { - return false; - } - - $this->template = $template; - - return true; - } - - /** - * Set the table heading - * - * Can be passed as an array or discreet params - * - * @return Table - */ - public function setHeading() - { - $this->heading = $this->_prepArgs(func_get_args()); - - return $this; - } - - /** - * Set the table footing - * - * Can be passed as an array or discreet params - * - * @return Table - */ - public function setFooting() - { - $this->footing = $this->_prepArgs(func_get_args()); - - return $this; - } - - /** - * Set columns. Takes a one-dimensional array as input and creates - * a multi-dimensional array with a depth equal to the number of - * columns. This allows a single array with many elements to be - * displayed in a table that has a fixed column count. - * - * @param array $array - * @param int $columnLimit - * - * @return array|false - */ - public function makeColumns($array = [], $columnLimit = 0) - { - if (! is_array($array) || $array === [] || ! is_int($columnLimit)) { - return false; - } - - // Turn off the auto-heading feature since it's doubtful we - // will want headings from a one-dimensional array - $this->autoHeading = false; - $this->syncRowsWithHeading = false; - - if ($columnLimit === 0) { - return $array; - } - - $new = []; - - do { - $temp = array_splice($array, 0, $columnLimit); - - if (count($temp) < $columnLimit) { - for ($i = count($temp); $i < $columnLimit; $i++) { - $temp[] = ' '; - } - } - - $new[] = $temp; - } while ($array !== []); - - return $new; - } - - /** - * Set "empty" cells - * - * @param string $value - * - * @return Table - */ - public function setEmpty($value) - { - $this->emptyCells = $value; - - return $this; - } - - /** - * Add a table row - * - * Can be passed as an array or discreet params - * - * @return Table - */ - public function addRow() - { - $tmpRow = $this->_prepArgs(func_get_args()); - - if ($this->syncRowsWithHeading && $this->heading !== []) { - // each key has an index - $keyIndex = array_flip(array_keys($this->heading)); - - // figure out which keys need to be added - $missingKeys = array_diff_key($keyIndex, $tmpRow); - - // Remove all keys which don't exist in $keyIndex - $tmpRow = array_filter($tmpRow, static fn ($k) => array_key_exists($k, $keyIndex), ARRAY_FILTER_USE_KEY); - - // add missing keys to row, but use $this->emptyCells - $tmpRow = array_merge($tmpRow, array_map(fn ($v) => ['data' => $this->emptyCells], $missingKeys)); - - // order keys by $keyIndex values - uksort($tmpRow, static fn ($k1, $k2) => $keyIndex[$k1] <=> $keyIndex[$k2]); - } - $this->rows[] = $tmpRow; - - return $this; - } - - /** - * Set to true if each row column should be synced by keys defined in heading. - * - * If a row has a key which does not exist in heading, it will be filtered out - * If a row does not have a key which exists in heading, the field will stay empty - * - * @return $this - */ - public function setSyncRowsWithHeading(bool $orderByKey) - { - $this->syncRowsWithHeading = $orderByKey; - - return $this; - } - - /** - * Prep Args - * - * Ensures a standard associative array format for all cell data - * - * @return array<string, array>|list<array> - */ - protected function _prepArgs(array $args) - { - // If there is no $args[0], skip this and treat as an associative array - // This can happen if there is only a single key, for example this is passed to table->generate - // array(array('foo'=>'bar')) - if (isset($args[0]) && count($args) === 1 && is_array($args[0])) { - $args = $args[0]; - } - - foreach ($args as $key => $val) { - if (! is_array($val)) { - $args[$key] = ['data' => $val]; - } - } - - return $args; - } - - /** - * Add a table caption - * - * @param string $caption - * - * @return Table - */ - public function setCaption($caption) - { - $this->caption = $caption; - - return $this; - } - - /** - * Generate the table - * - * @param array|BaseResult|null $tableData - * - * @return string - */ - public function generate($tableData = null) - { - // The table data can optionally be passed to this function - // either as a database result object or an array - if ($tableData !== null && $tableData !== []) { - if ($tableData instanceof BaseResult) { - $this->_setFromDBResult($tableData); - } elseif (is_array($tableData)) { - $this->_setFromArray($tableData); - } - } - - // Is there anything to display? No? Smite them! - if ($this->heading === [] && $this->rows === []) { - return 'Undefined table data'; - } - - // Compile and validate the template date - $this->_compileTemplate(); - - // Validate a possibly existing custom cell manipulation function - if (isset($this->function) && ! is_callable($this->function)) { - $this->function = null; - } - - // Build the table! - $out = $this->template['table_open'] . $this->newline; - - // Add any caption here - if ($this->caption) { - $out .= '<caption>' . $this->caption . '</caption>' . $this->newline; - } - - // Is there a table heading to display? - if ($this->heading !== []) { - $headerTag = null; - - if (preg_match('/(<)(td|th)(?=\h|>)/i', $this->template['heading_cell_start'], $matches) === 1) { - $headerTag = $matches[0]; - } - - $out .= $this->template['thead_open'] . $this->newline . $this->template['heading_row_start'] . $this->newline; - - foreach ($this->heading as $heading) { - $temp = $this->template['heading_cell_start']; - - foreach ($heading as $key => $val) { - if ($key !== 'data' && $headerTag !== null) { - $temp = str_replace($headerTag, $headerTag . ' ' . $key . '="' . $val . '"', $temp); - } - } - - $out .= $temp . ($heading['data'] ?? '') . $this->template['heading_cell_end']; - } - - $out .= $this->template['heading_row_end'] . $this->newline . $this->template['thead_close'] . $this->newline; - } - - // Build the table rows - if ($this->rows !== []) { - $out .= $this->template['tbody_open'] . $this->newline; - - $i = 1; - - foreach ($this->rows as $row) { - // We use modulus to alternate the row colors - $name = fmod($i++, 2) ? '' : 'alt_'; - - $out .= $this->template['row_' . $name . 'start'] . $this->newline; - - foreach ($row as $cell) { - $temp = $this->template['cell_' . $name . 'start']; - - foreach ($cell as $key => $val) { - if ($key !== 'data') { - $temp = str_replace('<td', '<td ' . $key . '="' . $val . '"', $temp); - } - } - - $cell = $cell['data'] ?? ''; - $out .= $temp; - - if ($cell === '') { - $out .= $this->emptyCells; - } elseif (isset($this->function)) { - $out .= ($this->function)($cell); - } else { - $out .= $cell; - } - - $out .= $this->template['cell_' . $name . 'end']; - } - - $out .= $this->template['row_' . $name . 'end'] . $this->newline; - } - - $out .= $this->template['tbody_close'] . $this->newline; - } - - // Any table footing to display? - if ($this->footing !== []) { - $footerTag = null; - - if (preg_match('/(<)(td|th)(?=\h|>)/i', $this->template['footing_cell_start'], $matches)) { - $footerTag = $matches[0]; - } - - $out .= $this->template['tfoot_open'] . $this->newline . $this->template['footing_row_start'] . $this->newline; - - foreach ($this->footing as $footing) { - $temp = $this->template['footing_cell_start']; - - foreach ($footing as $key => $val) { - if ($key !== 'data' && $footerTag !== null) { - $temp = str_replace($footerTag, $footerTag . ' ' . $key . '="' . $val . '"', $temp); - } - } - - $out .= $temp . ($footing['data'] ?? '') . $this->template['footing_cell_end']; - } - - $out .= $this->template['footing_row_end'] . $this->newline . $this->template['tfoot_close'] . $this->newline; - } - - // And finally, close off the table - $out .= $this->template['table_close']; - - // Clear table class properties before generating the table - $this->clear(); - - return $out; - } - - /** - * Clears the table arrays. Useful if multiple tables are being generated - * - * @return Table - */ - public function clear() - { - $this->rows = []; - $this->heading = []; - $this->footing = []; - $this->autoHeading = true; - $this->caption = null; - - return $this; - } - - /** - * Set table data from a database result object - * - * @param BaseResult $object Database result object - * - * @return void - */ - protected function _setFromDBResult($object) - { - // First generate the headings from the table column names - if ($this->autoHeading && $this->heading === []) { - $this->heading = $this->_prepArgs($object->getFieldNames()); - } - - foreach ($object->getResultArray() as $row) { - $this->rows[] = $this->_prepArgs($row); - } - } - - /** - * Set table data from an array - * - * @param array $data - * - * @return void - */ - protected function _setFromArray($data) - { - if ($this->autoHeading && $this->heading === []) { - $this->heading = $this->_prepArgs(array_shift($data)); - } - - foreach ($data as &$row) { - $this->addRow($row); - } - } - - /** - * Compile Template - * - * @return void - */ - protected function _compileTemplate() - { - if ($this->template === null) { - $this->template = $this->_defaultTemplate(); - - return; - } - - foreach ($this->_defaultTemplate() as $field => $template) { - if (! isset($this->template[$field])) { - $this->template[$field] = $template; - } - } - } - - /** - * Default Template - * - * @return array - */ - protected function _defaultTemplate() - { - return [ - 'table_open' => '<table border="0" cellpadding="4" cellspacing="0">', - 'thead_open' => '<thead>', - 'thead_close' => '</thead>', - 'heading_row_start' => '<tr>', - 'heading_row_end' => '</tr>', - 'heading_cell_start' => '<th>', - 'heading_cell_end' => '</th>', - 'tfoot_open' => '<tfoot>', - 'tfoot_close' => '</tfoot>', - 'footing_row_start' => '<tr>', - 'footing_row_end' => '</tr>', - 'footing_cell_start' => '<td>', - 'footing_cell_end' => '</td>', - 'tbody_open' => '<tbody>', - 'tbody_close' => '</tbody>', - 'row_start' => '<tr>', - 'row_end' => '</tr>', - 'cell_start' => '<td>', - 'cell_end' => '</td>', - 'row_alt_start' => '<tr>', - 'row_alt_end' => '</tr>', - 'cell_alt_start' => '<td>', - 'cell_alt_end' => '</td>', - 'table_close' => '</table>', - ]; - } -} diff --git a/system4.4.6/View/View.php b/system4.4.6/View/View.php deleted file mode 100644 index ad5c38de..00000000 --- a/system4.4.6/View/View.php +++ /dev/null @@ -1,505 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\View; - -use CodeIgniter\Autoloader\FileLocator; -use CodeIgniter\Debug\Toolbar\Collectors\Views; -use CodeIgniter\Filters\DebugToolbar; -use CodeIgniter\View\Exceptions\ViewException; -use Config\Services; -use Config\Toolbar; -use Config\View as ViewConfig; -use Psr\Log\LoggerInterface; -use RuntimeException; - -/** - * Class View - * - * @see \CodeIgniter\View\ViewTest - */ -class View implements RendererInterface -{ - use ViewDecoratorTrait; - - /** - * Saved Data. - * - * @var array - */ - protected $data = []; - - /** - * Data for the variables that are available in the Views. - * - * @var array|null - */ - protected $tempData; - - /** - * The base directory to look in for our Views. - * - * @var string - */ - protected $viewPath; - - /** - * Data for rendering including Caching and Debug Toolbar data. - * - * @var array - */ - protected $renderVars = []; - - /** - * Instance of FileLocator for when - * we need to attempt to find a view - * that's not in standard place. - * - * @var FileLocator - */ - protected $loader; - - /** - * Logger instance. - * - * @var LoggerInterface - */ - protected $logger; - - /** - * Should we store performance info? - * - * @var bool - */ - protected $debug = false; - - /** - * Cache stats about our performance here, - * when CI_DEBUG = true - * - * @var array - */ - protected $performanceData = []; - - /** - * @var ViewConfig - */ - protected $config; - - /** - * Whether data should be saved between renders. - * - * @var bool - */ - protected $saveData; - - /** - * Number of loaded views - * - * @var int - */ - protected $viewsCount = 0; - - /** - * The name of the layout being used, if any. - * Set by the `extend` method used within views. - * - * @var string|null - */ - protected $layout; - - /** - * Holds the sections and their data. - * - * @var array - */ - protected $sections = []; - - /** - * The name of the current section being rendered, - * if any. - * - * @var string|null - * - * @deprecated - */ - protected $currentSection; - - /** - * The name of the current section being rendered, - * if any. - * - * @var array<string> - */ - protected $sectionStack = []; - - public function __construct(ViewConfig $config, ?string $viewPath = null, ?FileLocator $loader = null, ?bool $debug = null, ?LoggerInterface $logger = null) - { - $this->config = $config; - $this->viewPath = rtrim($viewPath, '\\/ ') . DIRECTORY_SEPARATOR; - $this->loader = $loader ?? Services::locator(); - $this->logger = $logger ?? Services::logger(); - $this->debug = $debug ?? CI_DEBUG; - $this->saveData = (bool) $config->saveData; - } - - /** - * Builds the output based upon a file name and any - * data that has already been set. - * - * Valid $options: - * - cache Number of seconds to cache for - * - cache_name Name to use for cache - * - * @param string $view File name of the view source - * @param array|null $options Reserved for 3rd-party uses since - * it might be needed to pass additional info - * to other template engines. - * @param bool|null $saveData If true, saves data for subsequent calls, - * if false, cleans the data after displaying, - * if null, uses the config setting. - */ - public function render(string $view, ?array $options = null, ?bool $saveData = null): string - { - $this->renderVars['start'] = microtime(true); - - // Store the results here so even if - // multiple views are called in a view, it won't - // clean it unless we mean it to. - $saveData ??= $this->saveData; - - $fileExt = pathinfo($view, PATHINFO_EXTENSION); - // allow Views as .html, .tpl, etc (from CI3) - $this->renderVars['view'] = ($fileExt === '') ? $view . '.php' : $view; - - $this->renderVars['options'] = $options ?? []; - - // Was it cached? - if (isset($this->renderVars['options']['cache'])) { - $cacheName = $this->renderVars['options']['cache_name'] - ?? str_replace('.php', '', $this->renderVars['view']); - $cacheName = str_replace(['\\', '/'], '', $cacheName); - - $this->renderVars['cacheName'] = $cacheName; - - if ($output = cache($this->renderVars['cacheName'])) { - $this->logPerformance( - $this->renderVars['start'], - microtime(true), - $this->renderVars['view'] - ); - - return $output; - } - } - - $this->renderVars['file'] = $this->viewPath . $this->renderVars['view']; - - if (! is_file($this->renderVars['file'])) { - $this->renderVars['file'] = $this->loader->locateFile( - $this->renderVars['view'], - 'Views', - ($fileExt === '') ? 'php' : $fileExt - ); - } - - // locateFile() will return false if the file cannot be found. - if ($this->renderVars['file'] === false) { - throw ViewException::forInvalidFile($this->renderVars['view']); - } - - // Make our view data available to the view. - $this->prepareTemplateData($saveData); - - // Save current vars - $renderVars = $this->renderVars; - - $output = (function (): string { - extract($this->tempData); - ob_start(); - include $this->renderVars['file']; - - return ob_get_clean() ?: ''; - })(); - - // Get back current vars - $this->renderVars = $renderVars; - - // When using layouts, the data has already been stored - // in $this->sections, and no other valid output - // is allowed in $output so we'll overwrite it. - if ($this->layout !== null && $this->sectionStack === []) { - $layoutView = $this->layout; - $this->layout = null; - // Save current vars - $renderVars = $this->renderVars; - $output = $this->render($layoutView, $options, $saveData); - // Get back current vars - $this->renderVars = $renderVars; - } - - $output = $this->decorateOutput($output); - - $this->logPerformance( - $this->renderVars['start'], - microtime(true), - $this->renderVars['view'] - ); - - $afterFilters = service('filters')->getFiltersClass()['after']; - if ( - ($this->debug && (! isset($options['debug']) || $options['debug'] === true)) - && in_array(DebugToolbar::class, $afterFilters, true) - ) { - $toolbarCollectors = config(Toolbar::class)->collectors; - - if (in_array(Views::class, $toolbarCollectors, true)) { - // Clean up our path names to make them a little cleaner - $this->renderVars['file'] = clean_path($this->renderVars['file']); - $this->renderVars['file'] = ++$this->viewsCount . ' ' . $this->renderVars['file']; - - $output = '<!-- DEBUG-VIEW START ' . $this->renderVars['file'] . ' -->' . PHP_EOL - . $output . PHP_EOL - . '<!-- DEBUG-VIEW ENDED ' . $this->renderVars['file'] . ' -->' . PHP_EOL; - } - } - - // Should we cache? - if (isset($this->renderVars['options']['cache'])) { - cache()->save( - $this->renderVars['cacheName'], - $output, - (int) $this->renderVars['options']['cache'] - ); - } - - $this->tempData = null; - - return $output; - } - - /** - * Builds the output based upon a string and any - * data that has already been set. - * Cache does not apply, because there is no "key". - * - * @param string $view The view contents - * @param array|null $options Reserved for 3rd-party uses since - * it might be needed to pass additional info - * to other template engines. - * @param bool|null $saveData If true, saves data for subsequent calls, - * if false, cleans the data after displaying, - * if null, uses the config setting. - */ - public function renderString(string $view, ?array $options = null, ?bool $saveData = null): string - { - $start = microtime(true); - $saveData ??= $this->saveData; - $this->prepareTemplateData($saveData); - - $output = (function (string $view): string { - extract($this->tempData); - ob_start(); - eval('?>' . $view); - - return ob_get_clean() ?: ''; - })($view); - - $this->logPerformance($start, microtime(true), $this->excerpt($view)); - $this->tempData = null; - - return $output; - } - - /** - * Extract first bit of a long string and add ellipsis - */ - public function excerpt(string $string, int $length = 20): string - { - return (strlen($string) > $length) ? substr($string, 0, $length - 3) . '...' : $string; - } - - /** - * Sets several pieces of view data at once. - * - * @param non-empty-string|null $context The context to escape it for. - * If 'raw', no escaping will happen. - * @phpstan-param null|'html'|'js'|'css'|'url'|'attr'|'raw' $context - */ - public function setData(array $data = [], ?string $context = null): RendererInterface - { - if ($context !== null) { - $data = \esc($data, $context); - } - - $this->tempData ??= $this->data; - $this->tempData = array_merge($this->tempData, $data); - - return $this; - } - - /** - * Sets a single piece of view data. - * - * @param mixed $value - * @param non-empty-string|null $context The context to escape it for. - * If 'raw', no escaping will happen. - * @phpstan-param null|'html'|'js'|'css'|'url'|'attr'|'raw' $context - */ - public function setVar(string $name, $value = null, ?string $context = null): RendererInterface - { - if ($context !== null) { - $value = esc($value, $context); - } - - $this->tempData ??= $this->data; - $this->tempData[$name] = $value; - - return $this; - } - - /** - * Removes all of the view data from the system. - */ - public function resetData(): RendererInterface - { - $this->data = []; - - return $this; - } - - /** - * Returns the current data that will be displayed in the view. - */ - public function getData(): array - { - return $this->tempData ?? $this->data; - } - - /** - * Specifies that the current view should extend an existing layout. - * - * @return void - */ - public function extend(string $layout) - { - $this->layout = $layout; - } - - /** - * Starts holds content for a section within the layout. - * - * @param string $name Section name - * - * @return void - */ - public function section(string $name) - { - // Saved to prevent BC. - $this->currentSection = $name; - $this->sectionStack[] = $name; - - ob_start(); - } - - /** - * Captures the last section - * - * @return void - * - * @throws RuntimeException - */ - public function endSection() - { - $contents = ob_get_clean(); - - if ($this->sectionStack === []) { - throw new RuntimeException('View themes, no current section.'); - } - - $section = array_pop($this->sectionStack); - - // Ensure an array exists so we can store multiple entries for this. - if (! array_key_exists($section, $this->sections)) { - $this->sections[$section] = []; - } - - $this->sections[$section][] = $contents; - } - - /** - * Renders a section's contents. - * - * @param bool $saveData If true, saves data for subsequent calls, - * if false, cleans the data after displaying. - * - * @return void - */ - public function renderSection(string $sectionName, bool $saveData = false) - { - if (! isset($this->sections[$sectionName])) { - echo ''; - - return; - } - - foreach ($this->sections[$sectionName] as $key => $contents) { - echo $contents; - if ($saveData === false) { - unset($this->sections[$sectionName][$key]); - } - } - } - - /** - * Used within layout views to include additional views. - * - * @param bool $saveData - */ - public function include(string $view, ?array $options = null, $saveData = true): string - { - return $this->render($view, $options, $saveData); - } - - /** - * Returns the performance data that might have been collected - * during the execution. Used primarily in the Debug Toolbar. - */ - public function getPerformanceData(): array - { - return $this->performanceData; - } - - /** - * Logs performance data for rendering a view. - * - * @return void - */ - protected function logPerformance(float $start, float $end, string $view) - { - if ($this->debug) { - $this->performanceData[] = [ - 'start' => $start, - 'end' => $end, - 'view' => $view, - ]; - } - } - - protected function prepareTemplateData(bool $saveData): void - { - $this->tempData ??= $this->data; - - if ($saveData) { - $this->data = $this->tempData; - } - } -} diff --git a/system4.4.6/View/ViewDecoratorInterface.php b/system4.4.6/View/ViewDecoratorInterface.php deleted file mode 100644 index 0a4d9926..00000000 --- a/system4.4.6/View/ViewDecoratorInterface.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\View; - -/** - * View Decorators are simple classes that are given the - * chance to modify the output from the view() calls - * prior to it being cached. - */ -interface ViewDecoratorInterface -{ - /** - * Takes $html and has a chance to alter it. - * MUST return the modified HTML. - */ - public static function decorate(string $html): string; -} diff --git a/system4.4.6/View/ViewDecoratorTrait.php b/system4.4.6/View/ViewDecoratorTrait.php deleted file mode 100644 index 1bec8acf..00000000 --- a/system4.4.6/View/ViewDecoratorTrait.php +++ /dev/null @@ -1,37 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -namespace CodeIgniter\View; - -use CodeIgniter\View\Exceptions\ViewException; -use Config\View as ViewConfig; - -trait ViewDecoratorTrait -{ - /** - * Runs the generated output through any declared - * view decorators. - */ - protected function decorateOutput(string $html): string - { - $decorators = $this->config->decorators ?? config(ViewConfig::class)->decorators; - - foreach ($decorators as $decorator) { - if (! is_subclass_of($decorator, ViewDecoratorInterface::class)) { - throw ViewException::forInvalidDecorator($decorator); - } - - $html = $decorator::decorate($html); - } - - return $html; - } -} diff --git a/system4.4.6/bootstrap.php b/system4.4.6/bootstrap.php deleted file mode 100644 index 5d2ca0b2..00000000 --- a/system4.4.6/bootstrap.php +++ /dev/null @@ -1,106 +0,0 @@ -<?php - -/** - * This file is part of CodeIgniter 4 framework. - * - * (c) CodeIgniter Foundation <admin@codeigniter.com> - * - * For the full copyright and license information, please view - * the LICENSE file that was distributed with this source code. - */ - -use Config\Autoload; -use Config\Modules; -use Config\Paths; -use Config\Services; - -/* - * --------------------------------------------------------------- - * SETUP OUR PATH CONSTANTS - * --------------------------------------------------------------- - * - * The path constants provide convenient access to the folders - * throughout the application. We have to setup them up here - * so they are available in the config files that are loaded. - */ - -// The path to the application directory. -if (! defined('APPPATH')) { - /** - * @var Paths $paths - */ - define('APPPATH', realpath(rtrim($paths->appDirectory, '\\/ ')) . DIRECTORY_SEPARATOR); -} - -// The path to the project root directory. Just above APPPATH. -if (! defined('ROOTPATH')) { - define('ROOTPATH', realpath(APPPATH . '../') . DIRECTORY_SEPARATOR); -} - -// The path to the system directory. -if (! defined('SYSTEMPATH')) { - /** - * @var Paths $paths - */ - define('SYSTEMPATH', realpath(rtrim($paths->systemDirectory, '\\/ ')) . DIRECTORY_SEPARATOR); -} - -// The path to the writable directory. -if (! defined('WRITEPATH')) { - /** - * @var Paths $paths - */ - define('WRITEPATH', realpath(rtrim($paths->writableDirectory, '\\/ ')) . DIRECTORY_SEPARATOR); -} - -// The path to the tests directory -if (! defined('TESTPATH')) { - /** - * @var Paths $paths - */ - define('TESTPATH', realpath(rtrim($paths->testsDirectory, '\\/ ')) . DIRECTORY_SEPARATOR); -} - -/* - * --------------------------------------------------------------- - * GRAB OUR CONSTANTS & COMMON - * --------------------------------------------------------------- - */ - -if (! defined('APP_NAMESPACE')) { - require_once APPPATH . 'Config/Constants.php'; -} - -// Require app/Common.php file if exists. -if (is_file(APPPATH . 'Common.php')) { - require_once APPPATH . 'Common.php'; -} - -// Require system/Common.php -require_once SYSTEMPATH . 'Common.php'; - -/* - * --------------------------------------------------------------- - * LOAD OUR AUTOLOADER - * --------------------------------------------------------------- - * - * The autoloader allows all of the pieces to work together in the - * framework. We have to load it here, though, so that the config - * files can use the path constants. - */ - -if (! class_exists(Autoload::class, false)) { - require_once SYSTEMPATH . 'Config/AutoloadConfig.php'; - require_once APPPATH . 'Config/Autoload.php'; - require_once SYSTEMPATH . 'Modules/Modules.php'; - require_once APPPATH . 'Config/Modules.php'; -} - -require_once SYSTEMPATH . 'Autoloader/Autoloader.php'; -require_once SYSTEMPATH . 'Config/BaseService.php'; -require_once SYSTEMPATH . 'Config/Services.php'; -require_once APPPATH . 'Config/Services.php'; - -// Initialize and register the loader with the SPL autoloader stack. -Services::autoloader()->initialize(new Autoload(), new Modules())->register(); -Services::autoloader()->loadHelpers(); diff --git a/system4.4.6/index.html b/system4.4.6/index.html deleted file mode 100644 index b702fbc3..00000000 --- a/system4.4.6/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <title>403 Forbidden</title> -</head> -<body> - -<p>Directory access is forbidden.</p> - -</body> -</html> diff --git a/writable/debugbar/debugbar_1715933982.889303.json b/writable/debugbar/debugbar_1715933982.889303.json deleted file mode 100644 index 6f13ff86..00000000 --- a/writable/debugbar/debugbar_1715933982.889303.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/ref\/getAR","method":"POST","isAJAX":true,"startTime":1715933982.736125,"totalTime":146.6,"totalMemory":"6.817","segmentDuration":25,"segmentCount":6,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715933982.756905,"duration":0.04915189743041992},{"name":"Routing","component":"Timer","start":1715933982.80606,"duration":0.00131988525390625},{"name":"Before Filters","component":"Timer","start":1715933982.811852,"duration":3.409385681152344e-5},{"name":"Controller","component":"Timer","start":1715933982.811891,"duration":0.07078099250793457},{"name":"Controller Constructor","component":"Timer","start":1715933982.811893,"duration":0.0026209354400634766},{"name":"After Filters","component":"Timer","start":1715933982.882697,"duration":0.0002598762512207031}]},{"title":"Database","titleSafe":"database","titleDetails":"(1 total Query, 1 unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"0.58 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_AR"\n<strong>WHERE<\/strong> "KPPADM" = 'SEMUA'\n<strong>AND<\/strong> "KODESIE" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "NIP" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:71","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Ref.php:30","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selAR()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Ref->getAR()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:71","qid":"c0a86fc4edcb25bcb21d6fc26e1febe8"}]},"badgeValue":1,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715933982.851098,"duration":"0.029783"},{"name":"Query","component":"Database","start":1715933982.88138,"duration":"0.000584","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_AR"\n<strong>WHERE<\/strong> "KPPADM" = 'SEMUA'\n<strong>AND<\/strong> "KODESIE" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "NIP" <strong>ASC<\/strong>"}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[]},"badgeValue":null,"isEmpty":true,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":0,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[]},{"title":"Files","titleSafe":"files","titleDetails":"( 160 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseBuilder.php","name":"BaseBuilder.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Builder.php","name":"Builder.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Traits\\ConditionalTrait.php","name":"ConditionalTrait.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\Ref.php","name":"Ref.php"},{"path":"APPPATH\\Models\\Mref.php","name":"Mref.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":160,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Ref","method":"getAR","paramCount":0,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":0,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"16.10","count":1},"dbquery":{"event":"dbquery","duration":"0.03","count":1}}},"badgeValue":2,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715933982.784337,"duration":0.01610088348388672},{"name":"Event: dbquery","component":"Events","start":1715933982.881969,"duration":2.5033950805664062e-5}]}],"vars":{"varData":{"View Data":[]},"post":{"kpp":"SEMUA","seksi":"SEMUA"},"headers":{"Content-Type":"application\/x-www-form-urlencoded; charset=UTF-8","Host":"localhost","Connection":"keep-alive","Sec-Ch-Ua":""Chromium";v="124", "Microsoft Edge";v="124", "Not-A.Brand";v="99"","Accept":"application\/json, text\/javascript, *\/*; q=0.01","X-Requested-With":"XMLHttpRequest","Sec-Ch-Ua-Mobile":"?0","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36 Edg\/124.0.0.0","Sec-Ch-Ua-Platform":""Windows"","Origin":"http:\/\/localhost","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"cors","Sec-Fetch-Dest":"empty","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"ci_session=o45dhe8ieec42blvqbcv7m71jsrbj92c"},"cookies":{"ci_session":"o45dhe8ieec42blvqbcv7m71jsrbj92c"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Cache-Control":"no-store, max-age=0, no-cache","Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715933982.907612.json b/writable/debugbar/debugbar_1715933982.907612.json deleted file mode 100644 index 2bb50101..00000000 --- a/writable/debugbar/debugbar_1715933982.907612.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/ref\/getSeksi","method":"POST","isAJAX":true,"startTime":1715933982.731887,"totalTime":168.9,"totalMemory":"6.817","segmentDuration":25,"segmentCount":7,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715933982.756004,"duration":0.0487978458404541},{"name":"Routing","component":"Timer","start":1715933982.804805,"duration":0.0011000633239746094},{"name":"Before Filters","component":"Timer","start":1715933982.810336,"duration":3.3855438232421875e-5},{"name":"Controller","component":"Timer","start":1715933982.810374,"duration":0.09041690826416016},{"name":"Controller Constructor","component":"Timer","start":1715933982.810376,"duration":0.002788066864013672},{"name":"After Filters","component":"Timer","start":1715933982.900814,"duration":0.00025200843811035156}]},{"title":"Database","titleSafe":"database","titleDetails":"(1 total Query, 1 unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"0.5 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KASIWAS"\n<strong>WHERE<\/strong> "KPPADM" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KODESIE" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:61","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Ref.php:21","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selSeksi()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Ref->getSeksi()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:61","qid":"ba82a47c19a057fae35aa1f673951e86"}]},"badgeValue":1,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715933982.851117,"duration":"0.047944"},{"name":"Query","component":"Database","start":1715933982.899568,"duration":"0.000504","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KASIWAS"\n<strong>WHERE<\/strong> "KPPADM" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KODESIE" <strong>ASC<\/strong>"}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[]},"badgeValue":null,"isEmpty":true,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":0,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[]},{"title":"Files","titleSafe":"files","titleDetails":"( 160 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseBuilder.php","name":"BaseBuilder.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Builder.php","name":"Builder.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Traits\\ConditionalTrait.php","name":"ConditionalTrait.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\Ref.php","name":"Ref.php"},{"path":"APPPATH\\Models\\Mref.php","name":"Mref.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":160,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Ref","method":"getSeksi","paramCount":0,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":0,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"15.47","count":1},"dbquery":{"event":"dbquery","duration":"0.02","count":1}}},"badgeValue":2,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715933982.783544,"duration":0.01546788215637207},{"name":"Event: dbquery","component":"Events","start":1715933982.900076,"duration":2.4080276489257812e-5}]}],"vars":{"varData":{"View Data":[]},"post":{"kpp":"SEMUA"},"headers":{"Content-Type":"application\/x-www-form-urlencoded; charset=UTF-8","Host":"localhost","Connection":"keep-alive","Sec-Ch-Ua":""Chromium";v="124", "Microsoft Edge";v="124", "Not-A.Brand";v="99"","Accept":"application\/json, text\/javascript, *\/*; q=0.01","X-Requested-With":"XMLHttpRequest","Sec-Ch-Ua-Mobile":"?0","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36 Edg\/124.0.0.0","Sec-Ch-Ua-Platform":""Windows"","Origin":"http:\/\/localhost","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"cors","Sec-Fetch-Dest":"empty","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"ci_session=o45dhe8ieec42blvqbcv7m71jsrbj92c"},"cookies":{"ci_session":"o45dhe8ieec42blvqbcv7m71jsrbj92c"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Cache-Control":"no-store, max-age=0, no-cache","Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715933983.039675.json b/writable/debugbar/debugbar_1715933983.039675.json deleted file mode 100644 index e95d08c0..00000000 --- a/writable/debugbar/debugbar_1715933983.039675.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/ref\/getAR","method":"POST","isAJAX":true,"startTime":1715933982.929239,"totalTime":103.9,"totalMemory":"6.817","segmentDuration":15,"segmentCount":7,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715933982.935267,"duration":0.017774105072021484},{"name":"Routing","component":"Timer","start":1715933982.953045,"duration":0.0015130043029785156},{"name":"Before Filters","component":"Timer","start":1715933982.958989,"duration":3.409385681152344e-5},{"name":"Controller","component":"Timer","start":1715933982.959027,"duration":0.07410001754760742},{"name":"Controller Constructor","component":"Timer","start":1715933982.959028,"duration":0.0025649070739746094},{"name":"After Filters","component":"Timer","start":1715933983.03315,"duration":0.0002491474151611328}]},{"title":"Database","titleSafe":"database","titleDetails":"(1 total Query, 1 unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"0.42 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_AR"\n<strong>WHERE<\/strong> "KPPADM" = 'SEMUA'\n<strong>AND<\/strong> "KODESIE" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "NIP" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:71","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Ref.php:30","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selAR()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Ref->getAR()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:71","qid":"82110ad8a2b71abdd95501386757ea32"}]},"badgeValue":1,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715933982.999418,"duration":"0.032068"},{"name":"Query","component":"Database","start":1715933983.032017,"duration":"0.000415","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_AR"\n<strong>WHERE<\/strong> "KPPADM" = 'SEMUA'\n<strong>AND<\/strong> "KODESIE" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "NIP" <strong>ASC<\/strong>"}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[]},"badgeValue":null,"isEmpty":true,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":0,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[]},{"title":"Files","titleSafe":"files","titleDetails":"( 160 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseBuilder.php","name":"BaseBuilder.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Builder.php","name":"Builder.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Traits\\ConditionalTrait.php","name":"ConditionalTrait.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\Ref.php","name":"Ref.php"},{"path":"APPPATH\\Models\\Mref.php","name":"Mref.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":160,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Ref","method":"getAR","paramCount":0,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":0,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"4.42","count":1},"dbquery":{"event":"dbquery","duration":"0.02","count":1}}},"badgeValue":2,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715933982.941815,"duration":0.004424095153808594},{"name":"Event: dbquery","component":"Events","start":1715933983.032437,"duration":2.193450927734375e-5}]}],"vars":{"varData":{"View Data":[]},"post":{"kpp":"SEMUA","seksi":"SEMUA"},"headers":{"Content-Type":"application\/x-www-form-urlencoded; charset=UTF-8","Host":"localhost","Connection":"keep-alive","Sec-Ch-Ua":""Chromium";v="124", "Microsoft Edge";v="124", "Not-A.Brand";v="99"","Accept":"application\/json, text\/javascript, *\/*; q=0.01","X-Requested-With":"XMLHttpRequest","Sec-Ch-Ua-Mobile":"?0","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36 Edg\/124.0.0.0","Sec-Ch-Ua-Platform":""Windows"","Origin":"http:\/\/localhost","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"cors","Sec-Fetch-Dest":"empty","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"ci_session=o45dhe8ieec42blvqbcv7m71jsrbj92c"},"cookies":{"ci_session":"o45dhe8ieec42blvqbcv7m71jsrbj92c"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Cache-Control":"no-store, max-age=0, no-cache","Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715933985.044828.json b/writable/debugbar/debugbar_1715933985.044828.json deleted file mode 100644 index fb3b6f5e..00000000 --- a/writable/debugbar/debugbar_1715933985.044828.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/home\/grafMAPKJS\/SEMUA\/SEMUA\/SEMUA\/SEMUA\/2024\/411121\/100\/SEMUA","method":"GET","isAJAX":true,"startTime":1715933982.496789,"totalTime":2538.3,"totalMemory":"6.580","segmentDuration":365,"segmentCount":7,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715933982.504002,"duration":0.02994394302368164},{"name":"Routing","component":"Timer","start":1715933982.533949,"duration":0.003031015396118164},{"name":"Before Filters","component":"Timer","start":1715933982.541931,"duration":3.504753112792969e-5},{"name":"Controller","component":"Timer","start":1715933982.54197,"duration":2.4931418895721436},{"name":"Controller Constructor","component":"Timer","start":1715933982.541972,"duration":0.005288124084472656},{"name":"After Filters","component":"Timer","start":1715933985.035136,"duration":0.0002529621124267578}]},{"title":"Database","titleSafe":"database","titleDetails":"(1 total Query, 1 unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"2410.27 ms","sql":"<strong>SELECT<\/strong> \r\n BLNBYR,\r\n (<strong>SELECT<\/strong> <strong>SUM<\/strong>(JUMLAH)POPULASI <strong>FROM<\/strong> KEWAJIBAN_FLAGN\r\n <strong>WHERE<\/strong> KD_MAP <> 0 <strong>AND<\/strong> KD_MAP = '411121' ) POPULASI,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN 1 ELSE 0 END) WPBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN 1 ELSE 0 END) WPBYRPAST,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN TOTAL ELSE 0 END) JMLBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN TOTAL ELSE 0 END) JMLBYRPAST\r\n <strong>FROM<\/strong> (<strong>SELECT<\/strong> NPWP,THNBYR,BLNBYR,<strong>SUM<\/strong>(TOTAL) TOTAL <strong>FROM<\/strong> DASHBOARD_BESAR_MAPKJS\r\n <strong>WHERE<\/strong> THNBYR BETWEEN '2023' <strong>AND<\/strong> '2024' <strong>AND<\/strong> KD_MAP = '411121' <strong>AND<\/strong> KJS = '100' \r\n <strong>GROUP<\/strong> <strong>BY<\/strong> NPWP,THNBYR,BLNBYR\r\n )\r\n <strong>GROUP<\/strong> <strong>BY<\/strong> BLNBYR <strong>ORDER<\/strong> <strong>BY<\/strong> BLNBYR <strong>ASC<\/strong>\r\n ","trace":[{"file":"APPPATH\\Models\\Mpemby.php:381","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:219","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mpemby->gmapkjs()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->grafMAPKJS()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mpemby.php:381","qid":"1d80d1729f109ffb1a032d3a16bd79cd"}]},"badgeValue":1,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715933982.593632,"duration":"0.029670"},{"name":"Query","component":"Database","start":1715933982.623804,"duration":"2.410268","query":"<strong>SELECT<\/strong> \r\n BLNBYR,\r\n (<strong>SELECT<\/strong> <strong>SUM<\/strong>(JUMLAH)POPULASI <strong>FROM<\/strong> KEWAJIBAN_FLAGN\r\n <strong>WHERE<\/strong> KD_MAP <> 0 <strong>AND<\/strong> KD_MAP = '411121' ) POPULASI,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN 1 ELSE 0 END) WPBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN 1 ELSE 0 END) WPBYRPAST,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN TOTAL ELSE 0 END) JMLBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN TOTAL ELSE 0 END) JMLBYRPAST\r\n <strong>FROM<\/strong> (<strong>SELECT<\/strong> NPWP,THNBYR,BLNBYR,<strong>SUM<\/strong>(TOTAL) TOTAL <strong>FROM<\/strong> DASHBOARD_BESAR_MAPKJS\r\n <strong>WHERE<\/strong> THNBYR BETWEEN '2023' <strong>AND<\/strong> '2024' <strong>AND<\/strong> KD_MAP = '411121' <strong>AND<\/strong> KJS = '100' \r\n <strong>GROUP<\/strong> <strong>BY<\/strong> NPWP,THNBYR,BLNBYR\r\n )\r\n <strong>GROUP<\/strong> <strong>BY<\/strong> BLNBYR <strong>ORDER<\/strong> <strong>BY<\/strong> BLNBYR <strong>ASC<\/strong>\r\n "}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[{"level":"info","msg":"Session: Class initialized using 'CodeIgniter\\Session\\Handlers\\FileHandler' driver."}]},"badgeValue":null,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":0,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[]},{"title":"Files","titleSafe":"files","titleDetails":"( 168 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\HandlerInterface.php","name":"HandlerInterface.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Session\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Session\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Session\\Session.php","name":"Session.php"},{"path":"SYSTEMPATH\\Session\\SessionInterface.php","name":"SessionInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Session.php","name":"Session.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\BaseController.php","name":"BaseController.php"},{"path":"APPPATH\\Controllers\\Home.php","name":"Home.php"},{"path":"APPPATH\\Helpers\\myhelper_helper.php","name":"myhelper_helper.php"},{"path":"APPPATH\\Models\\Mpemby.php","name":"Mpemby.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerAwareTrait.php","name":"LoggerAwareTrait.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":168,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Home","method":"grafMAPKJS","paramCount":8,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":2,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"16.55","count":1},"dbquery":{"event":"dbquery","duration":"0.03","count":1}}},"badgeValue":2,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715933982.511361,"duration":0.016550064086914062},{"name":"Event: dbquery","component":"Events","start":1715933985.034079,"duration":3.0040740966796875e-5}]}],"vars":{"varData":{"View Data":[]},"session":{"__ci_last_regenerate":"<pre>1715933979<\/pre>","nip":"810201978","nipp":"199401292013101001","nama":"ALFIN RIZKY RACHMAWANTO","kppadm":"000","jabatan":"Pelaksana","kantor":"Direktorat Ekstensifikasi dan Penilaian","seksi":"SubDirektorat Ekstensifikasi","tpkantor":"KPDJP","kwladm":"991","isLogin":"<pre>1<\/pre>","_ci_previous_url":"http:\/\/localhost\/engineN\/home\/gmapkjs"},"headers":{"Host":"localhost","Connection":"keep-alive","Sec-Ch-Ua":""Chromium";v="124", "Microsoft Edge";v="124", "Not-A.Brand";v="99"","Accept":"application\/json, text\/javascript, *\/*; q=0.01","X-Requested-With":"XMLHttpRequest","Sec-Ch-Ua-Mobile":"?0","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36 Edg\/124.0.0.0","Sec-Ch-Ua-Platform":""Windows"","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"cors","Sec-Fetch-Dest":"empty","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"ci_session=o45dhe8ieec42blvqbcv7m71jsrbj92c"},"cookies":{"ci_session":"o45dhe8ieec42blvqbcv7m71jsrbj92c"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715934106.568378.json b/writable/debugbar/debugbar_1715934106.568378.json deleted file mode 100644 index c666bada..00000000 --- a/writable/debugbar/debugbar_1715934106.568378.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/home\/gmapkjs","method":"POST","isAJAX":false,"startTime":1715934103.389864,"totalTime":3154.5,"totalMemory":"7.757","segmentDuration":455,"segmentCount":7,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715934103.396296,"duration":0.012180089950561523},{"name":"Routing","component":"Timer","start":1715934103.408477,"duration":0.0010449886322021484},{"name":"Before Filters","component":"Timer","start":1715934103.412936,"duration":1.4066696166992188e-5},{"name":"Controller","component":"Timer","start":1715934103.412952,"duration":3.1314260959625244},{"name":"Controller Constructor","component":"Timer","start":1715934103.412952,"duration":0.0024340152740478516},{"name":"After Filters","component":"Timer","start":1715934106.544392,"duration":0.00024199485778808594}]},{"title":"Database","titleSafe":"database","titleDetails":"(7 total Queries, 7 of them unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"0.28 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KANWIL"\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KODE" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:43","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:183","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKwl()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:43","qid":"fef43f97222971e805101e0082d2e161"},{"hover":"","class":"","duration":"0.18 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "BULAN"","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:35","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:184","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selBln()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:35","qid":"f1852c1dcf8999e8571aff2fe5fabcde"},{"hover":"","class":"","duration":"0.18 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KPP"\n<strong>WHERE<\/strong> "KD_KANWIL" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KD_KPP" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:52","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:185","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKpp()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:52","qid":"c1dbae913b691059875cc5e62f076ada"},{"hover":"","class":"","duration":"0.52 ms","sql":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_KATEGORI KATEGORI, NM_KATEGORIPDK NAMA <strong>FROM<\/strong> REF_KLU\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_KATEGORI <strong>ASC<\/strong>","trace":[{"file":"APPPATH\\Models\\Mref.php:11","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:187","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKLU()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:11","qid":"84fdfa1f96990e21b101aec846d1b33c"},{"hover":"","class":"","duration":"0.26 ms","sql":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_MAP,NM_MAP <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_MAP <strong>ASC<\/strong>","trace":[{"file":"APPPATH\\Models\\Mref.php:18","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:188","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selMAP()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:18","qid":"3166c0a1ec1bae13eced9394910dedfb"},{"hover":"","class":"","duration":"0.31 ms","sql":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_SETOR KJS <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>WHERE<\/strong> TRIM(KD_SETOR) <strong>IS<\/strong> <strong>NOT<\/strong> <strong>NULL<\/strong>\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_SETOR <strong>ASC<\/strong>","trace":[{"file":"APPPATH\\Models\\Mref.php:25","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:189","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKJS()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:25","qid":"77fd80abe650f31111a2bf38a1ee4e88"},{"hover":"","class":"","duration":"3028.51 ms","sql":"<strong>SELECT<\/strong> \r\n BLNBYR,\r\n (<strong>SELECT<\/strong> <strong>SUM<\/strong>(JUMLAH)POPULASI <strong>FROM<\/strong> KEWAJIBAN_FLAGN\r\n <strong>WHERE<\/strong> KD_MAP <> 0 ) POPULASI,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN 1 ELSE 0 END) WPBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN 1 ELSE 0 END) WPBYRPAST,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN TOTAL ELSE 0 END) JMLBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN TOTAL ELSE 0 END) JMLBYRPAST\r\n <strong>FROM<\/strong> (<strong>SELECT<\/strong> NPWP,THNBYR,BLNBYR,<strong>SUM<\/strong>(TOTAL) TOTAL <strong>FROM<\/strong> DASHBOARD_BESAR_MAPKJS\r\n <strong>WHERE<\/strong> THNBYR BETWEEN '2023' <strong>AND<\/strong> '2024' \r\n <strong>GROUP<\/strong> <strong>BY<\/strong> NPWP,THNBYR,BLNBYR\r\n )\r\n <strong>GROUP<\/strong> <strong>BY<\/strong> BLNBYR <strong>ORDER<\/strong> <strong>BY<\/strong> BLNBYR <strong>ASC<\/strong>\r\n ","trace":[{"file":"APPPATH\\Models\\Mpemby.php:381","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:190","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mpemby->gmapkjs()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mpemby.php:381","qid":"6b0bd5df6bc7179250f536cc5c2539fa"}]},"badgeValue":7,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715934103.468768,"duration":"0.041358"},{"name":"Query","component":"Database","start":1715934103.510672,"duration":"0.000280","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KANWIL"\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KODE" <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934103.511697,"duration":"0.000184","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "BULAN""},{"name":"Query","component":"Database","start":1715934103.511967,"duration":"0.000181","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KPP"\n<strong>WHERE<\/strong> "KD_KANWIL" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KD_KPP" <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934103.512171,"duration":"0.000519","query":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_KATEGORI KATEGORI, NM_KATEGORIPDK NAMA <strong>FROM<\/strong> REF_KLU\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_KATEGORI <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934103.512714,"duration":"0.000259","query":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_MAP,NM_MAP <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_MAP <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934103.513011,"duration":"0.000307","query":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_SETOR KJS <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>WHERE<\/strong> TRIM(KD_SETOR) <strong>IS<\/strong> <strong>NOT<\/strong> <strong>NULL<\/strong>\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_SETOR <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934103.513399,"duration":"3.028505","query":"<strong>SELECT<\/strong> \r\n BLNBYR,\r\n (<strong>SELECT<\/strong> <strong>SUM<\/strong>(JUMLAH)POPULASI <strong>FROM<\/strong> KEWAJIBAN_FLAGN\r\n <strong>WHERE<\/strong> KD_MAP <> 0 ) POPULASI,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN 1 ELSE 0 END) WPBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN 1 ELSE 0 END) WPBYRPAST,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN TOTAL ELSE 0 END) JMLBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN TOTAL ELSE 0 END) JMLBYRPAST\r\n <strong>FROM<\/strong> (<strong>SELECT<\/strong> NPWP,THNBYR,BLNBYR,<strong>SUM<\/strong>(TOTAL) TOTAL <strong>FROM<\/strong> DASHBOARD_BESAR_MAPKJS\r\n <strong>WHERE<\/strong> THNBYR BETWEEN '2023' <strong>AND<\/strong> '2024' \r\n <strong>GROUP<\/strong> <strong>BY<\/strong> NPWP,THNBYR,BLNBYR\r\n )\r\n <strong>GROUP<\/strong> <strong>BY<\/strong> BLNBYR <strong>ORDER<\/strong> <strong>BY<\/strong> BLNBYR <strong>ASC<\/strong>\r\n "}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[{"level":"info","msg":"Session: Class initialized using 'CodeIgniter\\Session\\Handlers\\FileHandler' driver."}]},"badgeValue":null,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":6,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"View: inc\/head.php","component":"Views","start":1715934106.542018,"duration":0.0008771419525146484},{"name":"View: inc\/navbar.php","component":"Views","start":1715934106.543031,"duration":0.00012612342834472656},{"name":"View: inc\/sidebar.php","component":"Views","start":1715934106.543199,"duration":0.00020885467529296875},{"name":"View: inc\/js.php","component":"Views","start":1715934106.543797,"duration":0.0002770423889160156},{"name":"View: ppm\/gmapkjs.php","component":"Views","start":1715934106.543451,"duration":0.0007309913635253906},{"name":"View: inc\/footer.php","component":"Views","start":1715934106.544245,"duration":9.298324584960938e-5}]},{"title":"Files","titleSafe":"files","titleDetails":"( 178 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseBuilder.php","name":"BaseBuilder.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Builder.php","name":"Builder.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\HandlerInterface.php","name":"HandlerInterface.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Session\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Session\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Session\\Session.php","name":"Session.php"},{"path":"SYSTEMPATH\\Session\\SessionInterface.php","name":"SessionInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Traits\\ConditionalTrait.php","name":"ConditionalTrait.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Session.php","name":"Session.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\BaseController.php","name":"BaseController.php"},{"path":"APPPATH\\Controllers\\Home.php","name":"Home.php"},{"path":"APPPATH\\Helpers\\myhelper_helper.php","name":"myhelper_helper.php"},{"path":"APPPATH\\Models\\Mpemby.php","name":"Mpemby.php"},{"path":"APPPATH\\Models\\Mref.php","name":"Mref.php"},{"path":"APPPATH\\Views\\inc\\footer.php","name":"footer.php"},{"path":"APPPATH\\Views\\inc\\head.php","name":"head.php"},{"path":"APPPATH\\Views\\inc\\js.php","name":"js.php"},{"path":"APPPATH\\Views\\inc\\navbar.php","name":"navbar.php"},{"path":"APPPATH\\Views\\inc\\sidebar.php","name":"sidebar.php"},{"path":"APPPATH\\Views\\ppm\\gmapkjs.php","name":"gmapkjs.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerAwareTrait.php","name":"LoggerAwareTrait.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":178,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Home","method":"gmapkjs","paramCount":0,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":0,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"4.37","count":1},"dbquery":{"event":"dbquery","duration":"0.08","count":7}}},"badgeValue":8,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715934103.402489,"duration":0.004372119903564453},{"name":"Event: dbquery","component":"Events","start":1715934103.510957,"duration":2.002716064453125e-5},{"name":"Event: dbquery","component":"Events","start":1715934103.511883,"duration":1.1920928955078125e-5},{"name":"Event: dbquery","component":"Events","start":1715934103.512149,"duration":7.867813110351562e-6},{"name":"Event: dbquery","component":"Events","start":1715934103.512691,"duration":5.0067901611328125e-6},{"name":"Event: dbquery","component":"Events","start":1715934103.512974,"duration":4.0531158447265625e-6},{"name":"Event: dbquery","component":"Events","start":1715934103.513318,"duration":4.0531158447265625e-6},{"name":"Event: dbquery","component":"Events","start":1715934106.54191,"duration":3.0994415283203125e-5}]}],"vars":{"varData":{"View Data":{"kwlx":"SEMUA","kppx":"SEMUA","seksix":"SEMUA","nipx":"SEMUA","tahunx":"2024","bulanx":"01","bulan2x":"05","mapx":"SEMUA","kjsx":"SEMUA","kategorix":"SEMUA","selkwl":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (34)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#105 (3)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"010\"<div class=\"access-path\">$value[0]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"010\"<div class=\"access-path\">$value[0]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (15) \"Kanwil DJP Aceh\"<div class=\"access-path\">$value[0]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#108 (3)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"020\"<div class=\"access-path\">$value[1]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"020\"<div class=\"access-path\">$value[1]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (27) \"Kanwil DJP Sumatera Utara I\"<div class=\"access-path\">$value[1]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#109 (3)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"030\"<div class=\"access-path\">$value[2]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"030\"<div class=\"access-path\">$value[2]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"Kanwil DJP Sumatera Utara II\"<div class=\"access-path\">$value[2]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#110 (3)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"040\"<div class=\"access-path\">$value[3]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"040\"<div class=\"access-path\">$value[3]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (15) \"Kanwil DJP Riau\"<div class=\"access-path\">$value[3]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#111 (3)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"050\"<div class=\"access-path\">$value[4]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"050\"<div class=\"access-path\">$value[4]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (35) \"Kanwil DJP Sumatera Barat dan Jambi\"<div class=\"access-path\">$value[4]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#112 (3)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"060\"<div class=\"access-path\">$value[5]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"060\"<div class=\"access-path\">$value[5]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (57) \"Kanwil DJP Sumatera Selatan dan Kepulauan Bangka Belitung\"<div class=\"access-path\">$value[5]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#113 (3)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"070\"<div class=\"access-path\">$value[6]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"070\"<div class=\"access-path\">$value[6]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (31) \"Kanwil DJP Bengkulu dan Lampung\"<div class=\"access-path\">$value[6]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#114 (3)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"080\"<div class=\"access-path\">$value[7]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"080\"<div class=\"access-path\">$value[7]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Pusat\"<div class=\"access-path\">$value[7]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#115 (3)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"090\"<div class=\"access-path\">$value[8]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"090\"<div class=\"access-path\">$value[8]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Barat\"<div class=\"access-path\">$value[8]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#116 (3)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"100\"<div class=\"access-path\">$value[9]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"100\"<div class=\"access-path\">$value[9]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"Kanwil DJP Jakarta Selatan I\"<div class=\"access-path\">$value[9]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#117 (3)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"110\"<div class=\"access-path\">$value[10]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"110\"<div class=\"access-path\">$value[10]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Timur\"<div class=\"access-path\">$value[10]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#118 (3)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"120\"<div class=\"access-path\">$value[11]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"120\"<div class=\"access-path\">$value[11]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Utara\"<div class=\"access-path\">$value[11]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#119 (3)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"130\"<div class=\"access-path\">$value[12]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"130\"<div class=\"access-path\">$value[12]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jakarta Khusus\"<div class=\"access-path\">$value[12]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#120 (3)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"140\"<div class=\"access-path\">$value[13]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"140\"<div class=\"access-path\">$value[13]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (17) \"Kanwil DJP Banten\"<div class=\"access-path\">$value[13]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#121 (3)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"150\"<div class=\"access-path\">$value[14]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"150\"<div class=\"access-path\">$value[14]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (23) \"Kanwil DJP Jawa Barat I\"<div class=\"access-path\">$value[14]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#122 (3)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"160\"<div class=\"access-path\">$value[15]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"160\"<div class=\"access-path\">$value[15]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jawa Barat II\"<div class=\"access-path\">$value[15]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#123 (3)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"170\"<div class=\"access-path\">$value[16]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"170\"<div class=\"access-path\">$value[16]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jawa Tengah I\"<div class=\"access-path\">$value[16]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#124 (3)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"180\"<div class=\"access-path\">$value[17]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"180\"<div class=\"access-path\">$value[17]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jawa Tengah II\"<div class=\"access-path\">$value[17]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#125 (3)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"190\"<div class=\"access-path\">$value[18]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"190\"<div class=\"access-path\">$value[18]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (37) \"Kanwil DJP Daerah Istimewa Yogyakarta\"<div class=\"access-path\">$value[18]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#126 (3)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"200\"<div class=\"access-path\">$value[19]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"200\"<div class=\"access-path\">$value[19]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (23) \"Kanwil DJP Jawa Timur I\"<div class=\"access-path\">$value[19]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#127 (3)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"210\"<div class=\"access-path\">$value[20]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"210\"<div class=\"access-path\">$value[20]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jawa Timur II\"<div class=\"access-path\">$value[20]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#128 (3)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"220\"<div class=\"access-path\">$value[21]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"220\"<div class=\"access-path\">$value[21]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jawa Timur III\"<div class=\"access-path\">$value[21]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>22<\/dfn> => <var>stdClass<\/var>#129 (3)<div class=\"access-path\">$value[22]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"230\"<div class=\"access-path\">$value[22]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"230\"<div class=\"access-path\">$value[22]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (27) \"Kanwil DJP Kalimantan Barat\"<div class=\"access-path\">$value[22]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>23<\/dfn> => <var>stdClass<\/var>#130 (3)<div class=\"access-path\">$value[23]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"240\"<div class=\"access-path\">$value[23]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"240\"<div class=\"access-path\">$value[23]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (40) \"Kanwil DJP Kalimantan Selatan dan Tengah\"<div class=\"access-path\">$value[23]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>24<\/dfn> => <var>stdClass<\/var>#131 (3)<div class=\"access-path\">$value[24]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"250\"<div class=\"access-path\">$value[24]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"250\"<div class=\"access-path\">$value[24]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (37) \"Kanwil DJP Kalimantan Timur dan Utara\"<div class=\"access-path\">$value[24]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>25<\/dfn> => <var>stdClass<\/var>#132 (3)<div class=\"access-path\">$value[25]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"260\"<div class=\"access-path\">$value[25]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"260\"<div class=\"access-path\">$value[25]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (48) \"Kanwil DJP Sulawesi Selatan, Barat, dan Tenggara\"<div class=\"access-path\">$value[25]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>26<\/dfn> => <var>stdClass<\/var>#133 (3)<div class=\"access-path\">$value[26]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"270\"<div class=\"access-path\">$value[26]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"270\"<div class=\"access-path\">$value[26]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (62) \"Kanwil DJP Sulawesi Utara, Tengah, Gorontalo, dan Maluku Utara\"<div class=\"access-path\">$value[26]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>27<\/dfn> => <var>stdClass<\/var>#134 (3)<div class=\"access-path\">$value[27]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"280\"<div class=\"access-path\">$value[27]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"280\"<div class=\"access-path\">$value[27]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (15) \"Kanwil DJP Bali\"<div class=\"access-path\">$value[27]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>28<\/dfn> => <var>stdClass<\/var>#135 (3)<div class=\"access-path\">$value[28]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"290\"<div class=\"access-path\">$value[28]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"290\"<div class=\"access-path\">$value[28]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Nusa Tenggara\"<div class=\"access-path\">$value[28]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>29<\/dfn> => <var>stdClass<\/var>#136 (3)<div class=\"access-path\">$value[29]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"300\"<div class=\"access-path\">$value[29]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"300\"<div class=\"access-path\">$value[29]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (41) \"Kanwil DJP Papua, Papua Barat, dan Maluku\"<div class=\"access-path\">$value[29]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>30<\/dfn> => <var>stdClass<\/var>#137 (3)<div class=\"access-path\">$value[30]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"310\"<div class=\"access-path\">$value[30]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"310\"<div class=\"access-path\">$value[30]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"Kanwil DJP Wajib Pajak Besar\"<div class=\"access-path\">$value[30]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>31<\/dfn> => <var>stdClass<\/var>#138 (3)<div class=\"access-path\">$value[31]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"320\"<div class=\"access-path\">$value[31]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"320\"<div class=\"access-path\">$value[31]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (29) \"Kanwil DJP Jakarta Selatan II\"<div class=\"access-path\">$value[31]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>32<\/dfn> => <var>stdClass<\/var>#139 (3)<div class=\"access-path\">$value[32]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"330\"<div class=\"access-path\">$value[32]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"330\"<div class=\"access-path\">$value[32]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jawa Barat III\"<div class=\"access-path\">$value[32]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>33<\/dfn> => <var>stdClass<\/var>#140 (3)<div class=\"access-path\">$value[33]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"340\"<div class=\"access-path\">$value[33]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"340\"<div class=\"access-path\">$value[33]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Kepulauan Riau\"<div class=\"access-path\">$value[33]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selbulan":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (12)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#107 (3)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"01\"<div class=\"access-path\">$value[0]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (7) \"JANUARI\"<div class=\"access-path\">$value[0]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"JAN\"<div class=\"access-path\">$value[0]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#143 (3)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"02\"<div class=\"access-path\">$value[1]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (8) \"FEBRUARI\"<div class=\"access-path\">$value[1]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"FEB\"<div class=\"access-path\">$value[1]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#144 (3)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"03\"<div class=\"access-path\">$value[2]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (5) \"MARET\"<div class=\"access-path\">$value[2]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"MAR\"<div class=\"access-path\">$value[2]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#145 (3)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"04\"<div class=\"access-path\">$value[3]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (5) \"APRIL\"<div class=\"access-path\">$value[3]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"APR\"<div class=\"access-path\">$value[3]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#146 (3)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"05\"<div class=\"access-path\">$value[4]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (3) \"MEI\"<div class=\"access-path\">$value[4]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"MEI\"<div class=\"access-path\">$value[4]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#147 (3)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"06\"<div class=\"access-path\">$value[5]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (4) \"JUNI\"<div class=\"access-path\">$value[5]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"JUN\"<div class=\"access-path\">$value[5]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#148 (3)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"07\"<div class=\"access-path\">$value[6]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (4) \"JULI\"<div class=\"access-path\">$value[6]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"JUL\"<div class=\"access-path\">$value[6]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#149 (3)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"08\"<div class=\"access-path\">$value[7]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (7) \"AGUSTUS\"<div class=\"access-path\">$value[7]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (5) \"AGUST\"<div class=\"access-path\">$value[7]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#150 (3)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"09\"<div class=\"access-path\">$value[8]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (9) \"SEPTEMBER\"<div class=\"access-path\">$value[8]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"SEP\"<div class=\"access-path\">$value[8]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#151 (3)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"10\"<div class=\"access-path\">$value[9]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (7) \"OKTOBER\"<div class=\"access-path\">$value[9]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"OKT\"<div class=\"access-path\">$value[9]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#152 (3)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"11\"<div class=\"access-path\">$value[10]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (8) \"NOPEMBER\"<div class=\"access-path\">$value[10]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"NOP\"<div class=\"access-path\">$value[10]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#153 (3)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"12\"<div class=\"access-path\">$value[11]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (8) \"DESEMBER\"<div class=\"access-path\">$value[11]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"DES\"<div class=\"access-path\">$value[11]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selkpp":"<div class=\"kint-rich\"><dl><dt><dfn>$value<\/dfn> <var>array<\/var> (0)<\/dt><\/dl><\/div>","selklu":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (22)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#156 (2)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"A\"<div class=\"access-path\">$value[0]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (9) \"PERTANIAN\"<div class=\"access-path\">$value[0]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#157 (2)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"B\"<div class=\"access-path\">$value[1]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (27) \"PERTAMBANGAN DAN PENGGALIAN\"<div class=\"access-path\">$value[1]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#158 (2)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"C\"<div class=\"access-path\">$value[2]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (19) \"INDUSTRI PENGOLAHAN\"<div class=\"access-path\">$value[2]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#159 (2)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"D\"<div class=\"access-path\">$value[3]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (17) \"PENGADAAN LISTRIK\"<div class=\"access-path\">$value[3]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#160 (2)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"E\"<div class=\"access-path\">$value[4]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (13) \"TREATMENT AIR\"<div class=\"access-path\">$value[4]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#161 (2)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"F\"<div class=\"access-path\">$value[5]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (10) \"KONSTRUKSI\"<div class=\"access-path\">$value[5]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#162 (2)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"G\"<div class=\"access-path\">$value[6]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"PERDAGANGAN BESAR DAN ECERAN\"<div class=\"access-path\">$value[6]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#163 (2)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"H\"<div class=\"access-path\">$value[7]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"PENGANGKUTAN DAN PERGUDANGAN\"<div class=\"access-path\">$value[7]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#164 (2)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"I\"<div class=\"access-path\">$value[8]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (47) \"PENYEDIAAN AKOMODASI DAN PENYEDIAAN MAKAN MINUM\"<div class=\"access-path\">$value[8]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#165 (2)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"J\"<div class=\"access-path\">$value[9]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"INFORMASI DAN KOMUNIKASI\"<div class=\"access-path\">$value[9]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#166 (2)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"K\"<div class=\"access-path\">$value[10]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (31) \"AKTIVITAS KEUANGAN DAN ASURANSI\"<div class=\"access-path\">$value[10]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#167 (2)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"L\"<div class=\"access-path\">$value[11]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (10) \"REAL ESTAT\"<div class=\"access-path\">$value[11]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#168 (2)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"M\"<div class=\"access-path\">$value[12]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (21) \"AKTIVITAS PROFESIONAL\"<div class=\"access-path\">$value[12]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#169 (2)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"N\"<div class=\"access-path\">$value[13]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (54) \"AKTIVITAS PENYEWAAN DAN SEWA GUNA USAHA TANPA HAK OPSI\"<div class=\"access-path\">$value[13]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#170 (2)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"O\"<div class=\"access-path\">$value[14]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"ADMINISTRASI PEMERINTAHAN\"<div class=\"access-path\">$value[14]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#171 (2)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"P\"<div class=\"access-path\">$value[15]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (10) \"PENDIDIKAN\"<div class=\"access-path\">$value[15]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#172 (2)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"Q\"<div class=\"access-path\">$value[16]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (48) \"AKTIVITAS KESEHATAN MANUSIA DAN AKTIVITAS SOSIAL\"<div class=\"access-path\">$value[16]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#173 (2)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"R\"<div class=\"access-path\">$value[17]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (8) \"KESENIAN\"<div class=\"access-path\">$value[17]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#174 (2)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"S\"<div class=\"access-path\">$value[18]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (22) \"AKTIVITAS JASA LAINNYA\"<div class=\"access-path\">$value[18]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#175 (2)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"T\"<div class=\"access-path\">$value[19]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (44) \"AKTIVITAS RUMAH TANGGA SEBAGAI PEMBERI KERJA\"<div class=\"access-path\">$value[19]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#176 (2)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"U\"<div class=\"access-path\">$value[20]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (68) \"AKTIVITAS BADAN INTERNASIONAL DAN BADAN EKSTRA INTERNASIONAL LAINNYA\"<div class=\"access-path\">$value[20]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#177 (2)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"Z\"<div class=\"access-path\">$value[21]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (14) \"PEJABAT NEGARA\"<div class=\"access-path\">$value[21]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selmap":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (55)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#179 (2)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411111\"<div class=\"access-path\">$value[0]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (15) \"PPh Minyak Bumi\"<div class=\"access-path\">$value[0]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#180 (2)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411112\"<div class=\"access-path\">$value[1]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Gas Alam\"<div class=\"access-path\">$value[1]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#181 (2)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411113\"<div class=\"access-path\">$value[2]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (23) \"PPh Minyak Bumi Lainnya\"<div class=\"access-path\">$value[2]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#182 (2)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411119\"<div class=\"access-path\">$value[3]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (17) \"PPh Migas Lainnya\"<div class=\"access-path\">$value[3]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#183 (2)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411121\"<div class=\"access-path\">$value[4]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 21\"<div class=\"access-path\">$value[4]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#184 (2)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411122\"<div class=\"access-path\">$value[5]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 22\"<div class=\"access-path\">$value[5]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#185 (2)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411123\"<div class=\"access-path\">$value[6]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"PPh Pasal 22 Impor\"<div class=\"access-path\">$value[6]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#186 (2)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411124\"<div class=\"access-path\">$value[7]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 23\"<div class=\"access-path\">$value[7]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#187 (2)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411125\"<div class=\"access-path\">$value[8]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"PPh Pasal 25\/29 OP\"<div class=\"access-path\">$value[8]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#188 (2)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411126\"<div class=\"access-path\">$value[9]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (21) \"PPh Pasal 25\/29 Badan\"<div class=\"access-path\">$value[9]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#189 (2)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411127\"<div class=\"access-path\">$value[10]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 26\"<div class=\"access-path\">$value[10]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#190 (2)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411128\"<div class=\"access-path\">$value[11]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (9) \"PPh Final\"<div class=\"access-path\">$value[11]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#191 (2)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411129\"<div class=\"access-path\">$value[12]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (21) \"PPh Non Migas Lainnya\"<div class=\"access-path\">$value[12]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#192 (2)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411131\"<div class=\"access-path\">$value[13]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"Fiskal Luar Negeri\"<div class=\"access-path\">$value[13]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#193 (2)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411141\"<div class=\"access-path\">$value[14]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 21\"<div class=\"access-path\">$value[14]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#194 (2)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411141\"<div class=\"access-path\">$value[15]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[15]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#195 (2)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411142\"<div class=\"access-path\">$value[16]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 22\"<div class=\"access-path\">$value[16]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#196 (2)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411143\"<div class=\"access-path\">$value[17]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (22) \"DTP PPH Pasal 22 Impor\"<div class=\"access-path\">$value[17]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#197 (2)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411144\"<div class=\"access-path\">$value[18]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[18]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#198 (2)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411144\"<div class=\"access-path\">$value[19]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 23\"<div class=\"access-path\">$value[19]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#199 (2)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411145\"<div class=\"access-path\">$value[20]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (22) \"DTP PPH Pasal 25\/29 OP\"<div class=\"access-path\">$value[20]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#200 (2)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411146\"<div class=\"access-path\">$value[21]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (25) \"DTP PPH Pasal 25\/29 Badan\"<div class=\"access-path\">$value[21]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>22<\/dfn> => <var>stdClass<\/var>#201 (2)<div class=\"access-path\">$value[22]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411146\"<div class=\"access-path\">$value[22]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[22]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>23<\/dfn> => <var>stdClass<\/var>#202 (2)<div class=\"access-path\">$value[23]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411147\"<div class=\"access-path\">$value[23]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 26\"<div class=\"access-path\">$value[23]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>24<\/dfn> => <var>stdClass<\/var>#203 (2)<div class=\"access-path\">$value[24]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411147\"<div class=\"access-path\">$value[24]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[24]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>25<\/dfn> => <var>stdClass<\/var>#204 (2)<div class=\"access-path\">$value[25]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411148\"<div class=\"access-path\">$value[25]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"DTP PPH Final\"<div class=\"access-path\">$value[25]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>26<\/dfn> => <var>stdClass<\/var>#205 (2)<div class=\"access-path\">$value[26]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411149\"<div class=\"access-path\">$value[26]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (17) \"DTP PPH Non Migas\"<div class=\"access-path\">$value[26]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>27<\/dfn> => <var>stdClass<\/var>#206 (2)<div class=\"access-path\">$value[27]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411211\"<div class=\"access-path\">$value[27]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"PPN Dalam Negeri\"<div class=\"access-path\">$value[27]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>28<\/dfn> => <var>stdClass<\/var>#207 (2)<div class=\"access-path\">$value[28]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411212\"<div class=\"access-path\">$value[28]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (9) \"PPN Impor\"<div class=\"access-path\">$value[28]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>29<\/dfn> => <var>stdClass<\/var>#208 (2)<div class=\"access-path\">$value[29]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411219\"<div class=\"access-path\">$value[29]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"PPN Lainnya\"<div class=\"access-path\">$value[29]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>30<\/dfn> => <var>stdClass<\/var>#209 (2)<div class=\"access-path\">$value[30]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411221\"<div class=\"access-path\">$value[30]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"PPnBM dalam Negeri\"<div class=\"access-path\">$value[30]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>31<\/dfn> => <var>stdClass<\/var>#210 (2)<div class=\"access-path\">$value[31]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411222\"<div class=\"access-path\">$value[31]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"PPnBM Impor\"<div class=\"access-path\">$value[31]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>32<\/dfn> => <var>stdClass<\/var>#211 (2)<div class=\"access-path\">$value[32]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411229\"<div class=\"access-path\">$value[32]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PPnBM Lainnya\"<div class=\"access-path\">$value[32]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>33<\/dfn> => <var>stdClass<\/var>#212 (2)<div class=\"access-path\">$value[33]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411231\"<div class=\"access-path\">$value[33]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (20) \"DTP PPN Dalam Negeri\"<div class=\"access-path\">$value[33]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>34<\/dfn> => <var>stdClass<\/var>#213 (2)<div class=\"access-path\">$value[34]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411232\"<div class=\"access-path\">$value[34]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"DTP PPN Impor\"<div class=\"access-path\">$value[34]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>35<\/dfn> => <var>stdClass<\/var>#214 (2)<div class=\"access-path\">$value[35]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411239\"<div class=\"access-path\">$value[35]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (15) \"DTP PPN Lainnya\"<div class=\"access-path\">$value[35]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>36<\/dfn> => <var>stdClass<\/var>#215 (2)<div class=\"access-path\">$value[36]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411241\"<div class=\"access-path\">$value[36]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (29) \"DTP PPN Dalam Negeri Covid-19\"<div class=\"access-path\">$value[36]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>37<\/dfn> => <var>stdClass<\/var>#216 (2)<div class=\"access-path\">$value[37]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411242\"<div class=\"access-path\">$value[37]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (31) \"DTP PPNBM Dalam Negeri Covid-19\"<div class=\"access-path\">$value[37]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>38<\/dfn> => <var>stdClass<\/var>#217 (2)<div class=\"access-path\">$value[38]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411311\"<div class=\"access-path\">$value[38]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PBB Pedesaan\"<div class=\"access-path\">$value[38]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>39<\/dfn> => <var>stdClass<\/var>#218 (2)<div class=\"access-path\">$value[39]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411312\"<div class=\"access-path\">$value[39]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PBB Perkotaan\"<div class=\"access-path\">$value[39]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>40<\/dfn> => <var>stdClass<\/var>#219 (2)<div class=\"access-path\">$value[40]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411313\"<div class=\"access-path\">$value[40]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (14) \"PBB Perkebunan\"<div class=\"access-path\">$value[40]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>41<\/dfn> => <var>stdClass<\/var>#220 (2)<div class=\"access-path\">$value[41]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411314\"<div class=\"access-path\">$value[41]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PBB Kehutanan\"<div class=\"access-path\">$value[41]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>42<\/dfn> => <var>stdClass<\/var>#221 (2)<div class=\"access-path\">$value[42]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411315\"<div class=\"access-path\">$value[42]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (43) \"PBB Pertambangan untuk Mineral dan Batubara\"<div class=\"access-path\">$value[42]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>43<\/dfn> => <var>stdClass<\/var>#222 (2)<div class=\"access-path\">$value[43]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411316\"<div class=\"access-path\">$value[43]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (42) \"PBB Pertambangan untuk Minyak dan Gas Bumi\"<div class=\"access-path\">$value[43]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>44<\/dfn> => <var>stdClass<\/var>#223 (2)<div class=\"access-path\">$value[44]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411317\"<div class=\"access-path\">$value[44]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (42) \"Pertambangan untuk pertambangan panas bumi\"<div class=\"access-path\">$value[44]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>45<\/dfn> => <var>stdClass<\/var>#224 (2)<div class=\"access-path\">$value[45]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411319\"<div class=\"access-path\">$value[45]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"PBB Lainnya\"<div class=\"access-path\">$value[45]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>46<\/dfn> => <var>stdClass<\/var>#225 (2)<div class=\"access-path\">$value[46]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411411\"<div class=\"access-path\">$value[46]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (5) \"BPHTB\"<div class=\"access-path\">$value[46]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>47<\/dfn> => <var>stdClass<\/var>#226 (2)<div class=\"access-path\">$value[47]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411611\"<div class=\"access-path\">$value[47]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"Bea Meterai\"<div class=\"access-path\">$value[47]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>48<\/dfn> => <var>stdClass<\/var>#227 (2)<div class=\"access-path\">$value[48]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411612\"<div class=\"access-path\">$value[48]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (23) \"Penjualan Benda Materai\"<div class=\"access-path\">$value[48]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>49<\/dfn> => <var>stdClass<\/var>#228 (2)<div class=\"access-path\">$value[49]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411613\"<div class=\"access-path\">$value[49]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PPn Batu Bara\"<div class=\"access-path\">$value[49]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>50<\/dfn> => <var>stdClass<\/var>#229 (2)<div class=\"access-path\">$value[50]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411619\"<div class=\"access-path\">$value[50]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (4) \"PTLL\"<div class=\"access-path\">$value[50]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>51<\/dfn> => <var>stdClass<\/var>#230 (2)<div class=\"access-path\">$value[51]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411621\"<div class=\"access-path\">$value[51]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (25) \"Bunga\/Denda Penagihan PPh\"<div class=\"access-path\">$value[51]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>52<\/dfn> => <var>stdClass<\/var>#231 (2)<div class=\"access-path\">$value[52]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411622\"<div class=\"access-path\">$value[52]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (25) \"Bunga\/Denda Penagihan PPN\"<div class=\"access-path\">$value[52]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>53<\/dfn> => <var>stdClass<\/var>#232 (2)<div class=\"access-path\">$value[53]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411623\"<div class=\"access-path\">$value[53]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (27) \"Bunga\/Denda Penagihan PPnBM\"<div class=\"access-path\">$value[53]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>54<\/dfn> => <var>stdClass<\/var>#233 (2)<div class=\"access-path\">$value[54]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411624\"<div class=\"access-path\">$value[54]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (26) \"Bunga\/Denda Penagihan PTLL\"<div class=\"access-path\">$value[54]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selkjs":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (175)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#235 (1)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"000\"<div class=\"access-path\">$value[0]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#236 (1)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"100\"<div class=\"access-path\">$value[1]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#237 (1)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"101\"<div class=\"access-path\">$value[2]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#238 (1)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"102\"<div class=\"access-path\">$value[3]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#239 (1)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"103\"<div class=\"access-path\">$value[4]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#240 (1)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"104\"<div class=\"access-path\">$value[5]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#241 (1)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"105\"<div class=\"access-path\">$value[6]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#242 (1)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"106\"<div class=\"access-path\">$value[7]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#243 (1)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"107\"<div class=\"access-path\">$value[8]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#244 (1)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"108\"<div class=\"access-path\">$value[9]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#245 (1)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"111\"<div class=\"access-path\">$value[10]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#246 (1)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"121\"<div class=\"access-path\">$value[11]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#247 (1)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"122\"<div class=\"access-path\">$value[12]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#248 (1)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"199\"<div class=\"access-path\">$value[13]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#249 (1)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"200\"<div class=\"access-path\">$value[14]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#250 (1)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"201\"<div class=\"access-path\">$value[15]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#251 (1)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"202\"<div class=\"access-path\">$value[16]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#252 (1)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"203\"<div class=\"access-path\">$value[17]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#253 (1)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"204\"<div class=\"access-path\">$value[18]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#254 (1)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"205\"<div class=\"access-path\">$value[19]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#255 (1)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"206\"<div class=\"access-path\">$value[20]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#256 (1)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"207\"<div class=\"access-path\">$value[21]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>22<\/dfn> => <var>stdClass<\/var>#257 (1)<div class=\"access-path\">$value[22]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"208\"<div class=\"access-path\">$value[22]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>23<\/dfn> => <var>stdClass<\/var>#258 (1)<div class=\"access-path\">$value[23]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"209\"<div class=\"access-path\">$value[23]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>24<\/dfn> => <var>stdClass<\/var>#259 (1)<div class=\"access-path\">$value[24]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"210\"<div class=\"access-path\">$value[24]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>25<\/dfn> => <var>stdClass<\/var>#260 (1)<div class=\"access-path\">$value[25]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"211\"<div class=\"access-path\">$value[25]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>26<\/dfn> => <var>stdClass<\/var>#261 (1)<div class=\"access-path\">$value[26]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"212\"<div class=\"access-path\">$value[26]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>27<\/dfn> => <var>stdClass<\/var>#262 (1)<div class=\"access-path\">$value[27]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"213\"<div class=\"access-path\">$value[27]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>28<\/dfn> => <var>stdClass<\/var>#263 (1)<div class=\"access-path\">$value[28]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"214\"<div class=\"access-path\">$value[28]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>29<\/dfn> => <var>stdClass<\/var>#264 (1)<div class=\"access-path\">$value[29]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"215\"<div class=\"access-path\">$value[29]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>30<\/dfn> => <var>stdClass<\/var>#265 (1)<div class=\"access-path\">$value[30]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"216\"<div class=\"access-path\">$value[30]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>31<\/dfn> => <var>stdClass<\/var>#266 (1)<div class=\"access-path\">$value[31]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"217\"<div class=\"access-path\">$value[31]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>32<\/dfn> => <var>stdClass<\/var>#267 (1)<div class=\"access-path\">$value[32]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"218\"<div class=\"access-path\">$value[32]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>33<\/dfn> => <var>stdClass<\/var>#268 (1)<div class=\"access-path\">$value[33]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"219\"<div class=\"access-path\">$value[33]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>34<\/dfn> => <var>stdClass<\/var>#269 (1)<div class=\"access-path\">$value[34]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"220\"<div class=\"access-path\">$value[34]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>35<\/dfn> => <var>stdClass<\/var>#270 (1)<div class=\"access-path\">$value[35]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"221\"<div class=\"access-path\">$value[35]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>36<\/dfn> => <var>stdClass<\/var>#271 (1)<div class=\"access-path\">$value[36]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"222\"<div class=\"access-path\">$value[36]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>37<\/dfn> => <var>stdClass<\/var>#272 (1)<div class=\"access-path\">$value[37]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"223\"<div class=\"access-path\">$value[37]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>38<\/dfn> => <var>stdClass<\/var>#273 (1)<div class=\"access-path\">$value[38]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"224\"<div class=\"access-path\">$value[38]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>39<\/dfn> => <var>stdClass<\/var>#274 (1)<div class=\"access-path\">$value[39]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"225\"<div class=\"access-path\">$value[39]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>40<\/dfn> => <var>stdClass<\/var>#275 (1)<div class=\"access-path\">$value[40]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"226\"<div class=\"access-path\">$value[40]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>41<\/dfn> => <var>stdClass<\/var>#276 (1)<div class=\"access-path\">$value[41]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"227\"<div class=\"access-path\">$value[41]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>42<\/dfn> => <var>stdClass<\/var>#277 (1)<div class=\"access-path\">$value[42]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"228\"<div class=\"access-path\">$value[42]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>43<\/dfn> => <var>stdClass<\/var>#278 (1)<div class=\"access-path\">$value[43]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"229\"<div class=\"access-path\">$value[43]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>44<\/dfn> => <var>stdClass<\/var>#279 (1)<div class=\"access-path\">$value[44]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"230\"<div class=\"access-path\">$value[44]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>45<\/dfn> => <var>stdClass<\/var>#280 (1)<div class=\"access-path\">$value[45]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"231\"<div class=\"access-path\">$value[45]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>46<\/dfn> => <var>stdClass<\/var>#281 (1)<div class=\"access-path\">$value[46]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"232\"<div class=\"access-path\">$value[46]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>47<\/dfn> => <var>stdClass<\/var>#282 (1)<div class=\"access-path\">$value[47]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"233\"<div class=\"access-path\">$value[47]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>48<\/dfn> => <var>stdClass<\/var>#283 (1)<div class=\"access-path\">$value[48]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"234\"<div class=\"access-path\">$value[48]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>49<\/dfn> => <var>stdClass<\/var>#284 (1)<div class=\"access-path\">$value[49]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"235\"<div class=\"access-path\">$value[49]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>50<\/dfn> => <var>stdClass<\/var>#285 (1)<div class=\"access-path\">$value[50]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"236\"<div class=\"access-path\">$value[50]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>51<\/dfn> => <var>stdClass<\/var>#286 (1)<div class=\"access-path\">$value[51]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"237\"<div class=\"access-path\">$value[51]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>52<\/dfn> => <var>stdClass<\/var>#287 (1)<div class=\"access-path\">$value[52]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"238\"<div class=\"access-path\">$value[52]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>53<\/dfn> => <var>stdClass<\/var>#288 (1)<div class=\"access-path\">$value[53]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"239\"<div class=\"access-path\">$value[53]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>54<\/dfn> => <var>stdClass<\/var>#289 (1)<div class=\"access-path\">$value[54]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"240\"<div class=\"access-path\">$value[54]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>55<\/dfn> => <var>stdClass<\/var>#290 (1)<div class=\"access-path\">$value[55]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"241\"<div class=\"access-path\">$value[55]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>56<\/dfn> => <var>stdClass<\/var>#291 (1)<div class=\"access-path\">$value[56]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"242\"<div class=\"access-path\">$value[56]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>57<\/dfn> => <var>stdClass<\/var>#292 (1)<div class=\"access-path\">$value[57]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"243\"<div class=\"access-path\">$value[57]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>58<\/dfn> => <var>stdClass<\/var>#293 (1)<div class=\"access-path\">$value[58]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"244\"<div class=\"access-path\">$value[58]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>59<\/dfn> => <var>stdClass<\/var>#294 (1)<div class=\"access-path\">$value[59]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"245\"<div class=\"access-path\">$value[59]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>60<\/dfn> => <var>stdClass<\/var>#295 (1)<div class=\"access-path\">$value[60]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"246\"<div class=\"access-path\">$value[60]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>61<\/dfn> => <var>stdClass<\/var>#296 (1)<div class=\"access-path\">$value[61]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"247\"<div class=\"access-path\">$value[61]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>62<\/dfn> => <var>stdClass<\/var>#297 (1)<div class=\"access-path\">$value[62]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"248\"<div class=\"access-path\">$value[62]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>63<\/dfn> => <var>stdClass<\/var>#298 (1)<div class=\"access-path\">$value[63]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"249\"<div class=\"access-path\">$value[63]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>64<\/dfn> => <var>stdClass<\/var>#299 (1)<div class=\"access-path\">$value[64]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"250\"<div class=\"access-path\">$value[64]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>65<\/dfn> => <var>stdClass<\/var>#300 (1)<div class=\"access-path\">$value[65]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"251\"<div class=\"access-path\">$value[65]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>66<\/dfn> => <var>stdClass<\/var>#301 (1)<div class=\"access-path\">$value[66]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"252\"<div class=\"access-path\">$value[66]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>67<\/dfn> => <var>stdClass<\/var>#302 (1)<div class=\"access-path\">$value[67]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"253\"<div class=\"access-path\">$value[67]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>68<\/dfn> => <var>stdClass<\/var>#303 (1)<div class=\"access-path\">$value[68]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"254\"<div class=\"access-path\">$value[68]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>69<\/dfn> => <var>stdClass<\/var>#304 (1)<div class=\"access-path\">$value[69]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"255\"<div class=\"access-path\">$value[69]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>70<\/dfn> => <var>stdClass<\/var>#305 (1)<div class=\"access-path\">$value[70]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"256\"<div class=\"access-path\">$value[70]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>71<\/dfn> => <var>stdClass<\/var>#306 (1)<div class=\"access-path\">$value[71]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"257\"<div class=\"access-path\">$value[71]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>72<\/dfn> => <var>stdClass<\/var>#307 (1)<div class=\"access-path\">$value[72]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"258\"<div class=\"access-path\">$value[72]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>73<\/dfn> => <var>stdClass<\/var>#308 (1)<div class=\"access-path\">$value[73]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"259\"<div class=\"access-path\">$value[73]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>74<\/dfn> => <var>stdClass<\/var>#309 (1)<div class=\"access-path\">$value[74]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"260\"<div class=\"access-path\">$value[74]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>75<\/dfn> => <var>stdClass<\/var>#310 (1)<div class=\"access-path\">$value[75]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"261\"<div class=\"access-path\">$value[75]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>76<\/dfn> => <var>stdClass<\/var>#311 (1)<div class=\"access-path\">$value[76]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"262\"<div class=\"access-path\">$value[76]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>77<\/dfn> => <var>stdClass<\/var>#312 (1)<div class=\"access-path\">$value[77]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"263\"<div class=\"access-path\">$value[77]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>78<\/dfn> => <var>stdClass<\/var>#313 (1)<div class=\"access-path\">$value[78]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"264\"<div class=\"access-path\">$value[78]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>79<\/dfn> => <var>stdClass<\/var>#314 (1)<div class=\"access-path\">$value[79]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"265\"<div class=\"access-path\">$value[79]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>80<\/dfn> => <var>stdClass<\/var>#315 (1)<div class=\"access-path\">$value[80]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"266\"<div class=\"access-path\">$value[80]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>81<\/dfn> => <var>stdClass<\/var>#316 (1)<div class=\"access-path\">$value[81]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"267\"<div class=\"access-path\">$value[81]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>82<\/dfn> => <var>stdClass<\/var>#317 (1)<div class=\"access-path\">$value[82]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"268\"<div class=\"access-path\">$value[82]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>83<\/dfn> => <var>stdClass<\/var>#318 (1)<div class=\"access-path\">$value[83]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"269\"<div class=\"access-path\">$value[83]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>84<\/dfn> => <var>stdClass<\/var>#319 (1)<div class=\"access-path\">$value[84]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"270\"<div class=\"access-path\">$value[84]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>85<\/dfn> => <var>stdClass<\/var>#320 (1)<div class=\"access-path\">$value[85]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"271\"<div class=\"access-path\">$value[85]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>86<\/dfn> => <var>stdClass<\/var>#321 (1)<div class=\"access-path\">$value[86]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"272\"<div class=\"access-path\">$value[86]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>87<\/dfn> => <var>stdClass<\/var>#322 (1)<div class=\"access-path\">$value[87]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"273\"<div class=\"access-path\">$value[87]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>88<\/dfn> => <var>stdClass<\/var>#323 (1)<div class=\"access-path\">$value[88]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"274\"<div class=\"access-path\">$value[88]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>89<\/dfn> => <var>stdClass<\/var>#324 (1)<div class=\"access-path\">$value[89]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"275\"<div class=\"access-path\">$value[89]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>90<\/dfn> => <var>stdClass<\/var>#325 (1)<div class=\"access-path\">$value[90]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"276\"<div class=\"access-path\">$value[90]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>91<\/dfn> => <var>stdClass<\/var>#326 (1)<div class=\"access-path\">$value[91]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"277\"<div class=\"access-path\">$value[91]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>92<\/dfn> => <var>stdClass<\/var>#327 (1)<div class=\"access-path\">$value[92]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"278\"<div class=\"access-path\">$value[92]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>93<\/dfn> => <var>stdClass<\/var>#328 (1)<div class=\"access-path\">$value[93]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"279\"<div class=\"access-path\">$value[93]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>94<\/dfn> => <var>stdClass<\/var>#329 (1)<div class=\"access-path\">$value[94]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"280\"<div class=\"access-path\">$value[94]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>95<\/dfn> => <var>stdClass<\/var>#330 (1)<div class=\"access-path\">$value[95]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"281\"<div class=\"access-path\">$value[95]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>96<\/dfn> => <var>stdClass<\/var>#331 (1)<div class=\"access-path\">$value[96]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"282\"<div class=\"access-path\">$value[96]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>97<\/dfn> => <var>stdClass<\/var>#332 (1)<div class=\"access-path\">$value[97]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"283\"<div class=\"access-path\">$value[97]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>98<\/dfn> => <var>stdClass<\/var>#333 (1)<div class=\"access-path\">$value[98]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"284\"<div class=\"access-path\">$value[98]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>99<\/dfn> => <var>stdClass<\/var>#334 (1)<div class=\"access-path\">$value[99]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"285\"<div class=\"access-path\">$value[99]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>100<\/dfn> => <var>stdClass<\/var>#335 (1)<div class=\"access-path\">$value[100]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"286\"<div class=\"access-path\">$value[100]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>101<\/dfn> => <var>stdClass<\/var>#336 (1)<div class=\"access-path\">$value[101]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"287\"<div class=\"access-path\">$value[101]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>102<\/dfn> => <var>stdClass<\/var>#337 (1)<div class=\"access-path\">$value[102]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"288\"<div class=\"access-path\">$value[102]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>103<\/dfn> => <var>stdClass<\/var>#338 (1)<div class=\"access-path\">$value[103]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"289\"<div class=\"access-path\">$value[103]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>104<\/dfn> => <var>stdClass<\/var>#339 (1)<div class=\"access-path\">$value[104]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"290\"<div class=\"access-path\">$value[104]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>105<\/dfn> => <var>stdClass<\/var>#340 (1)<div class=\"access-path\">$value[105]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"291\"<div class=\"access-path\">$value[105]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>106<\/dfn> => <var>stdClass<\/var>#341 (1)<div class=\"access-path\">$value[106]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"292\"<div class=\"access-path\">$value[106]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>107<\/dfn> => <var>stdClass<\/var>#342 (1)<div class=\"access-path\">$value[107]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"293\"<div class=\"access-path\">$value[107]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>108<\/dfn> => <var>stdClass<\/var>#343 (1)<div class=\"access-path\">$value[108]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"294\"<div class=\"access-path\">$value[108]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>109<\/dfn> => <var>stdClass<\/var>#344 (1)<div class=\"access-path\">$value[109]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"295\"<div class=\"access-path\">$value[109]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>110<\/dfn> => <var>stdClass<\/var>#345 (1)<div class=\"access-path\">$value[110]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"296\"<div class=\"access-path\">$value[110]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>111<\/dfn> => <var>stdClass<\/var>#346 (1)<div class=\"access-path\">$value[111]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"297\"<div class=\"access-path\">$value[111]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>112<\/dfn> => <var>stdClass<\/var>#347 (1)<div class=\"access-path\">$value[112]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"298\"<div class=\"access-path\">$value[112]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>113<\/dfn> => <var>stdClass<\/var>#348 (1)<div class=\"access-path\">$value[113]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"299\"<div class=\"access-path\">$value[113]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>114<\/dfn> => <var>stdClass<\/var>#349 (1)<div class=\"access-path\">$value[114]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"300\"<div class=\"access-path\">$value[114]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>115<\/dfn> => <var>stdClass<\/var>#350 (1)<div class=\"access-path\">$value[115]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"301\"<div class=\"access-path\">$value[115]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>116<\/dfn> => <var>stdClass<\/var>#351 (1)<div class=\"access-path\">$value[116]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"302\"<div class=\"access-path\">$value[116]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>117<\/dfn> => <var>stdClass<\/var>#352 (1)<div class=\"access-path\">$value[117]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"310\"<div class=\"access-path\">$value[117]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>118<\/dfn> => <var>stdClass<\/var>#353 (1)<div class=\"access-path\">$value[118]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"311\"<div class=\"access-path\">$value[118]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>119<\/dfn> => <var>stdClass<\/var>#354 (1)<div class=\"access-path\">$value[119]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"312\"<div class=\"access-path\">$value[119]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>120<\/dfn> => <var>stdClass<\/var>#355 (1)<div class=\"access-path\">$value[120]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"313\"<div class=\"access-path\">$value[120]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>121<\/dfn> => <var>stdClass<\/var>#356 (1)<div class=\"access-path\">$value[121]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"314\"<div class=\"access-path\">$value[121]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>122<\/dfn> => <var>stdClass<\/var>#357 (1)<div class=\"access-path\">$value[122]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"317\"<div class=\"access-path\">$value[122]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>123<\/dfn> => <var>stdClass<\/var>#358 (1)<div class=\"access-path\">$value[123]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"318\"<div class=\"access-path\">$value[123]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>124<\/dfn> => <var>stdClass<\/var>#359 (1)<div class=\"access-path\">$value[124]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"319\"<div class=\"access-path\">$value[124]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>125<\/dfn> => <var>stdClass<\/var>#360 (1)<div class=\"access-path\">$value[125]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"320\"<div class=\"access-path\">$value[125]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>126<\/dfn> => <var>stdClass<\/var>#361 (1)<div class=\"access-path\">$value[126]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"321\"<div class=\"access-path\">$value[126]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>127<\/dfn> => <var>stdClass<\/var>#362 (1)<div class=\"access-path\">$value[127]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"322\"<div class=\"access-path\">$value[127]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>128<\/dfn> => <var>stdClass<\/var>#363 (1)<div class=\"access-path\">$value[128]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"323\"<div class=\"access-path\">$value[128]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>129<\/dfn> => <var>stdClass<\/var>#364 (1)<div class=\"access-path\">$value[129]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"324\"<div class=\"access-path\">$value[129]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>130<\/dfn> => <var>stdClass<\/var>#365 (1)<div class=\"access-path\">$value[130]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"390\"<div class=\"access-path\">$value[130]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>131<\/dfn> => <var>stdClass<\/var>#366 (1)<div class=\"access-path\">$value[131]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"400\"<div class=\"access-path\">$value[131]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>132<\/dfn> => <var>stdClass<\/var>#367 (1)<div class=\"access-path\">$value[132]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"401\"<div class=\"access-path\">$value[132]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>133<\/dfn> => <var>stdClass<\/var>#368 (1)<div class=\"access-path\">$value[133]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"402\"<div class=\"access-path\">$value[133]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>134<\/dfn> => <var>stdClass<\/var>#369 (1)<div class=\"access-path\">$value[134]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"403\"<div class=\"access-path\">$value[134]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>135<\/dfn> => <var>stdClass<\/var>#370 (1)<div class=\"access-path\">$value[135]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"404\"<div class=\"access-path\">$value[135]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>136<\/dfn> => <var>stdClass<\/var>#371 (1)<div class=\"access-path\">$value[136]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"405\"<div class=\"access-path\">$value[136]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>137<\/dfn> => <var>stdClass<\/var>#372 (1)<div class=\"access-path\">$value[137]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"406\"<div class=\"access-path\">$value[137]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>138<\/dfn> => <var>stdClass<\/var>#373 (1)<div class=\"access-path\">$value[138]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"407\"<div class=\"access-path\">$value[138]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>139<\/dfn> => <var>stdClass<\/var>#374 (1)<div class=\"access-path\">$value[139]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"408\"<div class=\"access-path\">$value[139]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>140<\/dfn> => <var>stdClass<\/var>#375 (1)<div class=\"access-path\">$value[140]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"409\"<div class=\"access-path\">$value[140]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>141<\/dfn> => <var>stdClass<\/var>#376 (1)<div class=\"access-path\">$value[141]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"410\"<div class=\"access-path\">$value[141]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>142<\/dfn> => <var>stdClass<\/var>#377 (1)<div class=\"access-path\">$value[142]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"411\"<div class=\"access-path\">$value[142]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>143<\/dfn> => <var>stdClass<\/var>#378 (1)<div class=\"access-path\">$value[143]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"412\"<div class=\"access-path\">$value[143]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>144<\/dfn> => <var>stdClass<\/var>#379 (1)<div class=\"access-path\">$value[144]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"413\"<div class=\"access-path\">$value[144]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>145<\/dfn> => <var>stdClass<\/var>#380 (1)<div class=\"access-path\">$value[145]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"414\"<div class=\"access-path\">$value[145]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>146<\/dfn> => <var>stdClass<\/var>#381 (1)<div class=\"access-path\">$value[146]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"415\"<div class=\"access-path\">$value[146]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>147<\/dfn> => <var>stdClass<\/var>#382 (1)<div class=\"access-path\">$value[147]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"416\"<div class=\"access-path\">$value[147]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>148<\/dfn> => <var>stdClass<\/var>#383 (1)<div class=\"access-path\">$value[148]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"417\"<div class=\"access-path\">$value[148]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>149<\/dfn> => <var>stdClass<\/var>#384 (1)<div class=\"access-path\">$value[149]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"418\"<div class=\"access-path\">$value[149]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>150<\/dfn> => <var>stdClass<\/var>#385 (1)<div class=\"access-path\">$value[150]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"419\"<div class=\"access-path\">$value[150]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>151<\/dfn> => <var>stdClass<\/var>#386 (1)<div class=\"access-path\">$value[151]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"420\"<div class=\"access-path\">$value[151]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>152<\/dfn> => <var>stdClass<\/var>#387 (1)<div class=\"access-path\">$value[152]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"421\"<div class=\"access-path\">$value[152]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>153<\/dfn> => <var>stdClass<\/var>#388 (1)<div class=\"access-path\">$value[153]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"422\"<div class=\"access-path\">$value[153]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>154<\/dfn> => <var>stdClass<\/var>#389 (1)<div class=\"access-path\">$value[154]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"423\"<div class=\"access-path\">$value[154]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>155<\/dfn> => <var>stdClass<\/var>#390 (1)<div class=\"access-path\">$value[155]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"424\"<div class=\"access-path\">$value[155]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>156<\/dfn> => <var>stdClass<\/var>#391 (1)<div class=\"access-path\">$value[156]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"425\"<div class=\"access-path\">$value[156]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>157<\/dfn> => <var>stdClass<\/var>#392 (1)<div class=\"access-path\">$value[157]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"427\"<div class=\"access-path\">$value[157]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>158<\/dfn> => <var>stdClass<\/var>#393 (1)<div class=\"access-path\">$value[158]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"428\"<div class=\"access-path\">$value[158]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>159<\/dfn> => <var>stdClass<\/var>#394 (1)<div class=\"access-path\">$value[159]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"499\"<div class=\"access-path\">$value[159]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>160<\/dfn> => <var>stdClass<\/var>#395 (1)<div class=\"access-path\">$value[160]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"500\"<div class=\"access-path\">$value[160]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>161<\/dfn> => <var>stdClass<\/var>#396 (1)<div class=\"access-path\">$value[161]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"501\"<div class=\"access-path\">$value[161]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>162<\/dfn> => <var>stdClass<\/var>#397 (1)<div class=\"access-path\">$value[162]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"510\"<div class=\"access-path\">$value[162]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>163<\/dfn> => <var>stdClass<\/var>#398 (1)<div class=\"access-path\">$value[163]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"511\"<div class=\"access-path\">$value[163]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>164<\/dfn> => <var>stdClass<\/var>#399 (1)<div class=\"access-path\">$value[164]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"512\"<div class=\"access-path\">$value[164]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>165<\/dfn> => <var>stdClass<\/var>#400 (1)<div class=\"access-path\">$value[165]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"513\"<div class=\"access-path\">$value[165]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>166<\/dfn> => <var>stdClass<\/var>#401 (1)<div class=\"access-path\">$value[166]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"514\"<div class=\"access-path\">$value[166]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>167<\/dfn> => <var>stdClass<\/var>#402 (1)<div class=\"access-path\">$value[167]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"515\"<div class=\"access-path\">$value[167]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>168<\/dfn> => <var>stdClass<\/var>#403 (1)<div class=\"access-path\">$value[168]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"516\"<div class=\"access-path\">$value[168]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>169<\/dfn> => <var>stdClass<\/var>#404 (1)<div class=\"access-path\">$value[169]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"900\"<div class=\"access-path\">$value[169]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>170<\/dfn> => <var>stdClass<\/var>#405 (1)<div class=\"access-path\">$value[170]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"901\"<div class=\"access-path\">$value[170]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>171<\/dfn> => <var>stdClass<\/var>#406 (1)<div class=\"access-path\">$value[171]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"902\"<div class=\"access-path\">$value[171]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>172<\/dfn> => <var>stdClass<\/var>#407 (1)<div class=\"access-path\">$value[172]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"910\"<div class=\"access-path\">$value[172]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>173<\/dfn> => <var>stdClass<\/var>#408 (1)<div class=\"access-path\">$value[173]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"920\"<div class=\"access-path\">$value[173]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>174<\/dfn> => <var>stdClass<\/var>#409 (1)<div class=\"access-path\">$value[174]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"930\"<div class=\"access-path\">$value[174]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","dtmapkjs":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (12)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#411 (6)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"01\"<div class=\"access-path\">$value[0]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"153193226838783\"<div class=\"access-path\">$value[0]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"162324655671151\"<div class=\"access-path\">$value[0]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[0]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"964130\"<div class=\"access-path\">$value[0]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"926187\"<div class=\"access-path\">$value[0]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#412 (6)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"02\"<div class=\"access-path\">$value[1]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"119419515571313\"<div class=\"access-path\">$value[1]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"117656017422686\"<div class=\"access-path\">$value[1]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[1]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"836587\"<div class=\"access-path\">$value[1]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"849167\"<div class=\"access-path\">$value[1]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#413 (6)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"03\"<div class=\"access-path\">$value[2]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"130324656773714\"<div class=\"access-path\">$value[2]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"151908567490454\"<div class=\"access-path\">$value[2]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[2]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (7) \"1099357\"<div class=\"access-path\">$value[2]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1112279\"<div class=\"access-path\">$value[2]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#414 (6)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"04\"<div class=\"access-path\">$value[3]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"224520570036594\"<div class=\"access-path\">$value[3]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"256229865814097\"<div class=\"access-path\">$value[3]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[3]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"911748\"<div class=\"access-path\">$value[3]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"877992\"<div class=\"access-path\">$value[3]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#415 (6)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"05\"<div class=\"access-path\">$value[4]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[4]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"142317308724531\"<div class=\"access-path\">$value[4]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[4]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[4]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"912007\"<div class=\"access-path\">$value[4]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#416 (6)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"06\"<div class=\"access-path\">$value[5]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[5]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"139837261465513\"<div class=\"access-path\">$value[5]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[5]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[5]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"930351\"<div class=\"access-path\">$value[5]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#417 (6)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"07\"<div class=\"access-path\">$value[6]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[6]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"138827778078352\"<div class=\"access-path\">$value[6]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[6]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[6]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"957637\"<div class=\"access-path\">$value[6]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#418 (6)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"08\"<div class=\"access-path\">$value[7]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[7]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"137864154782725\"<div class=\"access-path\">$value[7]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[7]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[7]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"991044\"<div class=\"access-path\">$value[7]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#419 (6)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"09\"<div class=\"access-path\">$value[8]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[8]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"140807912273049\"<div class=\"access-path\">$value[8]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[8]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[8]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"976139\"<div class=\"access-path\">$value[8]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#420 (6)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"10\"<div class=\"access-path\">$value[9]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[9]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"136104769648355\"<div class=\"access-path\">$value[9]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[9]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[9]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1001434\"<div class=\"access-path\">$value[9]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#421 (6)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"11\"<div class=\"access-path\">$value[10]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[10]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"146046768940592\"<div class=\"access-path\">$value[10]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[10]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[10]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1043589\"<div class=\"access-path\">$value[10]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#422 (6)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"12\"<div class=\"access-path\">$value[11]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[11]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"197947434424383\"<div class=\"access-path\">$value[11]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[11]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[11]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1194889\"<div class=\"access-path\">$value[11]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>"}},"session":{"__ci_last_regenerate":"<pre>1715934103<\/pre>","nip":"060086978","nipp":"196805201995031003","nama":"SUPARNO","kppadm":"000","jabatan":"Direktur","kantor":"Direktorat Ekstensifikasi dan Penilaian","seksi":"<pre><\/pre>","tpkantor":"KPDJP","kwladm":"991","isLogin":"<pre>1<\/pre>","_ci_previous_url":"http:\/\/localhost\/engineN\/home\/gmapkjs"},"post":{"kwl":"SEMUA","kdmap":"SEMUA","kjs":"SEMUA","kategori":"SEMUA","tahun":"2024"},"headers":{"Content-Type":"application\/x-www-form-urlencoded","Host":"localhost","Connection":"keep-alive","Cache-Control":"max-age=0","Sec-Ch-Ua":""Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"","Sec-Ch-Ua-Mobile":"?0","Sec-Ch-Ua-Platform":""Windows"","Upgrade-Insecure-Requests":"1","Origin":"http:\/\/localhost","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36","Accept":"text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,image\/apng,*\/*;q=0.8,application\/signed-exchange;v=b3;q=0.7","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"navigate","Sec-Fetch-User":"?1","Sec-Fetch-Dest":"document","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"debug-bar-tab=ci-timeline; debug-bar-state=minimized; ci_session=84lu6ft803rsdcfgu48sbqf5iskep16s"},"cookies":{"debug-bar-tab":"ci-timeline","debug-bar-state":"minimized","ci_session":"84lu6ft803rsdcfgu48sbqf5iskep16s"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715934118.705158.json b/writable/debugbar/debugbar_1715934118.705158.json deleted file mode 100644 index ff163dc3..00000000 --- a/writable/debugbar/debugbar_1715934118.705158.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/home\/gmapkjs","method":"POST","isAJAX":false,"startTime":1715934115.559516,"totalTime":3122.3,"totalMemory":"7.765","segmentDuration":450,"segmentCount":7,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715934115.565765,"duration":0.012710094451904297},{"name":"Routing","component":"Timer","start":1715934115.578476,"duration":0.0006260871887207031},{"name":"Before Filters","component":"Timer","start":1715934115.580031,"duration":9.059906005859375e-6},{"name":"Controller","component":"Timer","start":1715934115.580041,"duration":3.101797103881836},{"name":"Controller Constructor","component":"Timer","start":1715934115.580041,"duration":0.000993967056274414},{"name":"After Filters","component":"Timer","start":1715934118.681853,"duration":0.00027489662170410156}]},{"title":"Database","titleSafe":"database","titleDetails":"(7 total Queries, 7 of them unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"0.33 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KANWIL"\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KODE" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:43","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:183","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKwl()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:43","qid":"6e8af04020523a5847b5f29d920fcd6c"},{"hover":"","class":"","duration":"0.18 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "BULAN"","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:35","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:184","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selBln()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:35","qid":"6bff8963045379fe851abcba6d524614"},{"hover":"","class":"","duration":"0.13 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KPP"\n<strong>WHERE<\/strong> "KD_KANWIL" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KD_KPP" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:52","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:185","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKpp()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:52","qid":"9c6f149c063e8783fcf971884fd29f9b"},{"hover":"","class":"","duration":"0.45 ms","sql":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_KATEGORI KATEGORI, NM_KATEGORIPDK NAMA <strong>FROM<\/strong> REF_KLU\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_KATEGORI <strong>ASC<\/strong>","trace":[{"file":"APPPATH\\Models\\Mref.php:11","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:187","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKLU()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:11","qid":"783c9540c52e78dea45a4a8f75c83997"},{"hover":"","class":"","duration":"0.26 ms","sql":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_MAP,NM_MAP <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_MAP <strong>ASC<\/strong>","trace":[{"file":"APPPATH\\Models\\Mref.php:18","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:188","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selMAP()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:18","qid":"e3d85be8bc09a218a2b20c00b1b69b1f"},{"hover":"","class":"","duration":"0.38 ms","sql":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_SETOR KJS <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>WHERE<\/strong> TRIM(KD_SETOR) <strong>IS<\/strong> <strong>NOT<\/strong> <strong>NULL<\/strong>\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_SETOR <strong>ASC<\/strong>","trace":[{"file":"APPPATH\\Models\\Mref.php:25","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:189","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKJS()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:25","qid":"5e575a184e7ff45fda34835aa2b0369c"},{"hover":"","class":"","duration":"2999.08 ms","sql":"<strong>SELECT<\/strong> \r\n BLNBYR,\r\n (<strong>SELECT<\/strong> <strong>SUM<\/strong>(JUMLAH)POPULASI <strong>FROM<\/strong> KEWAJIBAN_FLAGN\r\n <strong>WHERE<\/strong> KD_MAP <> 0 ) POPULASI,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN 1 ELSE 0 END) WPBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN 1 ELSE 0 END) WPBYRPAST,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN TOTAL ELSE 0 END) JMLBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN TOTAL ELSE 0 END) JMLBYRPAST\r\n <strong>FROM<\/strong> (<strong>SELECT<\/strong> NPWP,THNBYR,BLNBYR,<strong>SUM<\/strong>(TOTAL) TOTAL <strong>FROM<\/strong> DASHBOARD_BESAR_MAPKJS\r\n <strong>WHERE<\/strong> THNBYR BETWEEN '2023' <strong>AND<\/strong> '2024' \r\n <strong>GROUP<\/strong> <strong>BY<\/strong> NPWP,THNBYR,BLNBYR\r\n )\r\n <strong>GROUP<\/strong> <strong>BY<\/strong> BLNBYR <strong>ORDER<\/strong> <strong>BY<\/strong> BLNBYR <strong>ASC<\/strong>\r\n ","trace":[{"file":"APPPATH\\Models\\Mpemby.php:381","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:190","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mpemby->gmapkjs()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mpemby.php:381","qid":"41bd29c149900a0f535adbe0c4b553e8"}]},"badgeValue":7,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715934115.627599,"duration":"0.049440"},{"name":"Query","component":"Database","start":1715934115.677532,"duration":"0.000327","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KANWIL"\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KODE" <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934115.678602,"duration":"0.000184","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "BULAN""},{"name":"Query","component":"Database","start":1715934115.678868,"duration":"0.000134","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KPP"\n<strong>WHERE<\/strong> "KD_KANWIL" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KD_KPP" <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934115.679022,"duration":"0.000452","query":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_KATEGORI KATEGORI, NM_KATEGORIPDK NAMA <strong>FROM<\/strong> REF_KLU\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_KATEGORI <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934115.679497,"duration":"0.000259","query":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_MAP,NM_MAP <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_MAP <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934115.679794,"duration":"0.000381","query":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_SETOR KJS <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>WHERE<\/strong> TRIM(KD_SETOR) <strong>IS<\/strong> <strong>NOT<\/strong> <strong>NULL<\/strong>\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_SETOR <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934115.680274,"duration":"2.999082","query":"<strong>SELECT<\/strong> \r\n BLNBYR,\r\n (<strong>SELECT<\/strong> <strong>SUM<\/strong>(JUMLAH)POPULASI <strong>FROM<\/strong> KEWAJIBAN_FLAGN\r\n <strong>WHERE<\/strong> KD_MAP <> 0 ) POPULASI,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN 1 ELSE 0 END) WPBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN 1 ELSE 0 END) WPBYRPAST,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN TOTAL ELSE 0 END) JMLBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN TOTAL ELSE 0 END) JMLBYRPAST\r\n <strong>FROM<\/strong> (<strong>SELECT<\/strong> NPWP,THNBYR,BLNBYR,<strong>SUM<\/strong>(TOTAL) TOTAL <strong>FROM<\/strong> DASHBOARD_BESAR_MAPKJS\r\n <strong>WHERE<\/strong> THNBYR BETWEEN '2023' <strong>AND<\/strong> '2024' \r\n <strong>GROUP<\/strong> <strong>BY<\/strong> NPWP,THNBYR,BLNBYR\r\n )\r\n <strong>GROUP<\/strong> <strong>BY<\/strong> BLNBYR <strong>ORDER<\/strong> <strong>BY<\/strong> BLNBYR <strong>ASC<\/strong>\r\n "}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[{"level":"info","msg":"Session: Class initialized using 'CodeIgniter\\Session\\Handlers\\FileHandler' driver."}]},"badgeValue":null,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":6,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"View: inc\/head.php","component":"Views","start":1715934118.679437,"duration":0.00047707557678222656},{"name":"View: inc\/navbar.php","component":"Views","start":1715934118.680061,"duration":0.00017189979553222656},{"name":"View: inc\/sidebar.php","component":"Views","start":1715934118.680293,"duration":0.0002868175506591797},{"name":"View: inc\/js.php","component":"Views","start":1715934118.681098,"duration":0.0003809928894042969},{"name":"View: ppm\/gmapkjs.php","component":"Views","start":1715934118.680638,"duration":0.0009808540344238281},{"name":"View: inc\/footer.php","component":"Views","start":1715934118.681692,"duration":0.0001010894775390625}]},{"title":"Files","titleSafe":"files","titleDetails":"( 178 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseBuilder.php","name":"BaseBuilder.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Builder.php","name":"Builder.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\HandlerInterface.php","name":"HandlerInterface.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Session\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Session\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Session\\Session.php","name":"Session.php"},{"path":"SYSTEMPATH\\Session\\SessionInterface.php","name":"SessionInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Traits\\ConditionalTrait.php","name":"ConditionalTrait.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Session.php","name":"Session.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\BaseController.php","name":"BaseController.php"},{"path":"APPPATH\\Controllers\\Home.php","name":"Home.php"},{"path":"APPPATH\\Helpers\\myhelper_helper.php","name":"myhelper_helper.php"},{"path":"APPPATH\\Models\\Mpemby.php","name":"Mpemby.php"},{"path":"APPPATH\\Models\\Mref.php","name":"Mref.php"},{"path":"APPPATH\\Views\\inc\\footer.php","name":"footer.php"},{"path":"APPPATH\\Views\\inc\\head.php","name":"head.php"},{"path":"APPPATH\\Views\\inc\\js.php","name":"js.php"},{"path":"APPPATH\\Views\\inc\\navbar.php","name":"navbar.php"},{"path":"APPPATH\\Views\\inc\\sidebar.php","name":"sidebar.php"},{"path":"APPPATH\\Views\\ppm\\gmapkjs.php","name":"gmapkjs.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerAwareTrait.php","name":"LoggerAwareTrait.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":178,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Home","method":"gmapkjs","paramCount":0,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":0,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"4.28","count":1},"dbquery":{"event":"dbquery","duration":"0.09","count":7}}},"badgeValue":8,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715934115.572714,"duration":0.004275798797607422},{"name":"Event: dbquery","component":"Events","start":1715934115.677864,"duration":2.193450927734375e-5},{"name":"Event: dbquery","component":"Events","start":1715934115.678788,"duration":1.2159347534179688e-5},{"name":"Event: dbquery","component":"Events","start":1715934115.679003,"duration":6.9141387939453125e-6},{"name":"Event: dbquery","component":"Events","start":1715934115.679474,"duration":4.76837158203125e-6},{"name":"Event: dbquery","component":"Events","start":1715934115.679756,"duration":4.0531158447265625e-6},{"name":"Event: dbquery","component":"Events","start":1715934115.680177,"duration":1.3113021850585938e-5},{"name":"Event: dbquery","component":"Events","start":1715934118.67936,"duration":2.2172927856445312e-5}]}],"vars":{"varData":{"View Data":{"kwlx":"SEMUA","kppx":"SEMUA","seksix":"SEMUA","nipx":"SEMUA","tahunx":"2024","bulanx":"01","bulan2x":"05","mapx":"SEMUA","kjsx":"SEMUA","kategorix":"SEMUA","selkwl":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (34)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#105 (3)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"010\"<div class=\"access-path\">$value[0]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"010\"<div class=\"access-path\">$value[0]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (15) \"Kanwil DJP Aceh\"<div class=\"access-path\">$value[0]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#108 (3)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"020\"<div class=\"access-path\">$value[1]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"020\"<div class=\"access-path\">$value[1]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (27) \"Kanwil DJP Sumatera Utara I\"<div class=\"access-path\">$value[1]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#109 (3)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"030\"<div class=\"access-path\">$value[2]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"030\"<div class=\"access-path\">$value[2]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"Kanwil DJP Sumatera Utara II\"<div class=\"access-path\">$value[2]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#110 (3)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"040\"<div class=\"access-path\">$value[3]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"040\"<div class=\"access-path\">$value[3]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (15) \"Kanwil DJP Riau\"<div class=\"access-path\">$value[3]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#111 (3)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"050\"<div class=\"access-path\">$value[4]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"050\"<div class=\"access-path\">$value[4]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (35) \"Kanwil DJP Sumatera Barat dan Jambi\"<div class=\"access-path\">$value[4]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#112 (3)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"060\"<div class=\"access-path\">$value[5]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"060\"<div class=\"access-path\">$value[5]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (57) \"Kanwil DJP Sumatera Selatan dan Kepulauan Bangka Belitung\"<div class=\"access-path\">$value[5]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#113 (3)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"070\"<div class=\"access-path\">$value[6]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"070\"<div class=\"access-path\">$value[6]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (31) \"Kanwil DJP Bengkulu dan Lampung\"<div class=\"access-path\">$value[6]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#114 (3)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"080\"<div class=\"access-path\">$value[7]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"080\"<div class=\"access-path\">$value[7]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Pusat\"<div class=\"access-path\">$value[7]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#115 (3)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"090\"<div class=\"access-path\">$value[8]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"090\"<div class=\"access-path\">$value[8]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Barat\"<div class=\"access-path\">$value[8]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#116 (3)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"100\"<div class=\"access-path\">$value[9]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"100\"<div class=\"access-path\">$value[9]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"Kanwil DJP Jakarta Selatan I\"<div class=\"access-path\">$value[9]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#117 (3)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"110\"<div class=\"access-path\">$value[10]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"110\"<div class=\"access-path\">$value[10]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Timur\"<div class=\"access-path\">$value[10]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#118 (3)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"120\"<div class=\"access-path\">$value[11]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"120\"<div class=\"access-path\">$value[11]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Utara\"<div class=\"access-path\">$value[11]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#119 (3)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"130\"<div class=\"access-path\">$value[12]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"130\"<div class=\"access-path\">$value[12]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jakarta Khusus\"<div class=\"access-path\">$value[12]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#120 (3)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"140\"<div class=\"access-path\">$value[13]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"140\"<div class=\"access-path\">$value[13]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (17) \"Kanwil DJP Banten\"<div class=\"access-path\">$value[13]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#121 (3)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"150\"<div class=\"access-path\">$value[14]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"150\"<div class=\"access-path\">$value[14]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (23) \"Kanwil DJP Jawa Barat I\"<div class=\"access-path\">$value[14]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#122 (3)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"160\"<div class=\"access-path\">$value[15]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"160\"<div class=\"access-path\">$value[15]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jawa Barat II\"<div class=\"access-path\">$value[15]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#123 (3)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"170\"<div class=\"access-path\">$value[16]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"170\"<div class=\"access-path\">$value[16]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jawa Tengah I\"<div class=\"access-path\">$value[16]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#124 (3)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"180\"<div class=\"access-path\">$value[17]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"180\"<div class=\"access-path\">$value[17]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jawa Tengah II\"<div class=\"access-path\">$value[17]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#125 (3)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"190\"<div class=\"access-path\">$value[18]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"190\"<div class=\"access-path\">$value[18]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (37) \"Kanwil DJP Daerah Istimewa Yogyakarta\"<div class=\"access-path\">$value[18]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#126 (3)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"200\"<div class=\"access-path\">$value[19]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"200\"<div class=\"access-path\">$value[19]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (23) \"Kanwil DJP Jawa Timur I\"<div class=\"access-path\">$value[19]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#127 (3)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"210\"<div class=\"access-path\">$value[20]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"210\"<div class=\"access-path\">$value[20]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jawa Timur II\"<div class=\"access-path\">$value[20]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#128 (3)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"220\"<div class=\"access-path\">$value[21]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"220\"<div class=\"access-path\">$value[21]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jawa Timur III\"<div class=\"access-path\">$value[21]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>22<\/dfn> => <var>stdClass<\/var>#129 (3)<div class=\"access-path\">$value[22]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"230\"<div class=\"access-path\">$value[22]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"230\"<div class=\"access-path\">$value[22]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (27) \"Kanwil DJP Kalimantan Barat\"<div class=\"access-path\">$value[22]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>23<\/dfn> => <var>stdClass<\/var>#130 (3)<div class=\"access-path\">$value[23]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"240\"<div class=\"access-path\">$value[23]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"240\"<div class=\"access-path\">$value[23]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (40) \"Kanwil DJP Kalimantan Selatan dan Tengah\"<div class=\"access-path\">$value[23]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>24<\/dfn> => <var>stdClass<\/var>#131 (3)<div class=\"access-path\">$value[24]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"250\"<div class=\"access-path\">$value[24]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"250\"<div class=\"access-path\">$value[24]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (37) \"Kanwil DJP Kalimantan Timur dan Utara\"<div class=\"access-path\">$value[24]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>25<\/dfn> => <var>stdClass<\/var>#132 (3)<div class=\"access-path\">$value[25]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"260\"<div class=\"access-path\">$value[25]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"260\"<div class=\"access-path\">$value[25]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (48) \"Kanwil DJP Sulawesi Selatan, Barat, dan Tenggara\"<div class=\"access-path\">$value[25]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>26<\/dfn> => <var>stdClass<\/var>#133 (3)<div class=\"access-path\">$value[26]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"270\"<div class=\"access-path\">$value[26]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"270\"<div class=\"access-path\">$value[26]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (62) \"Kanwil DJP Sulawesi Utara, Tengah, Gorontalo, dan Maluku Utara\"<div class=\"access-path\">$value[26]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>27<\/dfn> => <var>stdClass<\/var>#134 (3)<div class=\"access-path\">$value[27]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"280\"<div class=\"access-path\">$value[27]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"280\"<div class=\"access-path\">$value[27]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (15) \"Kanwil DJP Bali\"<div class=\"access-path\">$value[27]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>28<\/dfn> => <var>stdClass<\/var>#135 (3)<div class=\"access-path\">$value[28]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"290\"<div class=\"access-path\">$value[28]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"290\"<div class=\"access-path\">$value[28]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Nusa Tenggara\"<div class=\"access-path\">$value[28]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>29<\/dfn> => <var>stdClass<\/var>#136 (3)<div class=\"access-path\">$value[29]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"300\"<div class=\"access-path\">$value[29]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"300\"<div class=\"access-path\">$value[29]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (41) \"Kanwil DJP Papua, Papua Barat, dan Maluku\"<div class=\"access-path\">$value[29]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>30<\/dfn> => <var>stdClass<\/var>#137 (3)<div class=\"access-path\">$value[30]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"310\"<div class=\"access-path\">$value[30]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"310\"<div class=\"access-path\">$value[30]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"Kanwil DJP Wajib Pajak Besar\"<div class=\"access-path\">$value[30]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>31<\/dfn> => <var>stdClass<\/var>#138 (3)<div class=\"access-path\">$value[31]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"320\"<div class=\"access-path\">$value[31]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"320\"<div class=\"access-path\">$value[31]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (29) \"Kanwil DJP Jakarta Selatan II\"<div class=\"access-path\">$value[31]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>32<\/dfn> => <var>stdClass<\/var>#139 (3)<div class=\"access-path\">$value[32]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"330\"<div class=\"access-path\">$value[32]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"330\"<div class=\"access-path\">$value[32]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jawa Barat III\"<div class=\"access-path\">$value[32]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>33<\/dfn> => <var>stdClass<\/var>#140 (3)<div class=\"access-path\">$value[33]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"340\"<div class=\"access-path\">$value[33]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"340\"<div class=\"access-path\">$value[33]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Kepulauan Riau\"<div class=\"access-path\">$value[33]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selbulan":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (12)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#107 (3)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"01\"<div class=\"access-path\">$value[0]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (7) \"JANUARI\"<div class=\"access-path\">$value[0]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"JAN\"<div class=\"access-path\">$value[0]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#143 (3)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"02\"<div class=\"access-path\">$value[1]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (8) \"FEBRUARI\"<div class=\"access-path\">$value[1]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"FEB\"<div class=\"access-path\">$value[1]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#144 (3)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"03\"<div class=\"access-path\">$value[2]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (5) \"MARET\"<div class=\"access-path\">$value[2]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"MAR\"<div class=\"access-path\">$value[2]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#145 (3)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"04\"<div class=\"access-path\">$value[3]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (5) \"APRIL\"<div class=\"access-path\">$value[3]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"APR\"<div class=\"access-path\">$value[3]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#146 (3)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"05\"<div class=\"access-path\">$value[4]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (3) \"MEI\"<div class=\"access-path\">$value[4]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"MEI\"<div class=\"access-path\">$value[4]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#147 (3)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"06\"<div class=\"access-path\">$value[5]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (4) \"JUNI\"<div class=\"access-path\">$value[5]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"JUN\"<div class=\"access-path\">$value[5]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#148 (3)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"07\"<div class=\"access-path\">$value[6]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (4) \"JULI\"<div class=\"access-path\">$value[6]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"JUL\"<div class=\"access-path\">$value[6]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#149 (3)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"08\"<div class=\"access-path\">$value[7]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (7) \"AGUSTUS\"<div class=\"access-path\">$value[7]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (5) \"AGUST\"<div class=\"access-path\">$value[7]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#150 (3)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"09\"<div class=\"access-path\">$value[8]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (9) \"SEPTEMBER\"<div class=\"access-path\">$value[8]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"SEP\"<div class=\"access-path\">$value[8]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#151 (3)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"10\"<div class=\"access-path\">$value[9]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (7) \"OKTOBER\"<div class=\"access-path\">$value[9]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"OKT\"<div class=\"access-path\">$value[9]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#152 (3)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"11\"<div class=\"access-path\">$value[10]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (8) \"NOPEMBER\"<div class=\"access-path\">$value[10]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"NOP\"<div class=\"access-path\">$value[10]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#153 (3)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"12\"<div class=\"access-path\">$value[11]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (8) \"DESEMBER\"<div class=\"access-path\">$value[11]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"DES\"<div class=\"access-path\">$value[11]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selkpp":"<div class=\"kint-rich\"><dl><dt><dfn>$value<\/dfn> <var>array<\/var> (0)<\/dt><\/dl><\/div>","selklu":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (22)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#156 (2)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"A\"<div class=\"access-path\">$value[0]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (9) \"PERTANIAN\"<div class=\"access-path\">$value[0]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#157 (2)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"B\"<div class=\"access-path\">$value[1]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (27) \"PERTAMBANGAN DAN PENGGALIAN\"<div class=\"access-path\">$value[1]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#158 (2)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"C\"<div class=\"access-path\">$value[2]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (19) \"INDUSTRI PENGOLAHAN\"<div class=\"access-path\">$value[2]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#159 (2)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"D\"<div class=\"access-path\">$value[3]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (17) \"PENGADAAN LISTRIK\"<div class=\"access-path\">$value[3]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#160 (2)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"E\"<div class=\"access-path\">$value[4]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (13) \"TREATMENT AIR\"<div class=\"access-path\">$value[4]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#161 (2)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"F\"<div class=\"access-path\">$value[5]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (10) \"KONSTRUKSI\"<div class=\"access-path\">$value[5]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#162 (2)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"G\"<div class=\"access-path\">$value[6]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"PERDAGANGAN BESAR DAN ECERAN\"<div class=\"access-path\">$value[6]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#163 (2)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"H\"<div class=\"access-path\">$value[7]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"PENGANGKUTAN DAN PERGUDANGAN\"<div class=\"access-path\">$value[7]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#164 (2)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"I\"<div class=\"access-path\">$value[8]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (47) \"PENYEDIAAN AKOMODASI DAN PENYEDIAAN MAKAN MINUM\"<div class=\"access-path\">$value[8]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#165 (2)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"J\"<div class=\"access-path\">$value[9]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"INFORMASI DAN KOMUNIKASI\"<div class=\"access-path\">$value[9]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#166 (2)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"K\"<div class=\"access-path\">$value[10]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (31) \"AKTIVITAS KEUANGAN DAN ASURANSI\"<div class=\"access-path\">$value[10]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#167 (2)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"L\"<div class=\"access-path\">$value[11]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (10) \"REAL ESTAT\"<div class=\"access-path\">$value[11]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#168 (2)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"M\"<div class=\"access-path\">$value[12]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (21) \"AKTIVITAS PROFESIONAL\"<div class=\"access-path\">$value[12]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#169 (2)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"N\"<div class=\"access-path\">$value[13]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (54) \"AKTIVITAS PENYEWAAN DAN SEWA GUNA USAHA TANPA HAK OPSI\"<div class=\"access-path\">$value[13]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#170 (2)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"O\"<div class=\"access-path\">$value[14]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"ADMINISTRASI PEMERINTAHAN\"<div class=\"access-path\">$value[14]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#171 (2)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"P\"<div class=\"access-path\">$value[15]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (10) \"PENDIDIKAN\"<div class=\"access-path\">$value[15]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#172 (2)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"Q\"<div class=\"access-path\">$value[16]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (48) \"AKTIVITAS KESEHATAN MANUSIA DAN AKTIVITAS SOSIAL\"<div class=\"access-path\">$value[16]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#173 (2)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"R\"<div class=\"access-path\">$value[17]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (8) \"KESENIAN\"<div class=\"access-path\">$value[17]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#174 (2)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"S\"<div class=\"access-path\">$value[18]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (22) \"AKTIVITAS JASA LAINNYA\"<div class=\"access-path\">$value[18]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#175 (2)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"T\"<div class=\"access-path\">$value[19]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (44) \"AKTIVITAS RUMAH TANGGA SEBAGAI PEMBERI KERJA\"<div class=\"access-path\">$value[19]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#176 (2)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"U\"<div class=\"access-path\">$value[20]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (68) \"AKTIVITAS BADAN INTERNASIONAL DAN BADAN EKSTRA INTERNASIONAL LAINNYA\"<div class=\"access-path\">$value[20]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#177 (2)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"Z\"<div class=\"access-path\">$value[21]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (14) \"PEJABAT NEGARA\"<div class=\"access-path\">$value[21]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selmap":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (55)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#179 (2)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411111\"<div class=\"access-path\">$value[0]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (15) \"PPh Minyak Bumi\"<div class=\"access-path\">$value[0]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#180 (2)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411112\"<div class=\"access-path\">$value[1]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Gas Alam\"<div class=\"access-path\">$value[1]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#181 (2)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411113\"<div class=\"access-path\">$value[2]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (23) \"PPh Minyak Bumi Lainnya\"<div class=\"access-path\">$value[2]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#182 (2)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411119\"<div class=\"access-path\">$value[3]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (17) \"PPh Migas Lainnya\"<div class=\"access-path\">$value[3]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#183 (2)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411121\"<div class=\"access-path\">$value[4]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 21\"<div class=\"access-path\">$value[4]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#184 (2)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411122\"<div class=\"access-path\">$value[5]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 22\"<div class=\"access-path\">$value[5]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#185 (2)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411123\"<div class=\"access-path\">$value[6]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"PPh Pasal 22 Impor\"<div class=\"access-path\">$value[6]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#186 (2)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411124\"<div class=\"access-path\">$value[7]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 23\"<div class=\"access-path\">$value[7]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#187 (2)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411125\"<div class=\"access-path\">$value[8]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"PPh Pasal 25\/29 OP\"<div class=\"access-path\">$value[8]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#188 (2)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411126\"<div class=\"access-path\">$value[9]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (21) \"PPh Pasal 25\/29 Badan\"<div class=\"access-path\">$value[9]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#189 (2)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411127\"<div class=\"access-path\">$value[10]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 26\"<div class=\"access-path\">$value[10]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#190 (2)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411128\"<div class=\"access-path\">$value[11]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (9) \"PPh Final\"<div class=\"access-path\">$value[11]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#191 (2)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411129\"<div class=\"access-path\">$value[12]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (21) \"PPh Non Migas Lainnya\"<div class=\"access-path\">$value[12]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#192 (2)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411131\"<div class=\"access-path\">$value[13]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"Fiskal Luar Negeri\"<div class=\"access-path\">$value[13]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#193 (2)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411141\"<div class=\"access-path\">$value[14]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 21\"<div class=\"access-path\">$value[14]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#194 (2)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411141\"<div class=\"access-path\">$value[15]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[15]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#195 (2)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411142\"<div class=\"access-path\">$value[16]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 22\"<div class=\"access-path\">$value[16]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#196 (2)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411143\"<div class=\"access-path\">$value[17]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (22) \"DTP PPH Pasal 22 Impor\"<div class=\"access-path\">$value[17]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#197 (2)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411144\"<div class=\"access-path\">$value[18]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[18]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#198 (2)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411144\"<div class=\"access-path\">$value[19]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 23\"<div class=\"access-path\">$value[19]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#199 (2)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411145\"<div class=\"access-path\">$value[20]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (22) \"DTP PPH Pasal 25\/29 OP\"<div class=\"access-path\">$value[20]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#200 (2)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411146\"<div class=\"access-path\">$value[21]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (25) \"DTP PPH Pasal 25\/29 Badan\"<div class=\"access-path\">$value[21]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>22<\/dfn> => <var>stdClass<\/var>#201 (2)<div class=\"access-path\">$value[22]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411146\"<div class=\"access-path\">$value[22]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[22]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>23<\/dfn> => <var>stdClass<\/var>#202 (2)<div class=\"access-path\">$value[23]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411147\"<div class=\"access-path\">$value[23]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 26\"<div class=\"access-path\">$value[23]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>24<\/dfn> => <var>stdClass<\/var>#203 (2)<div class=\"access-path\">$value[24]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411147\"<div class=\"access-path\">$value[24]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[24]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>25<\/dfn> => <var>stdClass<\/var>#204 (2)<div class=\"access-path\">$value[25]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411148\"<div class=\"access-path\">$value[25]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"DTP PPH Final\"<div class=\"access-path\">$value[25]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>26<\/dfn> => <var>stdClass<\/var>#205 (2)<div class=\"access-path\">$value[26]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411149\"<div class=\"access-path\">$value[26]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (17) \"DTP PPH Non Migas\"<div class=\"access-path\">$value[26]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>27<\/dfn> => <var>stdClass<\/var>#206 (2)<div class=\"access-path\">$value[27]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411211\"<div class=\"access-path\">$value[27]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"PPN Dalam Negeri\"<div class=\"access-path\">$value[27]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>28<\/dfn> => <var>stdClass<\/var>#207 (2)<div class=\"access-path\">$value[28]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411212\"<div class=\"access-path\">$value[28]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (9) \"PPN Impor\"<div class=\"access-path\">$value[28]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>29<\/dfn> => <var>stdClass<\/var>#208 (2)<div class=\"access-path\">$value[29]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411219\"<div class=\"access-path\">$value[29]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"PPN Lainnya\"<div class=\"access-path\">$value[29]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>30<\/dfn> => <var>stdClass<\/var>#209 (2)<div class=\"access-path\">$value[30]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411221\"<div class=\"access-path\">$value[30]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"PPnBM dalam Negeri\"<div class=\"access-path\">$value[30]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>31<\/dfn> => <var>stdClass<\/var>#210 (2)<div class=\"access-path\">$value[31]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411222\"<div class=\"access-path\">$value[31]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"PPnBM Impor\"<div class=\"access-path\">$value[31]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>32<\/dfn> => <var>stdClass<\/var>#211 (2)<div class=\"access-path\">$value[32]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411229\"<div class=\"access-path\">$value[32]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PPnBM Lainnya\"<div class=\"access-path\">$value[32]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>33<\/dfn> => <var>stdClass<\/var>#212 (2)<div class=\"access-path\">$value[33]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411231\"<div class=\"access-path\">$value[33]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (20) \"DTP PPN Dalam Negeri\"<div class=\"access-path\">$value[33]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>34<\/dfn> => <var>stdClass<\/var>#213 (2)<div class=\"access-path\">$value[34]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411232\"<div class=\"access-path\">$value[34]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"DTP PPN Impor\"<div class=\"access-path\">$value[34]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>35<\/dfn> => <var>stdClass<\/var>#214 (2)<div class=\"access-path\">$value[35]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411239\"<div class=\"access-path\">$value[35]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (15) \"DTP PPN Lainnya\"<div class=\"access-path\">$value[35]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>36<\/dfn> => <var>stdClass<\/var>#215 (2)<div class=\"access-path\">$value[36]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411241\"<div class=\"access-path\">$value[36]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (29) \"DTP PPN Dalam Negeri Covid-19\"<div class=\"access-path\">$value[36]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>37<\/dfn> => <var>stdClass<\/var>#216 (2)<div class=\"access-path\">$value[37]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411242\"<div class=\"access-path\">$value[37]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (31) \"DTP PPNBM Dalam Negeri Covid-19\"<div class=\"access-path\">$value[37]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>38<\/dfn> => <var>stdClass<\/var>#217 (2)<div class=\"access-path\">$value[38]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411311\"<div class=\"access-path\">$value[38]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PBB Pedesaan\"<div class=\"access-path\">$value[38]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>39<\/dfn> => <var>stdClass<\/var>#218 (2)<div class=\"access-path\">$value[39]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411312\"<div class=\"access-path\">$value[39]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PBB Perkotaan\"<div class=\"access-path\">$value[39]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>40<\/dfn> => <var>stdClass<\/var>#219 (2)<div class=\"access-path\">$value[40]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411313\"<div class=\"access-path\">$value[40]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (14) \"PBB Perkebunan\"<div class=\"access-path\">$value[40]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>41<\/dfn> => <var>stdClass<\/var>#220 (2)<div class=\"access-path\">$value[41]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411314\"<div class=\"access-path\">$value[41]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PBB Kehutanan\"<div class=\"access-path\">$value[41]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>42<\/dfn> => <var>stdClass<\/var>#221 (2)<div class=\"access-path\">$value[42]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411315\"<div class=\"access-path\">$value[42]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (43) \"PBB Pertambangan untuk Mineral dan Batubara\"<div class=\"access-path\">$value[42]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>43<\/dfn> => <var>stdClass<\/var>#222 (2)<div class=\"access-path\">$value[43]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411316\"<div class=\"access-path\">$value[43]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (42) \"PBB Pertambangan untuk Minyak dan Gas Bumi\"<div class=\"access-path\">$value[43]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>44<\/dfn> => <var>stdClass<\/var>#223 (2)<div class=\"access-path\">$value[44]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411317\"<div class=\"access-path\">$value[44]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (42) \"Pertambangan untuk pertambangan panas bumi\"<div class=\"access-path\">$value[44]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>45<\/dfn> => <var>stdClass<\/var>#224 (2)<div class=\"access-path\">$value[45]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411319\"<div class=\"access-path\">$value[45]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"PBB Lainnya\"<div class=\"access-path\">$value[45]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>46<\/dfn> => <var>stdClass<\/var>#225 (2)<div class=\"access-path\">$value[46]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411411\"<div class=\"access-path\">$value[46]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (5) \"BPHTB\"<div class=\"access-path\">$value[46]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>47<\/dfn> => <var>stdClass<\/var>#226 (2)<div class=\"access-path\">$value[47]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411611\"<div class=\"access-path\">$value[47]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"Bea Meterai\"<div class=\"access-path\">$value[47]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>48<\/dfn> => <var>stdClass<\/var>#227 (2)<div class=\"access-path\">$value[48]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411612\"<div class=\"access-path\">$value[48]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (23) \"Penjualan Benda Materai\"<div class=\"access-path\">$value[48]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>49<\/dfn> => <var>stdClass<\/var>#228 (2)<div class=\"access-path\">$value[49]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411613\"<div class=\"access-path\">$value[49]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PPn Batu Bara\"<div class=\"access-path\">$value[49]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>50<\/dfn> => <var>stdClass<\/var>#229 (2)<div class=\"access-path\">$value[50]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411619\"<div class=\"access-path\">$value[50]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (4) \"PTLL\"<div class=\"access-path\">$value[50]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>51<\/dfn> => <var>stdClass<\/var>#230 (2)<div class=\"access-path\">$value[51]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411621\"<div class=\"access-path\">$value[51]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (25) \"Bunga\/Denda Penagihan PPh\"<div class=\"access-path\">$value[51]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>52<\/dfn> => <var>stdClass<\/var>#231 (2)<div class=\"access-path\">$value[52]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411622\"<div class=\"access-path\">$value[52]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (25) \"Bunga\/Denda Penagihan PPN\"<div class=\"access-path\">$value[52]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>53<\/dfn> => <var>stdClass<\/var>#232 (2)<div class=\"access-path\">$value[53]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411623\"<div class=\"access-path\">$value[53]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (27) \"Bunga\/Denda Penagihan PPnBM\"<div class=\"access-path\">$value[53]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>54<\/dfn> => <var>stdClass<\/var>#233 (2)<div class=\"access-path\">$value[54]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411624\"<div class=\"access-path\">$value[54]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (26) \"Bunga\/Denda Penagihan PTLL\"<div class=\"access-path\">$value[54]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selkjs":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (175)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#235 (1)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"000\"<div class=\"access-path\">$value[0]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#236 (1)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"100\"<div class=\"access-path\">$value[1]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#237 (1)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"101\"<div class=\"access-path\">$value[2]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#238 (1)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"102\"<div class=\"access-path\">$value[3]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#239 (1)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"103\"<div class=\"access-path\">$value[4]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#240 (1)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"104\"<div class=\"access-path\">$value[5]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#241 (1)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"105\"<div class=\"access-path\">$value[6]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#242 (1)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"106\"<div class=\"access-path\">$value[7]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#243 (1)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"107\"<div class=\"access-path\">$value[8]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#244 (1)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"108\"<div class=\"access-path\">$value[9]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#245 (1)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"111\"<div class=\"access-path\">$value[10]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#246 (1)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"121\"<div class=\"access-path\">$value[11]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#247 (1)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"122\"<div class=\"access-path\">$value[12]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#248 (1)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"199\"<div class=\"access-path\">$value[13]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#249 (1)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"200\"<div class=\"access-path\">$value[14]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#250 (1)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"201\"<div class=\"access-path\">$value[15]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#251 (1)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"202\"<div class=\"access-path\">$value[16]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#252 (1)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"203\"<div class=\"access-path\">$value[17]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#253 (1)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"204\"<div class=\"access-path\">$value[18]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#254 (1)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"205\"<div class=\"access-path\">$value[19]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#255 (1)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"206\"<div class=\"access-path\">$value[20]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#256 (1)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"207\"<div class=\"access-path\">$value[21]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>22<\/dfn> => <var>stdClass<\/var>#257 (1)<div class=\"access-path\">$value[22]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"208\"<div class=\"access-path\">$value[22]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>23<\/dfn> => <var>stdClass<\/var>#258 (1)<div class=\"access-path\">$value[23]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"209\"<div class=\"access-path\">$value[23]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>24<\/dfn> => <var>stdClass<\/var>#259 (1)<div class=\"access-path\">$value[24]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"210\"<div class=\"access-path\">$value[24]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>25<\/dfn> => <var>stdClass<\/var>#260 (1)<div class=\"access-path\">$value[25]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"211\"<div class=\"access-path\">$value[25]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>26<\/dfn> => <var>stdClass<\/var>#261 (1)<div class=\"access-path\">$value[26]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"212\"<div class=\"access-path\">$value[26]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>27<\/dfn> => <var>stdClass<\/var>#262 (1)<div class=\"access-path\">$value[27]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"213\"<div class=\"access-path\">$value[27]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>28<\/dfn> => <var>stdClass<\/var>#263 (1)<div class=\"access-path\">$value[28]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"214\"<div class=\"access-path\">$value[28]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>29<\/dfn> => <var>stdClass<\/var>#264 (1)<div class=\"access-path\">$value[29]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"215\"<div class=\"access-path\">$value[29]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>30<\/dfn> => <var>stdClass<\/var>#265 (1)<div class=\"access-path\">$value[30]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"216\"<div class=\"access-path\">$value[30]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>31<\/dfn> => <var>stdClass<\/var>#266 (1)<div class=\"access-path\">$value[31]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"217\"<div class=\"access-path\">$value[31]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>32<\/dfn> => <var>stdClass<\/var>#267 (1)<div class=\"access-path\">$value[32]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"218\"<div class=\"access-path\">$value[32]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>33<\/dfn> => <var>stdClass<\/var>#268 (1)<div class=\"access-path\">$value[33]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"219\"<div class=\"access-path\">$value[33]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>34<\/dfn> => <var>stdClass<\/var>#269 (1)<div class=\"access-path\">$value[34]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"220\"<div class=\"access-path\">$value[34]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>35<\/dfn> => <var>stdClass<\/var>#270 (1)<div class=\"access-path\">$value[35]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"221\"<div class=\"access-path\">$value[35]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>36<\/dfn> => <var>stdClass<\/var>#271 (1)<div class=\"access-path\">$value[36]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"222\"<div class=\"access-path\">$value[36]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>37<\/dfn> => <var>stdClass<\/var>#272 (1)<div class=\"access-path\">$value[37]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"223\"<div class=\"access-path\">$value[37]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>38<\/dfn> => <var>stdClass<\/var>#273 (1)<div class=\"access-path\">$value[38]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"224\"<div class=\"access-path\">$value[38]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>39<\/dfn> => <var>stdClass<\/var>#274 (1)<div class=\"access-path\">$value[39]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"225\"<div class=\"access-path\">$value[39]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>40<\/dfn> => <var>stdClass<\/var>#275 (1)<div class=\"access-path\">$value[40]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"226\"<div class=\"access-path\">$value[40]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>41<\/dfn> => <var>stdClass<\/var>#276 (1)<div class=\"access-path\">$value[41]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"227\"<div class=\"access-path\">$value[41]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>42<\/dfn> => <var>stdClass<\/var>#277 (1)<div class=\"access-path\">$value[42]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"228\"<div class=\"access-path\">$value[42]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>43<\/dfn> => <var>stdClass<\/var>#278 (1)<div class=\"access-path\">$value[43]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"229\"<div class=\"access-path\">$value[43]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>44<\/dfn> => <var>stdClass<\/var>#279 (1)<div class=\"access-path\">$value[44]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"230\"<div class=\"access-path\">$value[44]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>45<\/dfn> => <var>stdClass<\/var>#280 (1)<div class=\"access-path\">$value[45]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"231\"<div class=\"access-path\">$value[45]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>46<\/dfn> => <var>stdClass<\/var>#281 (1)<div class=\"access-path\">$value[46]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"232\"<div class=\"access-path\">$value[46]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>47<\/dfn> => <var>stdClass<\/var>#282 (1)<div class=\"access-path\">$value[47]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"233\"<div class=\"access-path\">$value[47]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>48<\/dfn> => <var>stdClass<\/var>#283 (1)<div class=\"access-path\">$value[48]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"234\"<div class=\"access-path\">$value[48]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>49<\/dfn> => <var>stdClass<\/var>#284 (1)<div class=\"access-path\">$value[49]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"235\"<div class=\"access-path\">$value[49]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>50<\/dfn> => <var>stdClass<\/var>#285 (1)<div class=\"access-path\">$value[50]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"236\"<div class=\"access-path\">$value[50]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>51<\/dfn> => <var>stdClass<\/var>#286 (1)<div class=\"access-path\">$value[51]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"237\"<div class=\"access-path\">$value[51]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>52<\/dfn> => <var>stdClass<\/var>#287 (1)<div class=\"access-path\">$value[52]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"238\"<div class=\"access-path\">$value[52]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>53<\/dfn> => <var>stdClass<\/var>#288 (1)<div class=\"access-path\">$value[53]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"239\"<div class=\"access-path\">$value[53]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>54<\/dfn> => <var>stdClass<\/var>#289 (1)<div class=\"access-path\">$value[54]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"240\"<div class=\"access-path\">$value[54]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>55<\/dfn> => <var>stdClass<\/var>#290 (1)<div class=\"access-path\">$value[55]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"241\"<div class=\"access-path\">$value[55]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>56<\/dfn> => <var>stdClass<\/var>#291 (1)<div class=\"access-path\">$value[56]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"242\"<div class=\"access-path\">$value[56]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>57<\/dfn> => <var>stdClass<\/var>#292 (1)<div class=\"access-path\">$value[57]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"243\"<div class=\"access-path\">$value[57]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>58<\/dfn> => <var>stdClass<\/var>#293 (1)<div class=\"access-path\">$value[58]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"244\"<div class=\"access-path\">$value[58]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>59<\/dfn> => <var>stdClass<\/var>#294 (1)<div class=\"access-path\">$value[59]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"245\"<div class=\"access-path\">$value[59]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>60<\/dfn> => <var>stdClass<\/var>#295 (1)<div class=\"access-path\">$value[60]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"246\"<div class=\"access-path\">$value[60]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>61<\/dfn> => <var>stdClass<\/var>#296 (1)<div class=\"access-path\">$value[61]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"247\"<div class=\"access-path\">$value[61]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>62<\/dfn> => <var>stdClass<\/var>#297 (1)<div class=\"access-path\">$value[62]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"248\"<div class=\"access-path\">$value[62]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>63<\/dfn> => <var>stdClass<\/var>#298 (1)<div class=\"access-path\">$value[63]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"249\"<div class=\"access-path\">$value[63]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>64<\/dfn> => <var>stdClass<\/var>#299 (1)<div class=\"access-path\">$value[64]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"250\"<div class=\"access-path\">$value[64]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>65<\/dfn> => <var>stdClass<\/var>#300 (1)<div class=\"access-path\">$value[65]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"251\"<div class=\"access-path\">$value[65]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>66<\/dfn> => <var>stdClass<\/var>#301 (1)<div class=\"access-path\">$value[66]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"252\"<div class=\"access-path\">$value[66]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>67<\/dfn> => <var>stdClass<\/var>#302 (1)<div class=\"access-path\">$value[67]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"253\"<div class=\"access-path\">$value[67]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>68<\/dfn> => <var>stdClass<\/var>#303 (1)<div class=\"access-path\">$value[68]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"254\"<div class=\"access-path\">$value[68]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>69<\/dfn> => <var>stdClass<\/var>#304 (1)<div class=\"access-path\">$value[69]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"255\"<div class=\"access-path\">$value[69]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>70<\/dfn> => <var>stdClass<\/var>#305 (1)<div class=\"access-path\">$value[70]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"256\"<div class=\"access-path\">$value[70]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>71<\/dfn> => <var>stdClass<\/var>#306 (1)<div class=\"access-path\">$value[71]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"257\"<div class=\"access-path\">$value[71]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>72<\/dfn> => <var>stdClass<\/var>#307 (1)<div class=\"access-path\">$value[72]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"258\"<div class=\"access-path\">$value[72]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>73<\/dfn> => <var>stdClass<\/var>#308 (1)<div class=\"access-path\">$value[73]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"259\"<div class=\"access-path\">$value[73]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>74<\/dfn> => <var>stdClass<\/var>#309 (1)<div class=\"access-path\">$value[74]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"260\"<div class=\"access-path\">$value[74]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>75<\/dfn> => <var>stdClass<\/var>#310 (1)<div class=\"access-path\">$value[75]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"261\"<div class=\"access-path\">$value[75]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>76<\/dfn> => <var>stdClass<\/var>#311 (1)<div class=\"access-path\">$value[76]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"262\"<div class=\"access-path\">$value[76]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>77<\/dfn> => <var>stdClass<\/var>#312 (1)<div class=\"access-path\">$value[77]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"263\"<div class=\"access-path\">$value[77]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>78<\/dfn> => <var>stdClass<\/var>#313 (1)<div class=\"access-path\">$value[78]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"264\"<div class=\"access-path\">$value[78]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>79<\/dfn> => <var>stdClass<\/var>#314 (1)<div class=\"access-path\">$value[79]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"265\"<div class=\"access-path\">$value[79]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>80<\/dfn> => <var>stdClass<\/var>#315 (1)<div class=\"access-path\">$value[80]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"266\"<div class=\"access-path\">$value[80]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>81<\/dfn> => <var>stdClass<\/var>#316 (1)<div class=\"access-path\">$value[81]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"267\"<div class=\"access-path\">$value[81]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>82<\/dfn> => <var>stdClass<\/var>#317 (1)<div class=\"access-path\">$value[82]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"268\"<div class=\"access-path\">$value[82]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>83<\/dfn> => <var>stdClass<\/var>#318 (1)<div class=\"access-path\">$value[83]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"269\"<div class=\"access-path\">$value[83]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>84<\/dfn> => <var>stdClass<\/var>#319 (1)<div class=\"access-path\">$value[84]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"270\"<div class=\"access-path\">$value[84]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>85<\/dfn> => <var>stdClass<\/var>#320 (1)<div class=\"access-path\">$value[85]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"271\"<div class=\"access-path\">$value[85]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>86<\/dfn> => <var>stdClass<\/var>#321 (1)<div class=\"access-path\">$value[86]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"272\"<div class=\"access-path\">$value[86]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>87<\/dfn> => <var>stdClass<\/var>#322 (1)<div class=\"access-path\">$value[87]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"273\"<div class=\"access-path\">$value[87]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>88<\/dfn> => <var>stdClass<\/var>#323 (1)<div class=\"access-path\">$value[88]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"274\"<div class=\"access-path\">$value[88]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>89<\/dfn> => <var>stdClass<\/var>#324 (1)<div class=\"access-path\">$value[89]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"275\"<div class=\"access-path\">$value[89]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>90<\/dfn> => <var>stdClass<\/var>#325 (1)<div class=\"access-path\">$value[90]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"276\"<div class=\"access-path\">$value[90]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>91<\/dfn> => <var>stdClass<\/var>#326 (1)<div class=\"access-path\">$value[91]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"277\"<div class=\"access-path\">$value[91]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>92<\/dfn> => <var>stdClass<\/var>#327 (1)<div class=\"access-path\">$value[92]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"278\"<div class=\"access-path\">$value[92]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>93<\/dfn> => <var>stdClass<\/var>#328 (1)<div class=\"access-path\">$value[93]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"279\"<div class=\"access-path\">$value[93]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>94<\/dfn> => <var>stdClass<\/var>#329 (1)<div class=\"access-path\">$value[94]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"280\"<div class=\"access-path\">$value[94]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>95<\/dfn> => <var>stdClass<\/var>#330 (1)<div class=\"access-path\">$value[95]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"281\"<div class=\"access-path\">$value[95]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>96<\/dfn> => <var>stdClass<\/var>#331 (1)<div class=\"access-path\">$value[96]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"282\"<div class=\"access-path\">$value[96]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>97<\/dfn> => <var>stdClass<\/var>#332 (1)<div class=\"access-path\">$value[97]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"283\"<div class=\"access-path\">$value[97]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>98<\/dfn> => <var>stdClass<\/var>#333 (1)<div class=\"access-path\">$value[98]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"284\"<div class=\"access-path\">$value[98]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>99<\/dfn> => <var>stdClass<\/var>#334 (1)<div class=\"access-path\">$value[99]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"285\"<div class=\"access-path\">$value[99]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>100<\/dfn> => <var>stdClass<\/var>#335 (1)<div class=\"access-path\">$value[100]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"286\"<div class=\"access-path\">$value[100]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>101<\/dfn> => <var>stdClass<\/var>#336 (1)<div class=\"access-path\">$value[101]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"287\"<div class=\"access-path\">$value[101]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>102<\/dfn> => <var>stdClass<\/var>#337 (1)<div class=\"access-path\">$value[102]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"288\"<div class=\"access-path\">$value[102]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>103<\/dfn> => <var>stdClass<\/var>#338 (1)<div class=\"access-path\">$value[103]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"289\"<div class=\"access-path\">$value[103]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>104<\/dfn> => <var>stdClass<\/var>#339 (1)<div class=\"access-path\">$value[104]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"290\"<div class=\"access-path\">$value[104]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>105<\/dfn> => <var>stdClass<\/var>#340 (1)<div class=\"access-path\">$value[105]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"291\"<div class=\"access-path\">$value[105]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>106<\/dfn> => <var>stdClass<\/var>#341 (1)<div class=\"access-path\">$value[106]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"292\"<div class=\"access-path\">$value[106]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>107<\/dfn> => <var>stdClass<\/var>#342 (1)<div class=\"access-path\">$value[107]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"293\"<div class=\"access-path\">$value[107]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>108<\/dfn> => <var>stdClass<\/var>#343 (1)<div class=\"access-path\">$value[108]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"294\"<div class=\"access-path\">$value[108]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>109<\/dfn> => <var>stdClass<\/var>#344 (1)<div class=\"access-path\">$value[109]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"295\"<div class=\"access-path\">$value[109]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>110<\/dfn> => <var>stdClass<\/var>#345 (1)<div class=\"access-path\">$value[110]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"296\"<div class=\"access-path\">$value[110]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>111<\/dfn> => <var>stdClass<\/var>#346 (1)<div class=\"access-path\">$value[111]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"297\"<div class=\"access-path\">$value[111]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>112<\/dfn> => <var>stdClass<\/var>#347 (1)<div class=\"access-path\">$value[112]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"298\"<div class=\"access-path\">$value[112]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>113<\/dfn> => <var>stdClass<\/var>#348 (1)<div class=\"access-path\">$value[113]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"299\"<div class=\"access-path\">$value[113]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>114<\/dfn> => <var>stdClass<\/var>#349 (1)<div class=\"access-path\">$value[114]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"300\"<div class=\"access-path\">$value[114]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>115<\/dfn> => <var>stdClass<\/var>#350 (1)<div class=\"access-path\">$value[115]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"301\"<div class=\"access-path\">$value[115]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>116<\/dfn> => <var>stdClass<\/var>#351 (1)<div class=\"access-path\">$value[116]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"302\"<div class=\"access-path\">$value[116]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>117<\/dfn> => <var>stdClass<\/var>#352 (1)<div class=\"access-path\">$value[117]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"310\"<div class=\"access-path\">$value[117]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>118<\/dfn> => <var>stdClass<\/var>#353 (1)<div class=\"access-path\">$value[118]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"311\"<div class=\"access-path\">$value[118]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>119<\/dfn> => <var>stdClass<\/var>#354 (1)<div class=\"access-path\">$value[119]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"312\"<div class=\"access-path\">$value[119]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>120<\/dfn> => <var>stdClass<\/var>#355 (1)<div class=\"access-path\">$value[120]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"313\"<div class=\"access-path\">$value[120]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>121<\/dfn> => <var>stdClass<\/var>#356 (1)<div class=\"access-path\">$value[121]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"314\"<div class=\"access-path\">$value[121]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>122<\/dfn> => <var>stdClass<\/var>#357 (1)<div class=\"access-path\">$value[122]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"317\"<div class=\"access-path\">$value[122]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>123<\/dfn> => <var>stdClass<\/var>#358 (1)<div class=\"access-path\">$value[123]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"318\"<div class=\"access-path\">$value[123]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>124<\/dfn> => <var>stdClass<\/var>#359 (1)<div class=\"access-path\">$value[124]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"319\"<div class=\"access-path\">$value[124]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>125<\/dfn> => <var>stdClass<\/var>#360 (1)<div class=\"access-path\">$value[125]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"320\"<div class=\"access-path\">$value[125]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>126<\/dfn> => <var>stdClass<\/var>#361 (1)<div class=\"access-path\">$value[126]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"321\"<div class=\"access-path\">$value[126]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>127<\/dfn> => <var>stdClass<\/var>#362 (1)<div class=\"access-path\">$value[127]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"322\"<div class=\"access-path\">$value[127]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>128<\/dfn> => <var>stdClass<\/var>#363 (1)<div class=\"access-path\">$value[128]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"323\"<div class=\"access-path\">$value[128]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>129<\/dfn> => <var>stdClass<\/var>#364 (1)<div class=\"access-path\">$value[129]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"324\"<div class=\"access-path\">$value[129]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>130<\/dfn> => <var>stdClass<\/var>#365 (1)<div class=\"access-path\">$value[130]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"390\"<div class=\"access-path\">$value[130]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>131<\/dfn> => <var>stdClass<\/var>#366 (1)<div class=\"access-path\">$value[131]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"400\"<div class=\"access-path\">$value[131]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>132<\/dfn> => <var>stdClass<\/var>#367 (1)<div class=\"access-path\">$value[132]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"401\"<div class=\"access-path\">$value[132]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>133<\/dfn> => <var>stdClass<\/var>#368 (1)<div class=\"access-path\">$value[133]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"402\"<div class=\"access-path\">$value[133]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>134<\/dfn> => <var>stdClass<\/var>#369 (1)<div class=\"access-path\">$value[134]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"403\"<div class=\"access-path\">$value[134]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>135<\/dfn> => <var>stdClass<\/var>#370 (1)<div class=\"access-path\">$value[135]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"404\"<div class=\"access-path\">$value[135]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>136<\/dfn> => <var>stdClass<\/var>#371 (1)<div class=\"access-path\">$value[136]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"405\"<div class=\"access-path\">$value[136]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>137<\/dfn> => <var>stdClass<\/var>#372 (1)<div class=\"access-path\">$value[137]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"406\"<div class=\"access-path\">$value[137]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>138<\/dfn> => <var>stdClass<\/var>#373 (1)<div class=\"access-path\">$value[138]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"407\"<div class=\"access-path\">$value[138]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>139<\/dfn> => <var>stdClass<\/var>#374 (1)<div class=\"access-path\">$value[139]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"408\"<div class=\"access-path\">$value[139]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>140<\/dfn> => <var>stdClass<\/var>#375 (1)<div class=\"access-path\">$value[140]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"409\"<div class=\"access-path\">$value[140]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>141<\/dfn> => <var>stdClass<\/var>#376 (1)<div class=\"access-path\">$value[141]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"410\"<div class=\"access-path\">$value[141]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>142<\/dfn> => <var>stdClass<\/var>#377 (1)<div class=\"access-path\">$value[142]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"411\"<div class=\"access-path\">$value[142]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>143<\/dfn> => <var>stdClass<\/var>#378 (1)<div class=\"access-path\">$value[143]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"412\"<div class=\"access-path\">$value[143]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>144<\/dfn> => <var>stdClass<\/var>#379 (1)<div class=\"access-path\">$value[144]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"413\"<div class=\"access-path\">$value[144]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>145<\/dfn> => <var>stdClass<\/var>#380 (1)<div class=\"access-path\">$value[145]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"414\"<div class=\"access-path\">$value[145]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>146<\/dfn> => <var>stdClass<\/var>#381 (1)<div class=\"access-path\">$value[146]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"415\"<div class=\"access-path\">$value[146]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>147<\/dfn> => <var>stdClass<\/var>#382 (1)<div class=\"access-path\">$value[147]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"416\"<div class=\"access-path\">$value[147]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>148<\/dfn> => <var>stdClass<\/var>#383 (1)<div class=\"access-path\">$value[148]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"417\"<div class=\"access-path\">$value[148]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>149<\/dfn> => <var>stdClass<\/var>#384 (1)<div class=\"access-path\">$value[149]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"418\"<div class=\"access-path\">$value[149]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>150<\/dfn> => <var>stdClass<\/var>#385 (1)<div class=\"access-path\">$value[150]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"419\"<div class=\"access-path\">$value[150]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>151<\/dfn> => <var>stdClass<\/var>#386 (1)<div class=\"access-path\">$value[151]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"420\"<div class=\"access-path\">$value[151]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>152<\/dfn> => <var>stdClass<\/var>#387 (1)<div class=\"access-path\">$value[152]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"421\"<div class=\"access-path\">$value[152]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>153<\/dfn> => <var>stdClass<\/var>#388 (1)<div class=\"access-path\">$value[153]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"422\"<div class=\"access-path\">$value[153]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>154<\/dfn> => <var>stdClass<\/var>#389 (1)<div class=\"access-path\">$value[154]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"423\"<div class=\"access-path\">$value[154]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>155<\/dfn> => <var>stdClass<\/var>#390 (1)<div class=\"access-path\">$value[155]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"424\"<div class=\"access-path\">$value[155]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>156<\/dfn> => <var>stdClass<\/var>#391 (1)<div class=\"access-path\">$value[156]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"425\"<div class=\"access-path\">$value[156]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>157<\/dfn> => <var>stdClass<\/var>#392 (1)<div class=\"access-path\">$value[157]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"427\"<div class=\"access-path\">$value[157]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>158<\/dfn> => <var>stdClass<\/var>#393 (1)<div class=\"access-path\">$value[158]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"428\"<div class=\"access-path\">$value[158]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>159<\/dfn> => <var>stdClass<\/var>#394 (1)<div class=\"access-path\">$value[159]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"499\"<div class=\"access-path\">$value[159]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>160<\/dfn> => <var>stdClass<\/var>#395 (1)<div class=\"access-path\">$value[160]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"500\"<div class=\"access-path\">$value[160]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>161<\/dfn> => <var>stdClass<\/var>#396 (1)<div class=\"access-path\">$value[161]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"501\"<div class=\"access-path\">$value[161]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>162<\/dfn> => <var>stdClass<\/var>#397 (1)<div class=\"access-path\">$value[162]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"510\"<div class=\"access-path\">$value[162]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>163<\/dfn> => <var>stdClass<\/var>#398 (1)<div class=\"access-path\">$value[163]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"511\"<div class=\"access-path\">$value[163]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>164<\/dfn> => <var>stdClass<\/var>#399 (1)<div class=\"access-path\">$value[164]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"512\"<div class=\"access-path\">$value[164]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>165<\/dfn> => <var>stdClass<\/var>#400 (1)<div class=\"access-path\">$value[165]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"513\"<div class=\"access-path\">$value[165]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>166<\/dfn> => <var>stdClass<\/var>#401 (1)<div class=\"access-path\">$value[166]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"514\"<div class=\"access-path\">$value[166]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>167<\/dfn> => <var>stdClass<\/var>#402 (1)<div class=\"access-path\">$value[167]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"515\"<div class=\"access-path\">$value[167]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>168<\/dfn> => <var>stdClass<\/var>#403 (1)<div class=\"access-path\">$value[168]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"516\"<div class=\"access-path\">$value[168]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>169<\/dfn> => <var>stdClass<\/var>#404 (1)<div class=\"access-path\">$value[169]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"900\"<div class=\"access-path\">$value[169]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>170<\/dfn> => <var>stdClass<\/var>#405 (1)<div class=\"access-path\">$value[170]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"901\"<div class=\"access-path\">$value[170]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>171<\/dfn> => <var>stdClass<\/var>#406 (1)<div class=\"access-path\">$value[171]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"902\"<div class=\"access-path\">$value[171]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>172<\/dfn> => <var>stdClass<\/var>#407 (1)<div class=\"access-path\">$value[172]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"910\"<div class=\"access-path\">$value[172]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>173<\/dfn> => <var>stdClass<\/var>#408 (1)<div class=\"access-path\">$value[173]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"920\"<div class=\"access-path\">$value[173]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>174<\/dfn> => <var>stdClass<\/var>#409 (1)<div class=\"access-path\">$value[174]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"930\"<div class=\"access-path\">$value[174]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","dtmapkjs":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (12)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#411 (6)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"01\"<div class=\"access-path\">$value[0]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"153193226838783\"<div class=\"access-path\">$value[0]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"162324655671151\"<div class=\"access-path\">$value[0]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[0]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"964130\"<div class=\"access-path\">$value[0]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"926187\"<div class=\"access-path\">$value[0]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#412 (6)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"02\"<div class=\"access-path\">$value[1]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"119419515571313\"<div class=\"access-path\">$value[1]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"117656017422686\"<div class=\"access-path\">$value[1]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[1]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"836587\"<div class=\"access-path\">$value[1]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"849167\"<div class=\"access-path\">$value[1]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#413 (6)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"03\"<div class=\"access-path\">$value[2]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"130324656773714\"<div class=\"access-path\">$value[2]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"151908567490454\"<div class=\"access-path\">$value[2]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[2]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (7) \"1099357\"<div class=\"access-path\">$value[2]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1112279\"<div class=\"access-path\">$value[2]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#414 (6)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"04\"<div class=\"access-path\">$value[3]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"224520570036594\"<div class=\"access-path\">$value[3]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"256229865814097\"<div class=\"access-path\">$value[3]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[3]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"911748\"<div class=\"access-path\">$value[3]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"877992\"<div class=\"access-path\">$value[3]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#415 (6)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"05\"<div class=\"access-path\">$value[4]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[4]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"142317308724531\"<div class=\"access-path\">$value[4]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[4]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[4]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"912007\"<div class=\"access-path\">$value[4]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#416 (6)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"06\"<div class=\"access-path\">$value[5]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[5]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"139837261465513\"<div class=\"access-path\">$value[5]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[5]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[5]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"930351\"<div class=\"access-path\">$value[5]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#417 (6)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"07\"<div class=\"access-path\">$value[6]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[6]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"138827778078352\"<div class=\"access-path\">$value[6]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[6]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[6]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"957637\"<div class=\"access-path\">$value[6]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#418 (6)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"08\"<div class=\"access-path\">$value[7]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[7]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"137864154782725\"<div class=\"access-path\">$value[7]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[7]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[7]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"991044\"<div class=\"access-path\">$value[7]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#419 (6)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"09\"<div class=\"access-path\">$value[8]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[8]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"140807912273049\"<div class=\"access-path\">$value[8]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[8]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[8]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"976139\"<div class=\"access-path\">$value[8]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#420 (6)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"10\"<div class=\"access-path\">$value[9]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[9]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"136104769648355\"<div class=\"access-path\">$value[9]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[9]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[9]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1001434\"<div class=\"access-path\">$value[9]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#421 (6)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"11\"<div class=\"access-path\">$value[10]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[10]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"146046768940592\"<div class=\"access-path\">$value[10]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[10]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[10]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1043589\"<div class=\"access-path\">$value[10]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#422 (6)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"12\"<div class=\"access-path\">$value[11]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[11]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"197947434424383\"<div class=\"access-path\">$value[11]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[11]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[11]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1194889\"<div class=\"access-path\">$value[11]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>"}},"session":{"__ci_last_regenerate":"<pre>1715934103<\/pre>","nip":"060086978","nipp":"196805201995031003","nama":"SUPARNO","kppadm":"000","jabatan":"Direktur","kantor":"Direktorat Ekstensifikasi dan Penilaian","seksi":"<pre><\/pre>","tpkantor":"KPDJP","kwladm":"991","isLogin":"<pre>1<\/pre>","_ci_previous_url":"http:\/\/localhost\/engineN\/home\/gmapkjs"},"post":{"kwl":"SEMUA","kdmap":"SEMUA","kjs":"SEMUA","kategori":"SEMUA","tahun":"2024"},"headers":{"Content-Type":"application\/x-www-form-urlencoded","Host":"localhost","Connection":"keep-alive","Cache-Control":"max-age=0","Sec-Ch-Ua":""Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"","Sec-Ch-Ua-Mobile":"?0","Sec-Ch-Ua-Platform":""Windows"","Upgrade-Insecure-Requests":"1","Origin":"http:\/\/localhost","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36","Accept":"text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,image\/apng,*\/*;q=0.8,application\/signed-exchange;v=b3;q=0.7","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"navigate","Sec-Fetch-User":"?1","Sec-Fetch-Dest":"document","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"debug-bar-tab=ci-timeline; debug-bar-state=minimized; ci_session=84lu6ft803rsdcfgu48sbqf5iskep16s"},"cookies":{"debug-bar-tab":"ci-timeline","debug-bar-state":"minimized","ci_session":"84lu6ft803rsdcfgu48sbqf5iskep16s"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715934131.332089.json b/writable/debugbar/debugbar_1715934131.332089.json deleted file mode 100644 index 46e5908d..00000000 --- a/writable/debugbar/debugbar_1715934131.332089.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/home\/gmapkjs","method":"POST","isAJAX":false,"startTime":1715934128.199161,"totalTime":3109.5,"totalMemory":"7.765","segmentDuration":445,"segmentCount":7,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715934128.205511,"duration":0.01232600212097168},{"name":"Routing","component":"Timer","start":1715934128.217838,"duration":0.0006558895111083984},{"name":"Before Filters","component":"Timer","start":1715934128.219511,"duration":1.0013580322265625e-5},{"name":"Controller","component":"Timer","start":1715934128.219523,"duration":3.089095115661621},{"name":"Controller Constructor","component":"Timer","start":1715934128.219523,"duration":0.0009779930114746094},{"name":"After Filters","component":"Timer","start":1715934131.308634,"duration":0.0002849102020263672}]},{"title":"Database","titleSafe":"database","titleDetails":"(7 total Queries, 7 of them unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"0.28 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KANWIL"\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KODE" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:43","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:183","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKwl()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:43","qid":"b0c745d27d136569c7bf90021c763f07"},{"hover":"","class":"","duration":"0.15 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "BULAN"","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:35","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:184","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selBln()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:35","qid":"7478f9fa5f4fc8fe297c750a8bf72cf7"},{"hover":"","class":"","duration":"0.14 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KPP"\n<strong>WHERE<\/strong> "KD_KANWIL" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KD_KPP" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:52","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:185","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKpp()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:52","qid":"e364e8b03e712a208ebcd916ed0d01ea"},{"hover":"","class":"","duration":"0.45 ms","sql":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_KATEGORI KATEGORI, NM_KATEGORIPDK NAMA <strong>FROM<\/strong> REF_KLU\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_KATEGORI <strong>ASC<\/strong>","trace":[{"file":"APPPATH\\Models\\Mref.php:11","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:187","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKLU()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:11","qid":"ebd425f31a362a8ab50bd52bef4ab77d"},{"hover":"","class":"","duration":"0.23 ms","sql":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_MAP,NM_MAP <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_MAP <strong>ASC<\/strong>","trace":[{"file":"APPPATH\\Models\\Mref.php:18","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:188","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selMAP()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:18","qid":"7b1653e4d09bf3b62a48fdf38e9d79fb"},{"hover":"","class":"","duration":"0.28 ms","sql":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_SETOR KJS <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>WHERE<\/strong> TRIM(KD_SETOR) <strong>IS<\/strong> <strong>NOT<\/strong> <strong>NULL<\/strong>\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_SETOR <strong>ASC<\/strong>","trace":[{"file":"APPPATH\\Models\\Mref.php:25","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:189","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKJS()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:25","qid":"6abdef32d91a352352f4f029627916ad"},{"hover":"","class":"","duration":"3014.46 ms","sql":"<strong>SELECT<\/strong> \r\n BLNBYR,\r\n (<strong>SELECT<\/strong> <strong>SUM<\/strong>(JUMLAH)POPULASI <strong>FROM<\/strong> KEWAJIBAN_FLAGN\r\n <strong>WHERE<\/strong> KD_MAP <> 0 ) POPULASI,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN 1 ELSE 0 END) WPBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN 1 ELSE 0 END) WPBYRPAST,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN TOTAL ELSE 0 END) JMLBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN TOTAL ELSE 0 END) JMLBYRPAST\r\n <strong>FROM<\/strong> (<strong>SELECT<\/strong> NPWP,THNBYR,BLNBYR,<strong>SUM<\/strong>(TOTAL) TOTAL <strong>FROM<\/strong> DASHBOARD_BESAR_MAPKJS\r\n <strong>WHERE<\/strong> THNBYR BETWEEN '2023' <strong>AND<\/strong> '2024' \r\n <strong>GROUP<\/strong> <strong>BY<\/strong> NPWP,THNBYR,BLNBYR\r\n )\r\n <strong>GROUP<\/strong> <strong>BY<\/strong> BLNBYR <strong>ORDER<\/strong> <strong>BY<\/strong> BLNBYR <strong>ASC<\/strong>\r\n ","trace":[{"file":"APPPATH\\Models\\Mpemby.php:381","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:190","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mpemby->gmapkjs()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mpemby.php:381","qid":"b096895dbacaa1a659a58c0310b720e0"}]},"badgeValue":7,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715934128.258606,"duration":"0.029837"},{"name":"Query","component":"Database","start":1715934128.289001,"duration":"0.000276","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KANWIL"\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KODE" <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934128.289968,"duration":"0.000150","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "BULAN""},{"name":"Query","component":"Database","start":1715934128.290217,"duration":"0.000135","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KPP"\n<strong>WHERE<\/strong> "KD_KANWIL" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KD_KPP" <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934128.29037,"duration":"0.000450","query":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_KATEGORI KATEGORI, NM_KATEGORIPDK NAMA <strong>FROM<\/strong> REF_KLU\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_KATEGORI <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934128.290841,"duration":"0.000229","query":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_MAP,NM_MAP <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_MAP <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934128.291106,"duration":"0.000284","query":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_SETOR KJS <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>WHERE<\/strong> TRIM(KD_SETOR) <strong>IS<\/strong> <strong>NOT<\/strong> <strong>NULL<\/strong>\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_SETOR <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934128.291466,"duration":"3.014455","query":"<strong>SELECT<\/strong> \r\n BLNBYR,\r\n (<strong>SELECT<\/strong> <strong>SUM<\/strong>(JUMLAH)POPULASI <strong>FROM<\/strong> KEWAJIBAN_FLAGN\r\n <strong>WHERE<\/strong> KD_MAP <> 0 ) POPULASI,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN 1 ELSE 0 END) WPBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN 1 ELSE 0 END) WPBYRPAST,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN TOTAL ELSE 0 END) JMLBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN TOTAL ELSE 0 END) JMLBYRPAST\r\n <strong>FROM<\/strong> (<strong>SELECT<\/strong> NPWP,THNBYR,BLNBYR,<strong>SUM<\/strong>(TOTAL) TOTAL <strong>FROM<\/strong> DASHBOARD_BESAR_MAPKJS\r\n <strong>WHERE<\/strong> THNBYR BETWEEN '2023' <strong>AND<\/strong> '2024' \r\n <strong>GROUP<\/strong> <strong>BY<\/strong> NPWP,THNBYR,BLNBYR\r\n )\r\n <strong>GROUP<\/strong> <strong>BY<\/strong> BLNBYR <strong>ORDER<\/strong> <strong>BY<\/strong> BLNBYR <strong>ASC<\/strong>\r\n "}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[{"level":"info","msg":"Session: Class initialized using 'CodeIgniter\\Session\\Handlers\\FileHandler' driver."}]},"badgeValue":null,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":6,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"View: inc\/head.php","component":"Views","start":1715934131.30602,"duration":0.0006520748138427734},{"name":"View: inc\/navbar.php","component":"Views","start":1715934131.30681,"duration":0.00019407272338867188},{"name":"View: inc\/sidebar.php","component":"Views","start":1715934131.30707,"duration":0.0003180503845214844},{"name":"View: inc\/js.php","component":"Views","start":1715934131.307934,"duration":0.0003249645233154297},{"name":"View: ppm\/gmapkjs.php","component":"Views","start":1715934131.307454,"duration":0.0009338855743408203},{"name":"View: inc\/footer.php","component":"Views","start":1715934131.308462,"duration":0.00010514259338378906}]},{"title":"Files","titleSafe":"files","titleDetails":"( 178 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseBuilder.php","name":"BaseBuilder.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Builder.php","name":"Builder.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\HandlerInterface.php","name":"HandlerInterface.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Session\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Session\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Session\\Session.php","name":"Session.php"},{"path":"SYSTEMPATH\\Session\\SessionInterface.php","name":"SessionInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Traits\\ConditionalTrait.php","name":"ConditionalTrait.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Session.php","name":"Session.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\BaseController.php","name":"BaseController.php"},{"path":"APPPATH\\Controllers\\Home.php","name":"Home.php"},{"path":"APPPATH\\Helpers\\myhelper_helper.php","name":"myhelper_helper.php"},{"path":"APPPATH\\Models\\Mpemby.php","name":"Mpemby.php"},{"path":"APPPATH\\Models\\Mref.php","name":"Mref.php"},{"path":"APPPATH\\Views\\inc\\footer.php","name":"footer.php"},{"path":"APPPATH\\Views\\inc\\head.php","name":"head.php"},{"path":"APPPATH\\Views\\inc\\js.php","name":"js.php"},{"path":"APPPATH\\Views\\inc\\navbar.php","name":"navbar.php"},{"path":"APPPATH\\Views\\inc\\sidebar.php","name":"sidebar.php"},{"path":"APPPATH\\Views\\ppm\\gmapkjs.php","name":"gmapkjs.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerAwareTrait.php","name":"LoggerAwareTrait.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":178,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Home","method":"gmapkjs","paramCount":0,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":0,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"4.56","count":1},"dbquery":{"event":"dbquery","duration":"0.08","count":7}}},"badgeValue":8,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715934128.211737,"duration":0.004556179046630859},{"name":"Event: dbquery","component":"Events","start":1715934128.289281,"duration":2.002716064453125e-5},{"name":"Event: dbquery","component":"Events","start":1715934128.29012,"duration":1.4066696166992188e-5},{"name":"Event: dbquery","component":"Events","start":1715934128.290353,"duration":5.9604644775390625e-6},{"name":"Event: dbquery","component":"Events","start":1715934128.290821,"duration":3.814697265625e-6},{"name":"Event: dbquery","component":"Events","start":1715934128.291071,"duration":4.0531158447265625e-6},{"name":"Event: dbquery","component":"Events","start":1715934128.29139,"duration":3.0994415283203125e-6},{"name":"Event: dbquery","component":"Events","start":1715934131.305926,"duration":2.6941299438476562e-5}]}],"vars":{"varData":{"View Data":{"kwlx":"SEMUA","kppx":"SEMUA","seksix":"SEMUA","nipx":"SEMUA","tahunx":"2024","bulanx":"01","bulan2x":"05","mapx":"SEMUA","kjsx":"SEMUA","kategorix":"SEMUA","selkwl":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (34)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#105 (3)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"010\"<div class=\"access-path\">$value[0]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"010\"<div class=\"access-path\">$value[0]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (15) \"Kanwil DJP Aceh\"<div class=\"access-path\">$value[0]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#108 (3)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"020\"<div class=\"access-path\">$value[1]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"020\"<div class=\"access-path\">$value[1]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (27) \"Kanwil DJP Sumatera Utara I\"<div class=\"access-path\">$value[1]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#109 (3)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"030\"<div class=\"access-path\">$value[2]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"030\"<div class=\"access-path\">$value[2]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"Kanwil DJP Sumatera Utara II\"<div class=\"access-path\">$value[2]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#110 (3)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"040\"<div class=\"access-path\">$value[3]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"040\"<div class=\"access-path\">$value[3]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (15) \"Kanwil DJP Riau\"<div class=\"access-path\">$value[3]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#111 (3)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"050\"<div class=\"access-path\">$value[4]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"050\"<div class=\"access-path\">$value[4]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (35) \"Kanwil DJP Sumatera Barat dan Jambi\"<div class=\"access-path\">$value[4]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#112 (3)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"060\"<div class=\"access-path\">$value[5]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"060\"<div class=\"access-path\">$value[5]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (57) \"Kanwil DJP Sumatera Selatan dan Kepulauan Bangka Belitung\"<div class=\"access-path\">$value[5]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#113 (3)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"070\"<div class=\"access-path\">$value[6]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"070\"<div class=\"access-path\">$value[6]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (31) \"Kanwil DJP Bengkulu dan Lampung\"<div class=\"access-path\">$value[6]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#114 (3)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"080\"<div class=\"access-path\">$value[7]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"080\"<div class=\"access-path\">$value[7]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Pusat\"<div class=\"access-path\">$value[7]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#115 (3)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"090\"<div class=\"access-path\">$value[8]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"090\"<div class=\"access-path\">$value[8]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Barat\"<div class=\"access-path\">$value[8]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#116 (3)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"100\"<div class=\"access-path\">$value[9]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"100\"<div class=\"access-path\">$value[9]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"Kanwil DJP Jakarta Selatan I\"<div class=\"access-path\">$value[9]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#117 (3)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"110\"<div class=\"access-path\">$value[10]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"110\"<div class=\"access-path\">$value[10]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Timur\"<div class=\"access-path\">$value[10]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#118 (3)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"120\"<div class=\"access-path\">$value[11]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"120\"<div class=\"access-path\">$value[11]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Utara\"<div class=\"access-path\">$value[11]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#119 (3)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"130\"<div class=\"access-path\">$value[12]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"130\"<div class=\"access-path\">$value[12]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jakarta Khusus\"<div class=\"access-path\">$value[12]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#120 (3)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"140\"<div class=\"access-path\">$value[13]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"140\"<div class=\"access-path\">$value[13]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (17) \"Kanwil DJP Banten\"<div class=\"access-path\">$value[13]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#121 (3)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"150\"<div class=\"access-path\">$value[14]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"150\"<div class=\"access-path\">$value[14]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (23) \"Kanwil DJP Jawa Barat I\"<div class=\"access-path\">$value[14]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#122 (3)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"160\"<div class=\"access-path\">$value[15]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"160\"<div class=\"access-path\">$value[15]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jawa Barat II\"<div class=\"access-path\">$value[15]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#123 (3)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"170\"<div class=\"access-path\">$value[16]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"170\"<div class=\"access-path\">$value[16]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jawa Tengah I\"<div class=\"access-path\">$value[16]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#124 (3)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"180\"<div class=\"access-path\">$value[17]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"180\"<div class=\"access-path\">$value[17]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jawa Tengah II\"<div class=\"access-path\">$value[17]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#125 (3)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"190\"<div class=\"access-path\">$value[18]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"190\"<div class=\"access-path\">$value[18]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (37) \"Kanwil DJP Daerah Istimewa Yogyakarta\"<div class=\"access-path\">$value[18]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#126 (3)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"200\"<div class=\"access-path\">$value[19]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"200\"<div class=\"access-path\">$value[19]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (23) \"Kanwil DJP Jawa Timur I\"<div class=\"access-path\">$value[19]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#127 (3)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"210\"<div class=\"access-path\">$value[20]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"210\"<div class=\"access-path\">$value[20]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jawa Timur II\"<div class=\"access-path\">$value[20]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#128 (3)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"220\"<div class=\"access-path\">$value[21]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"220\"<div class=\"access-path\">$value[21]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jawa Timur III\"<div class=\"access-path\">$value[21]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>22<\/dfn> => <var>stdClass<\/var>#129 (3)<div class=\"access-path\">$value[22]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"230\"<div class=\"access-path\">$value[22]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"230\"<div class=\"access-path\">$value[22]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (27) \"Kanwil DJP Kalimantan Barat\"<div class=\"access-path\">$value[22]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>23<\/dfn> => <var>stdClass<\/var>#130 (3)<div class=\"access-path\">$value[23]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"240\"<div class=\"access-path\">$value[23]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"240\"<div class=\"access-path\">$value[23]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (40) \"Kanwil DJP Kalimantan Selatan dan Tengah\"<div class=\"access-path\">$value[23]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>24<\/dfn> => <var>stdClass<\/var>#131 (3)<div class=\"access-path\">$value[24]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"250\"<div class=\"access-path\">$value[24]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"250\"<div class=\"access-path\">$value[24]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (37) \"Kanwil DJP Kalimantan Timur dan Utara\"<div class=\"access-path\">$value[24]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>25<\/dfn> => <var>stdClass<\/var>#132 (3)<div class=\"access-path\">$value[25]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"260\"<div class=\"access-path\">$value[25]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"260\"<div class=\"access-path\">$value[25]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (48) \"Kanwil DJP Sulawesi Selatan, Barat, dan Tenggara\"<div class=\"access-path\">$value[25]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>26<\/dfn> => <var>stdClass<\/var>#133 (3)<div class=\"access-path\">$value[26]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"270\"<div class=\"access-path\">$value[26]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"270\"<div class=\"access-path\">$value[26]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (62) \"Kanwil DJP Sulawesi Utara, Tengah, Gorontalo, dan Maluku Utara\"<div class=\"access-path\">$value[26]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>27<\/dfn> => <var>stdClass<\/var>#134 (3)<div class=\"access-path\">$value[27]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"280\"<div class=\"access-path\">$value[27]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"280\"<div class=\"access-path\">$value[27]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (15) \"Kanwil DJP Bali\"<div class=\"access-path\">$value[27]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>28<\/dfn> => <var>stdClass<\/var>#135 (3)<div class=\"access-path\">$value[28]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"290\"<div class=\"access-path\">$value[28]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"290\"<div class=\"access-path\">$value[28]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Nusa Tenggara\"<div class=\"access-path\">$value[28]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>29<\/dfn> => <var>stdClass<\/var>#136 (3)<div class=\"access-path\">$value[29]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"300\"<div class=\"access-path\">$value[29]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"300\"<div class=\"access-path\">$value[29]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (41) \"Kanwil DJP Papua, Papua Barat, dan Maluku\"<div class=\"access-path\">$value[29]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>30<\/dfn> => <var>stdClass<\/var>#137 (3)<div class=\"access-path\">$value[30]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"310\"<div class=\"access-path\">$value[30]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"310\"<div class=\"access-path\">$value[30]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"Kanwil DJP Wajib Pajak Besar\"<div class=\"access-path\">$value[30]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>31<\/dfn> => <var>stdClass<\/var>#138 (3)<div class=\"access-path\">$value[31]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"320\"<div class=\"access-path\">$value[31]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"320\"<div class=\"access-path\">$value[31]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (29) \"Kanwil DJP Jakarta Selatan II\"<div class=\"access-path\">$value[31]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>32<\/dfn> => <var>stdClass<\/var>#139 (3)<div class=\"access-path\">$value[32]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"330\"<div class=\"access-path\">$value[32]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"330\"<div class=\"access-path\">$value[32]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jawa Barat III\"<div class=\"access-path\">$value[32]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>33<\/dfn> => <var>stdClass<\/var>#140 (3)<div class=\"access-path\">$value[33]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"340\"<div class=\"access-path\">$value[33]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"340\"<div class=\"access-path\">$value[33]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Kepulauan Riau\"<div class=\"access-path\">$value[33]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selbulan":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (12)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#107 (3)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"01\"<div class=\"access-path\">$value[0]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (7) \"JANUARI\"<div class=\"access-path\">$value[0]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"JAN\"<div class=\"access-path\">$value[0]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#143 (3)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"02\"<div class=\"access-path\">$value[1]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (8) \"FEBRUARI\"<div class=\"access-path\">$value[1]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"FEB\"<div class=\"access-path\">$value[1]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#144 (3)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"03\"<div class=\"access-path\">$value[2]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (5) \"MARET\"<div class=\"access-path\">$value[2]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"MAR\"<div class=\"access-path\">$value[2]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#145 (3)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"04\"<div class=\"access-path\">$value[3]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (5) \"APRIL\"<div class=\"access-path\">$value[3]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"APR\"<div class=\"access-path\">$value[3]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#146 (3)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"05\"<div class=\"access-path\">$value[4]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (3) \"MEI\"<div class=\"access-path\">$value[4]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"MEI\"<div class=\"access-path\">$value[4]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#147 (3)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"06\"<div class=\"access-path\">$value[5]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (4) \"JUNI\"<div class=\"access-path\">$value[5]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"JUN\"<div class=\"access-path\">$value[5]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#148 (3)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"07\"<div class=\"access-path\">$value[6]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (4) \"JULI\"<div class=\"access-path\">$value[6]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"JUL\"<div class=\"access-path\">$value[6]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#149 (3)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"08\"<div class=\"access-path\">$value[7]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (7) \"AGUSTUS\"<div class=\"access-path\">$value[7]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (5) \"AGUST\"<div class=\"access-path\">$value[7]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#150 (3)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"09\"<div class=\"access-path\">$value[8]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (9) \"SEPTEMBER\"<div class=\"access-path\">$value[8]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"SEP\"<div class=\"access-path\">$value[8]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#151 (3)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"10\"<div class=\"access-path\">$value[9]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (7) \"OKTOBER\"<div class=\"access-path\">$value[9]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"OKT\"<div class=\"access-path\">$value[9]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#152 (3)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"11\"<div class=\"access-path\">$value[10]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (8) \"NOPEMBER\"<div class=\"access-path\">$value[10]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"NOP\"<div class=\"access-path\">$value[10]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#153 (3)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"12\"<div class=\"access-path\">$value[11]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (8) \"DESEMBER\"<div class=\"access-path\">$value[11]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"DES\"<div class=\"access-path\">$value[11]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selkpp":"<div class=\"kint-rich\"><dl><dt><dfn>$value<\/dfn> <var>array<\/var> (0)<\/dt><\/dl><\/div>","selklu":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (22)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#156 (2)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"A\"<div class=\"access-path\">$value[0]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (9) \"PERTANIAN\"<div class=\"access-path\">$value[0]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#157 (2)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"B\"<div class=\"access-path\">$value[1]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (27) \"PERTAMBANGAN DAN PENGGALIAN\"<div class=\"access-path\">$value[1]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#158 (2)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"C\"<div class=\"access-path\">$value[2]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (19) \"INDUSTRI PENGOLAHAN\"<div class=\"access-path\">$value[2]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#159 (2)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"D\"<div class=\"access-path\">$value[3]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (17) \"PENGADAAN LISTRIK\"<div class=\"access-path\">$value[3]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#160 (2)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"E\"<div class=\"access-path\">$value[4]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (13) \"TREATMENT AIR\"<div class=\"access-path\">$value[4]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#161 (2)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"F\"<div class=\"access-path\">$value[5]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (10) \"KONSTRUKSI\"<div class=\"access-path\">$value[5]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#162 (2)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"G\"<div class=\"access-path\">$value[6]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"PERDAGANGAN BESAR DAN ECERAN\"<div class=\"access-path\">$value[6]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#163 (2)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"H\"<div class=\"access-path\">$value[7]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"PENGANGKUTAN DAN PERGUDANGAN\"<div class=\"access-path\">$value[7]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#164 (2)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"I\"<div class=\"access-path\">$value[8]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (47) \"PENYEDIAAN AKOMODASI DAN PENYEDIAAN MAKAN MINUM\"<div class=\"access-path\">$value[8]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#165 (2)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"J\"<div class=\"access-path\">$value[9]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"INFORMASI DAN KOMUNIKASI\"<div class=\"access-path\">$value[9]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#166 (2)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"K\"<div class=\"access-path\">$value[10]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (31) \"AKTIVITAS KEUANGAN DAN ASURANSI\"<div class=\"access-path\">$value[10]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#167 (2)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"L\"<div class=\"access-path\">$value[11]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (10) \"REAL ESTAT\"<div class=\"access-path\">$value[11]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#168 (2)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"M\"<div class=\"access-path\">$value[12]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (21) \"AKTIVITAS PROFESIONAL\"<div class=\"access-path\">$value[12]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#169 (2)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"N\"<div class=\"access-path\">$value[13]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (54) \"AKTIVITAS PENYEWAAN DAN SEWA GUNA USAHA TANPA HAK OPSI\"<div class=\"access-path\">$value[13]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#170 (2)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"O\"<div class=\"access-path\">$value[14]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"ADMINISTRASI PEMERINTAHAN\"<div class=\"access-path\">$value[14]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#171 (2)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"P\"<div class=\"access-path\">$value[15]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (10) \"PENDIDIKAN\"<div class=\"access-path\">$value[15]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#172 (2)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"Q\"<div class=\"access-path\">$value[16]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (48) \"AKTIVITAS KESEHATAN MANUSIA DAN AKTIVITAS SOSIAL\"<div class=\"access-path\">$value[16]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#173 (2)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"R\"<div class=\"access-path\">$value[17]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (8) \"KESENIAN\"<div class=\"access-path\">$value[17]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#174 (2)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"S\"<div class=\"access-path\">$value[18]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (22) \"AKTIVITAS JASA LAINNYA\"<div class=\"access-path\">$value[18]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#175 (2)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"T\"<div class=\"access-path\">$value[19]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (44) \"AKTIVITAS RUMAH TANGGA SEBAGAI PEMBERI KERJA\"<div class=\"access-path\">$value[19]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#176 (2)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"U\"<div class=\"access-path\">$value[20]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (68) \"AKTIVITAS BADAN INTERNASIONAL DAN BADAN EKSTRA INTERNASIONAL LAINNYA\"<div class=\"access-path\">$value[20]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#177 (2)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"Z\"<div class=\"access-path\">$value[21]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (14) \"PEJABAT NEGARA\"<div class=\"access-path\">$value[21]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selmap":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (55)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#179 (2)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411111\"<div class=\"access-path\">$value[0]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (15) \"PPh Minyak Bumi\"<div class=\"access-path\">$value[0]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#180 (2)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411112\"<div class=\"access-path\">$value[1]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Gas Alam\"<div class=\"access-path\">$value[1]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#181 (2)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411113\"<div class=\"access-path\">$value[2]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (23) \"PPh Minyak Bumi Lainnya\"<div class=\"access-path\">$value[2]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#182 (2)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411119\"<div class=\"access-path\">$value[3]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (17) \"PPh Migas Lainnya\"<div class=\"access-path\">$value[3]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#183 (2)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411121\"<div class=\"access-path\">$value[4]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 21\"<div class=\"access-path\">$value[4]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#184 (2)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411122\"<div class=\"access-path\">$value[5]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 22\"<div class=\"access-path\">$value[5]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#185 (2)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411123\"<div class=\"access-path\">$value[6]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"PPh Pasal 22 Impor\"<div class=\"access-path\">$value[6]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#186 (2)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411124\"<div class=\"access-path\">$value[7]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 23\"<div class=\"access-path\">$value[7]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#187 (2)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411125\"<div class=\"access-path\">$value[8]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"PPh Pasal 25\/29 OP\"<div class=\"access-path\">$value[8]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#188 (2)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411126\"<div class=\"access-path\">$value[9]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (21) \"PPh Pasal 25\/29 Badan\"<div class=\"access-path\">$value[9]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#189 (2)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411127\"<div class=\"access-path\">$value[10]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 26\"<div class=\"access-path\">$value[10]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#190 (2)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411128\"<div class=\"access-path\">$value[11]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (9) \"PPh Final\"<div class=\"access-path\">$value[11]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#191 (2)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411129\"<div class=\"access-path\">$value[12]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (21) \"PPh Non Migas Lainnya\"<div class=\"access-path\">$value[12]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#192 (2)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411131\"<div class=\"access-path\">$value[13]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"Fiskal Luar Negeri\"<div class=\"access-path\">$value[13]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#193 (2)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411141\"<div class=\"access-path\">$value[14]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 21\"<div class=\"access-path\">$value[14]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#194 (2)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411141\"<div class=\"access-path\">$value[15]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[15]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#195 (2)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411142\"<div class=\"access-path\">$value[16]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 22\"<div class=\"access-path\">$value[16]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#196 (2)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411143\"<div class=\"access-path\">$value[17]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (22) \"DTP PPH Pasal 22 Impor\"<div class=\"access-path\">$value[17]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#197 (2)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411144\"<div class=\"access-path\">$value[18]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[18]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#198 (2)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411144\"<div class=\"access-path\">$value[19]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 23\"<div class=\"access-path\">$value[19]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#199 (2)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411145\"<div class=\"access-path\">$value[20]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (22) \"DTP PPH Pasal 25\/29 OP\"<div class=\"access-path\">$value[20]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#200 (2)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411146\"<div class=\"access-path\">$value[21]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (25) \"DTP PPH Pasal 25\/29 Badan\"<div class=\"access-path\">$value[21]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>22<\/dfn> => <var>stdClass<\/var>#201 (2)<div class=\"access-path\">$value[22]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411146\"<div class=\"access-path\">$value[22]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[22]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>23<\/dfn> => <var>stdClass<\/var>#202 (2)<div class=\"access-path\">$value[23]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411147\"<div class=\"access-path\">$value[23]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 26\"<div class=\"access-path\">$value[23]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>24<\/dfn> => <var>stdClass<\/var>#203 (2)<div class=\"access-path\">$value[24]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411147\"<div class=\"access-path\">$value[24]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[24]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>25<\/dfn> => <var>stdClass<\/var>#204 (2)<div class=\"access-path\">$value[25]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411148\"<div class=\"access-path\">$value[25]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"DTP PPH Final\"<div class=\"access-path\">$value[25]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>26<\/dfn> => <var>stdClass<\/var>#205 (2)<div class=\"access-path\">$value[26]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411149\"<div class=\"access-path\">$value[26]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (17) \"DTP PPH Non Migas\"<div class=\"access-path\">$value[26]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>27<\/dfn> => <var>stdClass<\/var>#206 (2)<div class=\"access-path\">$value[27]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411211\"<div class=\"access-path\">$value[27]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"PPN Dalam Negeri\"<div class=\"access-path\">$value[27]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>28<\/dfn> => <var>stdClass<\/var>#207 (2)<div class=\"access-path\">$value[28]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411212\"<div class=\"access-path\">$value[28]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (9) \"PPN Impor\"<div class=\"access-path\">$value[28]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>29<\/dfn> => <var>stdClass<\/var>#208 (2)<div class=\"access-path\">$value[29]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411219\"<div class=\"access-path\">$value[29]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"PPN Lainnya\"<div class=\"access-path\">$value[29]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>30<\/dfn> => <var>stdClass<\/var>#209 (2)<div class=\"access-path\">$value[30]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411221\"<div class=\"access-path\">$value[30]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"PPnBM dalam Negeri\"<div class=\"access-path\">$value[30]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>31<\/dfn> => <var>stdClass<\/var>#210 (2)<div class=\"access-path\">$value[31]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411222\"<div class=\"access-path\">$value[31]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"PPnBM Impor\"<div class=\"access-path\">$value[31]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>32<\/dfn> => <var>stdClass<\/var>#211 (2)<div class=\"access-path\">$value[32]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411229\"<div class=\"access-path\">$value[32]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PPnBM Lainnya\"<div class=\"access-path\">$value[32]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>33<\/dfn> => <var>stdClass<\/var>#212 (2)<div class=\"access-path\">$value[33]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411231\"<div class=\"access-path\">$value[33]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (20) \"DTP PPN Dalam Negeri\"<div class=\"access-path\">$value[33]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>34<\/dfn> => <var>stdClass<\/var>#213 (2)<div class=\"access-path\">$value[34]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411232\"<div class=\"access-path\">$value[34]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"DTP PPN Impor\"<div class=\"access-path\">$value[34]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>35<\/dfn> => <var>stdClass<\/var>#214 (2)<div class=\"access-path\">$value[35]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411239\"<div class=\"access-path\">$value[35]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (15) \"DTP PPN Lainnya\"<div class=\"access-path\">$value[35]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>36<\/dfn> => <var>stdClass<\/var>#215 (2)<div class=\"access-path\">$value[36]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411241\"<div class=\"access-path\">$value[36]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (29) \"DTP PPN Dalam Negeri Covid-19\"<div class=\"access-path\">$value[36]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>37<\/dfn> => <var>stdClass<\/var>#216 (2)<div class=\"access-path\">$value[37]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411242\"<div class=\"access-path\">$value[37]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (31) \"DTP PPNBM Dalam Negeri Covid-19\"<div class=\"access-path\">$value[37]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>38<\/dfn> => <var>stdClass<\/var>#217 (2)<div class=\"access-path\">$value[38]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411311\"<div class=\"access-path\">$value[38]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PBB Pedesaan\"<div class=\"access-path\">$value[38]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>39<\/dfn> => <var>stdClass<\/var>#218 (2)<div class=\"access-path\">$value[39]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411312\"<div class=\"access-path\">$value[39]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PBB Perkotaan\"<div class=\"access-path\">$value[39]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>40<\/dfn> => <var>stdClass<\/var>#219 (2)<div class=\"access-path\">$value[40]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411313\"<div class=\"access-path\">$value[40]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (14) \"PBB Perkebunan\"<div class=\"access-path\">$value[40]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>41<\/dfn> => <var>stdClass<\/var>#220 (2)<div class=\"access-path\">$value[41]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411314\"<div class=\"access-path\">$value[41]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PBB Kehutanan\"<div class=\"access-path\">$value[41]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>42<\/dfn> => <var>stdClass<\/var>#221 (2)<div class=\"access-path\">$value[42]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411315\"<div class=\"access-path\">$value[42]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (43) \"PBB Pertambangan untuk Mineral dan Batubara\"<div class=\"access-path\">$value[42]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>43<\/dfn> => <var>stdClass<\/var>#222 (2)<div class=\"access-path\">$value[43]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411316\"<div class=\"access-path\">$value[43]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (42) \"PBB Pertambangan untuk Minyak dan Gas Bumi\"<div class=\"access-path\">$value[43]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>44<\/dfn> => <var>stdClass<\/var>#223 (2)<div class=\"access-path\">$value[44]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411317\"<div class=\"access-path\">$value[44]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (42) \"Pertambangan untuk pertambangan panas bumi\"<div class=\"access-path\">$value[44]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>45<\/dfn> => <var>stdClass<\/var>#224 (2)<div class=\"access-path\">$value[45]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411319\"<div class=\"access-path\">$value[45]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"PBB Lainnya\"<div class=\"access-path\">$value[45]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>46<\/dfn> => <var>stdClass<\/var>#225 (2)<div class=\"access-path\">$value[46]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411411\"<div class=\"access-path\">$value[46]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (5) \"BPHTB\"<div class=\"access-path\">$value[46]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>47<\/dfn> => <var>stdClass<\/var>#226 (2)<div class=\"access-path\">$value[47]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411611\"<div class=\"access-path\">$value[47]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"Bea Meterai\"<div class=\"access-path\">$value[47]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>48<\/dfn> => <var>stdClass<\/var>#227 (2)<div class=\"access-path\">$value[48]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411612\"<div class=\"access-path\">$value[48]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (23) \"Penjualan Benda Materai\"<div class=\"access-path\">$value[48]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>49<\/dfn> => <var>stdClass<\/var>#228 (2)<div class=\"access-path\">$value[49]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411613\"<div class=\"access-path\">$value[49]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PPn Batu Bara\"<div class=\"access-path\">$value[49]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>50<\/dfn> => <var>stdClass<\/var>#229 (2)<div class=\"access-path\">$value[50]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411619\"<div class=\"access-path\">$value[50]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (4) \"PTLL\"<div class=\"access-path\">$value[50]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>51<\/dfn> => <var>stdClass<\/var>#230 (2)<div class=\"access-path\">$value[51]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411621\"<div class=\"access-path\">$value[51]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (25) \"Bunga\/Denda Penagihan PPh\"<div class=\"access-path\">$value[51]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>52<\/dfn> => <var>stdClass<\/var>#231 (2)<div class=\"access-path\">$value[52]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411622\"<div class=\"access-path\">$value[52]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (25) \"Bunga\/Denda Penagihan PPN\"<div class=\"access-path\">$value[52]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>53<\/dfn> => <var>stdClass<\/var>#232 (2)<div class=\"access-path\">$value[53]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411623\"<div class=\"access-path\">$value[53]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (27) \"Bunga\/Denda Penagihan PPnBM\"<div class=\"access-path\">$value[53]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>54<\/dfn> => <var>stdClass<\/var>#233 (2)<div class=\"access-path\">$value[54]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411624\"<div class=\"access-path\">$value[54]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (26) \"Bunga\/Denda Penagihan PTLL\"<div class=\"access-path\">$value[54]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selkjs":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (175)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#235 (1)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"000\"<div class=\"access-path\">$value[0]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#236 (1)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"100\"<div class=\"access-path\">$value[1]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#237 (1)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"101\"<div class=\"access-path\">$value[2]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#238 (1)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"102\"<div class=\"access-path\">$value[3]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#239 (1)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"103\"<div class=\"access-path\">$value[4]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#240 (1)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"104\"<div class=\"access-path\">$value[5]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#241 (1)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"105\"<div class=\"access-path\">$value[6]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#242 (1)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"106\"<div class=\"access-path\">$value[7]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#243 (1)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"107\"<div class=\"access-path\">$value[8]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#244 (1)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"108\"<div class=\"access-path\">$value[9]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#245 (1)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"111\"<div class=\"access-path\">$value[10]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#246 (1)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"121\"<div class=\"access-path\">$value[11]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#247 (1)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"122\"<div class=\"access-path\">$value[12]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#248 (1)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"199\"<div class=\"access-path\">$value[13]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#249 (1)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"200\"<div class=\"access-path\">$value[14]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#250 (1)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"201\"<div class=\"access-path\">$value[15]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#251 (1)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"202\"<div class=\"access-path\">$value[16]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#252 (1)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"203\"<div class=\"access-path\">$value[17]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#253 (1)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"204\"<div class=\"access-path\">$value[18]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#254 (1)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"205\"<div class=\"access-path\">$value[19]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#255 (1)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"206\"<div class=\"access-path\">$value[20]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#256 (1)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"207\"<div class=\"access-path\">$value[21]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>22<\/dfn> => <var>stdClass<\/var>#257 (1)<div class=\"access-path\">$value[22]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"208\"<div class=\"access-path\">$value[22]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>23<\/dfn> => <var>stdClass<\/var>#258 (1)<div class=\"access-path\">$value[23]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"209\"<div class=\"access-path\">$value[23]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>24<\/dfn> => <var>stdClass<\/var>#259 (1)<div class=\"access-path\">$value[24]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"210\"<div class=\"access-path\">$value[24]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>25<\/dfn> => <var>stdClass<\/var>#260 (1)<div class=\"access-path\">$value[25]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"211\"<div class=\"access-path\">$value[25]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>26<\/dfn> => <var>stdClass<\/var>#261 (1)<div class=\"access-path\">$value[26]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"212\"<div class=\"access-path\">$value[26]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>27<\/dfn> => <var>stdClass<\/var>#262 (1)<div class=\"access-path\">$value[27]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"213\"<div class=\"access-path\">$value[27]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>28<\/dfn> => <var>stdClass<\/var>#263 (1)<div class=\"access-path\">$value[28]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"214\"<div class=\"access-path\">$value[28]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>29<\/dfn> => <var>stdClass<\/var>#264 (1)<div class=\"access-path\">$value[29]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"215\"<div class=\"access-path\">$value[29]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>30<\/dfn> => <var>stdClass<\/var>#265 (1)<div class=\"access-path\">$value[30]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"216\"<div class=\"access-path\">$value[30]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>31<\/dfn> => <var>stdClass<\/var>#266 (1)<div class=\"access-path\">$value[31]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"217\"<div class=\"access-path\">$value[31]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>32<\/dfn> => <var>stdClass<\/var>#267 (1)<div class=\"access-path\">$value[32]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"218\"<div class=\"access-path\">$value[32]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>33<\/dfn> => <var>stdClass<\/var>#268 (1)<div class=\"access-path\">$value[33]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"219\"<div class=\"access-path\">$value[33]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>34<\/dfn> => <var>stdClass<\/var>#269 (1)<div class=\"access-path\">$value[34]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"220\"<div class=\"access-path\">$value[34]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>35<\/dfn> => <var>stdClass<\/var>#270 (1)<div class=\"access-path\">$value[35]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"221\"<div class=\"access-path\">$value[35]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>36<\/dfn> => <var>stdClass<\/var>#271 (1)<div class=\"access-path\">$value[36]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"222\"<div class=\"access-path\">$value[36]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>37<\/dfn> => <var>stdClass<\/var>#272 (1)<div class=\"access-path\">$value[37]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"223\"<div class=\"access-path\">$value[37]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>38<\/dfn> => <var>stdClass<\/var>#273 (1)<div class=\"access-path\">$value[38]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"224\"<div class=\"access-path\">$value[38]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>39<\/dfn> => <var>stdClass<\/var>#274 (1)<div class=\"access-path\">$value[39]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"225\"<div class=\"access-path\">$value[39]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>40<\/dfn> => <var>stdClass<\/var>#275 (1)<div class=\"access-path\">$value[40]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"226\"<div class=\"access-path\">$value[40]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>41<\/dfn> => <var>stdClass<\/var>#276 (1)<div class=\"access-path\">$value[41]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"227\"<div class=\"access-path\">$value[41]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>42<\/dfn> => <var>stdClass<\/var>#277 (1)<div class=\"access-path\">$value[42]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"228\"<div class=\"access-path\">$value[42]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>43<\/dfn> => <var>stdClass<\/var>#278 (1)<div class=\"access-path\">$value[43]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"229\"<div class=\"access-path\">$value[43]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>44<\/dfn> => <var>stdClass<\/var>#279 (1)<div class=\"access-path\">$value[44]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"230\"<div class=\"access-path\">$value[44]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>45<\/dfn> => <var>stdClass<\/var>#280 (1)<div class=\"access-path\">$value[45]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"231\"<div class=\"access-path\">$value[45]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>46<\/dfn> => <var>stdClass<\/var>#281 (1)<div class=\"access-path\">$value[46]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"232\"<div class=\"access-path\">$value[46]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>47<\/dfn> => <var>stdClass<\/var>#282 (1)<div class=\"access-path\">$value[47]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"233\"<div class=\"access-path\">$value[47]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>48<\/dfn> => <var>stdClass<\/var>#283 (1)<div class=\"access-path\">$value[48]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"234\"<div class=\"access-path\">$value[48]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>49<\/dfn> => <var>stdClass<\/var>#284 (1)<div class=\"access-path\">$value[49]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"235\"<div class=\"access-path\">$value[49]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>50<\/dfn> => <var>stdClass<\/var>#285 (1)<div class=\"access-path\">$value[50]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"236\"<div class=\"access-path\">$value[50]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>51<\/dfn> => <var>stdClass<\/var>#286 (1)<div class=\"access-path\">$value[51]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"237\"<div class=\"access-path\">$value[51]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>52<\/dfn> => <var>stdClass<\/var>#287 (1)<div class=\"access-path\">$value[52]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"238\"<div class=\"access-path\">$value[52]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>53<\/dfn> => <var>stdClass<\/var>#288 (1)<div class=\"access-path\">$value[53]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"239\"<div class=\"access-path\">$value[53]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>54<\/dfn> => <var>stdClass<\/var>#289 (1)<div class=\"access-path\">$value[54]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"240\"<div class=\"access-path\">$value[54]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>55<\/dfn> => <var>stdClass<\/var>#290 (1)<div class=\"access-path\">$value[55]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"241\"<div class=\"access-path\">$value[55]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>56<\/dfn> => <var>stdClass<\/var>#291 (1)<div class=\"access-path\">$value[56]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"242\"<div class=\"access-path\">$value[56]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>57<\/dfn> => <var>stdClass<\/var>#292 (1)<div class=\"access-path\">$value[57]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"243\"<div class=\"access-path\">$value[57]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>58<\/dfn> => <var>stdClass<\/var>#293 (1)<div class=\"access-path\">$value[58]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"244\"<div class=\"access-path\">$value[58]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>59<\/dfn> => <var>stdClass<\/var>#294 (1)<div class=\"access-path\">$value[59]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"245\"<div class=\"access-path\">$value[59]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>60<\/dfn> => <var>stdClass<\/var>#295 (1)<div class=\"access-path\">$value[60]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"246\"<div class=\"access-path\">$value[60]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>61<\/dfn> => <var>stdClass<\/var>#296 (1)<div class=\"access-path\">$value[61]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"247\"<div class=\"access-path\">$value[61]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>62<\/dfn> => <var>stdClass<\/var>#297 (1)<div class=\"access-path\">$value[62]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"248\"<div class=\"access-path\">$value[62]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>63<\/dfn> => <var>stdClass<\/var>#298 (1)<div class=\"access-path\">$value[63]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"249\"<div class=\"access-path\">$value[63]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>64<\/dfn> => <var>stdClass<\/var>#299 (1)<div class=\"access-path\">$value[64]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"250\"<div class=\"access-path\">$value[64]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>65<\/dfn> => <var>stdClass<\/var>#300 (1)<div class=\"access-path\">$value[65]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"251\"<div class=\"access-path\">$value[65]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>66<\/dfn> => <var>stdClass<\/var>#301 (1)<div class=\"access-path\">$value[66]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"252\"<div class=\"access-path\">$value[66]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>67<\/dfn> => <var>stdClass<\/var>#302 (1)<div class=\"access-path\">$value[67]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"253\"<div class=\"access-path\">$value[67]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>68<\/dfn> => <var>stdClass<\/var>#303 (1)<div class=\"access-path\">$value[68]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"254\"<div class=\"access-path\">$value[68]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>69<\/dfn> => <var>stdClass<\/var>#304 (1)<div class=\"access-path\">$value[69]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"255\"<div class=\"access-path\">$value[69]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>70<\/dfn> => <var>stdClass<\/var>#305 (1)<div class=\"access-path\">$value[70]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"256\"<div class=\"access-path\">$value[70]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>71<\/dfn> => <var>stdClass<\/var>#306 (1)<div class=\"access-path\">$value[71]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"257\"<div class=\"access-path\">$value[71]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>72<\/dfn> => <var>stdClass<\/var>#307 (1)<div class=\"access-path\">$value[72]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"258\"<div class=\"access-path\">$value[72]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>73<\/dfn> => <var>stdClass<\/var>#308 (1)<div class=\"access-path\">$value[73]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"259\"<div class=\"access-path\">$value[73]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>74<\/dfn> => <var>stdClass<\/var>#309 (1)<div class=\"access-path\">$value[74]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"260\"<div class=\"access-path\">$value[74]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>75<\/dfn> => <var>stdClass<\/var>#310 (1)<div class=\"access-path\">$value[75]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"261\"<div class=\"access-path\">$value[75]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>76<\/dfn> => <var>stdClass<\/var>#311 (1)<div class=\"access-path\">$value[76]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"262\"<div class=\"access-path\">$value[76]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>77<\/dfn> => <var>stdClass<\/var>#312 (1)<div class=\"access-path\">$value[77]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"263\"<div class=\"access-path\">$value[77]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>78<\/dfn> => <var>stdClass<\/var>#313 (1)<div class=\"access-path\">$value[78]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"264\"<div class=\"access-path\">$value[78]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>79<\/dfn> => <var>stdClass<\/var>#314 (1)<div class=\"access-path\">$value[79]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"265\"<div class=\"access-path\">$value[79]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>80<\/dfn> => <var>stdClass<\/var>#315 (1)<div class=\"access-path\">$value[80]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"266\"<div class=\"access-path\">$value[80]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>81<\/dfn> => <var>stdClass<\/var>#316 (1)<div class=\"access-path\">$value[81]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"267\"<div class=\"access-path\">$value[81]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>82<\/dfn> => <var>stdClass<\/var>#317 (1)<div class=\"access-path\">$value[82]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"268\"<div class=\"access-path\">$value[82]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>83<\/dfn> => <var>stdClass<\/var>#318 (1)<div class=\"access-path\">$value[83]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"269\"<div class=\"access-path\">$value[83]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>84<\/dfn> => <var>stdClass<\/var>#319 (1)<div class=\"access-path\">$value[84]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"270\"<div class=\"access-path\">$value[84]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>85<\/dfn> => <var>stdClass<\/var>#320 (1)<div class=\"access-path\">$value[85]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"271\"<div class=\"access-path\">$value[85]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>86<\/dfn> => <var>stdClass<\/var>#321 (1)<div class=\"access-path\">$value[86]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"272\"<div class=\"access-path\">$value[86]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>87<\/dfn> => <var>stdClass<\/var>#322 (1)<div class=\"access-path\">$value[87]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"273\"<div class=\"access-path\">$value[87]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>88<\/dfn> => <var>stdClass<\/var>#323 (1)<div class=\"access-path\">$value[88]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"274\"<div class=\"access-path\">$value[88]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>89<\/dfn> => <var>stdClass<\/var>#324 (1)<div class=\"access-path\">$value[89]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"275\"<div class=\"access-path\">$value[89]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>90<\/dfn> => <var>stdClass<\/var>#325 (1)<div class=\"access-path\">$value[90]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"276\"<div class=\"access-path\">$value[90]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>91<\/dfn> => <var>stdClass<\/var>#326 (1)<div class=\"access-path\">$value[91]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"277\"<div class=\"access-path\">$value[91]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>92<\/dfn> => <var>stdClass<\/var>#327 (1)<div class=\"access-path\">$value[92]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"278\"<div class=\"access-path\">$value[92]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>93<\/dfn> => <var>stdClass<\/var>#328 (1)<div class=\"access-path\">$value[93]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"279\"<div class=\"access-path\">$value[93]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>94<\/dfn> => <var>stdClass<\/var>#329 (1)<div class=\"access-path\">$value[94]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"280\"<div class=\"access-path\">$value[94]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>95<\/dfn> => <var>stdClass<\/var>#330 (1)<div class=\"access-path\">$value[95]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"281\"<div class=\"access-path\">$value[95]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>96<\/dfn> => <var>stdClass<\/var>#331 (1)<div class=\"access-path\">$value[96]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"282\"<div class=\"access-path\">$value[96]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>97<\/dfn> => <var>stdClass<\/var>#332 (1)<div class=\"access-path\">$value[97]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"283\"<div class=\"access-path\">$value[97]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>98<\/dfn> => <var>stdClass<\/var>#333 (1)<div class=\"access-path\">$value[98]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"284\"<div class=\"access-path\">$value[98]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>99<\/dfn> => <var>stdClass<\/var>#334 (1)<div class=\"access-path\">$value[99]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"285\"<div class=\"access-path\">$value[99]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>100<\/dfn> => <var>stdClass<\/var>#335 (1)<div class=\"access-path\">$value[100]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"286\"<div class=\"access-path\">$value[100]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>101<\/dfn> => <var>stdClass<\/var>#336 (1)<div class=\"access-path\">$value[101]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"287\"<div class=\"access-path\">$value[101]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>102<\/dfn> => <var>stdClass<\/var>#337 (1)<div class=\"access-path\">$value[102]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"288\"<div class=\"access-path\">$value[102]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>103<\/dfn> => <var>stdClass<\/var>#338 (1)<div class=\"access-path\">$value[103]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"289\"<div class=\"access-path\">$value[103]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>104<\/dfn> => <var>stdClass<\/var>#339 (1)<div class=\"access-path\">$value[104]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"290\"<div class=\"access-path\">$value[104]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>105<\/dfn> => <var>stdClass<\/var>#340 (1)<div class=\"access-path\">$value[105]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"291\"<div class=\"access-path\">$value[105]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>106<\/dfn> => <var>stdClass<\/var>#341 (1)<div class=\"access-path\">$value[106]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"292\"<div class=\"access-path\">$value[106]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>107<\/dfn> => <var>stdClass<\/var>#342 (1)<div class=\"access-path\">$value[107]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"293\"<div class=\"access-path\">$value[107]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>108<\/dfn> => <var>stdClass<\/var>#343 (1)<div class=\"access-path\">$value[108]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"294\"<div class=\"access-path\">$value[108]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>109<\/dfn> => <var>stdClass<\/var>#344 (1)<div class=\"access-path\">$value[109]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"295\"<div class=\"access-path\">$value[109]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>110<\/dfn> => <var>stdClass<\/var>#345 (1)<div class=\"access-path\">$value[110]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"296\"<div class=\"access-path\">$value[110]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>111<\/dfn> => <var>stdClass<\/var>#346 (1)<div class=\"access-path\">$value[111]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"297\"<div class=\"access-path\">$value[111]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>112<\/dfn> => <var>stdClass<\/var>#347 (1)<div class=\"access-path\">$value[112]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"298\"<div class=\"access-path\">$value[112]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>113<\/dfn> => <var>stdClass<\/var>#348 (1)<div class=\"access-path\">$value[113]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"299\"<div class=\"access-path\">$value[113]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>114<\/dfn> => <var>stdClass<\/var>#349 (1)<div class=\"access-path\">$value[114]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"300\"<div class=\"access-path\">$value[114]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>115<\/dfn> => <var>stdClass<\/var>#350 (1)<div class=\"access-path\">$value[115]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"301\"<div class=\"access-path\">$value[115]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>116<\/dfn> => <var>stdClass<\/var>#351 (1)<div class=\"access-path\">$value[116]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"302\"<div class=\"access-path\">$value[116]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>117<\/dfn> => <var>stdClass<\/var>#352 (1)<div class=\"access-path\">$value[117]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"310\"<div class=\"access-path\">$value[117]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>118<\/dfn> => <var>stdClass<\/var>#353 (1)<div class=\"access-path\">$value[118]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"311\"<div class=\"access-path\">$value[118]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>119<\/dfn> => <var>stdClass<\/var>#354 (1)<div class=\"access-path\">$value[119]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"312\"<div class=\"access-path\">$value[119]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>120<\/dfn> => <var>stdClass<\/var>#355 (1)<div class=\"access-path\">$value[120]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"313\"<div class=\"access-path\">$value[120]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>121<\/dfn> => <var>stdClass<\/var>#356 (1)<div class=\"access-path\">$value[121]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"314\"<div class=\"access-path\">$value[121]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>122<\/dfn> => <var>stdClass<\/var>#357 (1)<div class=\"access-path\">$value[122]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"317\"<div class=\"access-path\">$value[122]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>123<\/dfn> => <var>stdClass<\/var>#358 (1)<div class=\"access-path\">$value[123]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"318\"<div class=\"access-path\">$value[123]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>124<\/dfn> => <var>stdClass<\/var>#359 (1)<div class=\"access-path\">$value[124]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"319\"<div class=\"access-path\">$value[124]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>125<\/dfn> => <var>stdClass<\/var>#360 (1)<div class=\"access-path\">$value[125]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"320\"<div class=\"access-path\">$value[125]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>126<\/dfn> => <var>stdClass<\/var>#361 (1)<div class=\"access-path\">$value[126]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"321\"<div class=\"access-path\">$value[126]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>127<\/dfn> => <var>stdClass<\/var>#362 (1)<div class=\"access-path\">$value[127]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"322\"<div class=\"access-path\">$value[127]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>128<\/dfn> => <var>stdClass<\/var>#363 (1)<div class=\"access-path\">$value[128]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"323\"<div class=\"access-path\">$value[128]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>129<\/dfn> => <var>stdClass<\/var>#364 (1)<div class=\"access-path\">$value[129]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"324\"<div class=\"access-path\">$value[129]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>130<\/dfn> => <var>stdClass<\/var>#365 (1)<div class=\"access-path\">$value[130]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"390\"<div class=\"access-path\">$value[130]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>131<\/dfn> => <var>stdClass<\/var>#366 (1)<div class=\"access-path\">$value[131]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"400\"<div class=\"access-path\">$value[131]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>132<\/dfn> => <var>stdClass<\/var>#367 (1)<div class=\"access-path\">$value[132]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"401\"<div class=\"access-path\">$value[132]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>133<\/dfn> => <var>stdClass<\/var>#368 (1)<div class=\"access-path\">$value[133]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"402\"<div class=\"access-path\">$value[133]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>134<\/dfn> => <var>stdClass<\/var>#369 (1)<div class=\"access-path\">$value[134]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"403\"<div class=\"access-path\">$value[134]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>135<\/dfn> => <var>stdClass<\/var>#370 (1)<div class=\"access-path\">$value[135]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"404\"<div class=\"access-path\">$value[135]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>136<\/dfn> => <var>stdClass<\/var>#371 (1)<div class=\"access-path\">$value[136]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"405\"<div class=\"access-path\">$value[136]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>137<\/dfn> => <var>stdClass<\/var>#372 (1)<div class=\"access-path\">$value[137]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"406\"<div class=\"access-path\">$value[137]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>138<\/dfn> => <var>stdClass<\/var>#373 (1)<div class=\"access-path\">$value[138]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"407\"<div class=\"access-path\">$value[138]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>139<\/dfn> => <var>stdClass<\/var>#374 (1)<div class=\"access-path\">$value[139]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"408\"<div class=\"access-path\">$value[139]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>140<\/dfn> => <var>stdClass<\/var>#375 (1)<div class=\"access-path\">$value[140]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"409\"<div class=\"access-path\">$value[140]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>141<\/dfn> => <var>stdClass<\/var>#376 (1)<div class=\"access-path\">$value[141]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"410\"<div class=\"access-path\">$value[141]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>142<\/dfn> => <var>stdClass<\/var>#377 (1)<div class=\"access-path\">$value[142]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"411\"<div class=\"access-path\">$value[142]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>143<\/dfn> => <var>stdClass<\/var>#378 (1)<div class=\"access-path\">$value[143]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"412\"<div class=\"access-path\">$value[143]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>144<\/dfn> => <var>stdClass<\/var>#379 (1)<div class=\"access-path\">$value[144]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"413\"<div class=\"access-path\">$value[144]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>145<\/dfn> => <var>stdClass<\/var>#380 (1)<div class=\"access-path\">$value[145]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"414\"<div class=\"access-path\">$value[145]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>146<\/dfn> => <var>stdClass<\/var>#381 (1)<div class=\"access-path\">$value[146]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"415\"<div class=\"access-path\">$value[146]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>147<\/dfn> => <var>stdClass<\/var>#382 (1)<div class=\"access-path\">$value[147]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"416\"<div class=\"access-path\">$value[147]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>148<\/dfn> => <var>stdClass<\/var>#383 (1)<div class=\"access-path\">$value[148]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"417\"<div class=\"access-path\">$value[148]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>149<\/dfn> => <var>stdClass<\/var>#384 (1)<div class=\"access-path\">$value[149]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"418\"<div class=\"access-path\">$value[149]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>150<\/dfn> => <var>stdClass<\/var>#385 (1)<div class=\"access-path\">$value[150]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"419\"<div class=\"access-path\">$value[150]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>151<\/dfn> => <var>stdClass<\/var>#386 (1)<div class=\"access-path\">$value[151]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"420\"<div class=\"access-path\">$value[151]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>152<\/dfn> => <var>stdClass<\/var>#387 (1)<div class=\"access-path\">$value[152]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"421\"<div class=\"access-path\">$value[152]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>153<\/dfn> => <var>stdClass<\/var>#388 (1)<div class=\"access-path\">$value[153]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"422\"<div class=\"access-path\">$value[153]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>154<\/dfn> => <var>stdClass<\/var>#389 (1)<div class=\"access-path\">$value[154]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"423\"<div class=\"access-path\">$value[154]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>155<\/dfn> => <var>stdClass<\/var>#390 (1)<div class=\"access-path\">$value[155]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"424\"<div class=\"access-path\">$value[155]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>156<\/dfn> => <var>stdClass<\/var>#391 (1)<div class=\"access-path\">$value[156]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"425\"<div class=\"access-path\">$value[156]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>157<\/dfn> => <var>stdClass<\/var>#392 (1)<div class=\"access-path\">$value[157]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"427\"<div class=\"access-path\">$value[157]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>158<\/dfn> => <var>stdClass<\/var>#393 (1)<div class=\"access-path\">$value[158]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"428\"<div class=\"access-path\">$value[158]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>159<\/dfn> => <var>stdClass<\/var>#394 (1)<div class=\"access-path\">$value[159]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"499\"<div class=\"access-path\">$value[159]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>160<\/dfn> => <var>stdClass<\/var>#395 (1)<div class=\"access-path\">$value[160]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"500\"<div class=\"access-path\">$value[160]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>161<\/dfn> => <var>stdClass<\/var>#396 (1)<div class=\"access-path\">$value[161]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"501\"<div class=\"access-path\">$value[161]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>162<\/dfn> => <var>stdClass<\/var>#397 (1)<div class=\"access-path\">$value[162]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"510\"<div class=\"access-path\">$value[162]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>163<\/dfn> => <var>stdClass<\/var>#398 (1)<div class=\"access-path\">$value[163]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"511\"<div class=\"access-path\">$value[163]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>164<\/dfn> => <var>stdClass<\/var>#399 (1)<div class=\"access-path\">$value[164]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"512\"<div class=\"access-path\">$value[164]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>165<\/dfn> => <var>stdClass<\/var>#400 (1)<div class=\"access-path\">$value[165]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"513\"<div class=\"access-path\">$value[165]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>166<\/dfn> => <var>stdClass<\/var>#401 (1)<div class=\"access-path\">$value[166]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"514\"<div class=\"access-path\">$value[166]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>167<\/dfn> => <var>stdClass<\/var>#402 (1)<div class=\"access-path\">$value[167]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"515\"<div class=\"access-path\">$value[167]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>168<\/dfn> => <var>stdClass<\/var>#403 (1)<div class=\"access-path\">$value[168]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"516\"<div class=\"access-path\">$value[168]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>169<\/dfn> => <var>stdClass<\/var>#404 (1)<div class=\"access-path\">$value[169]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"900\"<div class=\"access-path\">$value[169]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>170<\/dfn> => <var>stdClass<\/var>#405 (1)<div class=\"access-path\">$value[170]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"901\"<div class=\"access-path\">$value[170]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>171<\/dfn> => <var>stdClass<\/var>#406 (1)<div class=\"access-path\">$value[171]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"902\"<div class=\"access-path\">$value[171]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>172<\/dfn> => <var>stdClass<\/var>#407 (1)<div class=\"access-path\">$value[172]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"910\"<div class=\"access-path\">$value[172]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>173<\/dfn> => <var>stdClass<\/var>#408 (1)<div class=\"access-path\">$value[173]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"920\"<div class=\"access-path\">$value[173]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>174<\/dfn> => <var>stdClass<\/var>#409 (1)<div class=\"access-path\">$value[174]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"930\"<div class=\"access-path\">$value[174]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","dtmapkjs":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (12)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#411 (6)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"01\"<div class=\"access-path\">$value[0]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"153193226838783\"<div class=\"access-path\">$value[0]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"162324655671151\"<div class=\"access-path\">$value[0]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[0]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"964130\"<div class=\"access-path\">$value[0]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"926187\"<div class=\"access-path\">$value[0]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#412 (6)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"02\"<div class=\"access-path\">$value[1]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"119419515571313\"<div class=\"access-path\">$value[1]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"117656017422686\"<div class=\"access-path\">$value[1]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[1]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"836587\"<div class=\"access-path\">$value[1]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"849167\"<div class=\"access-path\">$value[1]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#413 (6)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"03\"<div class=\"access-path\">$value[2]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"130324656773714\"<div class=\"access-path\">$value[2]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"151908567490454\"<div class=\"access-path\">$value[2]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[2]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (7) \"1099357\"<div class=\"access-path\">$value[2]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1112279\"<div class=\"access-path\">$value[2]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#414 (6)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"04\"<div class=\"access-path\">$value[3]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"224520570036594\"<div class=\"access-path\">$value[3]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"256229865814097\"<div class=\"access-path\">$value[3]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[3]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"911748\"<div class=\"access-path\">$value[3]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"877992\"<div class=\"access-path\">$value[3]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#415 (6)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"05\"<div class=\"access-path\">$value[4]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[4]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"142317308724531\"<div class=\"access-path\">$value[4]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[4]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[4]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"912007\"<div class=\"access-path\">$value[4]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#416 (6)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"06\"<div class=\"access-path\">$value[5]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[5]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"139837261465513\"<div class=\"access-path\">$value[5]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[5]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[5]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"930351\"<div class=\"access-path\">$value[5]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#417 (6)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"07\"<div class=\"access-path\">$value[6]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[6]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"138827778078352\"<div class=\"access-path\">$value[6]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[6]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[6]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"957637\"<div class=\"access-path\">$value[6]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#418 (6)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"08\"<div class=\"access-path\">$value[7]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[7]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"137864154782725\"<div class=\"access-path\">$value[7]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[7]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[7]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"991044\"<div class=\"access-path\">$value[7]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#419 (6)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"09\"<div class=\"access-path\">$value[8]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[8]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"140807912273049\"<div class=\"access-path\">$value[8]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[8]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[8]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"976139\"<div class=\"access-path\">$value[8]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#420 (6)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"10\"<div class=\"access-path\">$value[9]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[9]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"136104769648355\"<div class=\"access-path\">$value[9]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[9]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[9]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1001434\"<div class=\"access-path\">$value[9]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#421 (6)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"11\"<div class=\"access-path\">$value[10]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[10]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"146046768940592\"<div class=\"access-path\">$value[10]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[10]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[10]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1043589\"<div class=\"access-path\">$value[10]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#422 (6)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"12\"<div class=\"access-path\">$value[11]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[11]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"197947434424383\"<div class=\"access-path\">$value[11]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[11]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[11]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1194889\"<div class=\"access-path\">$value[11]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>"}},"session":{"__ci_last_regenerate":"<pre>1715934103<\/pre>","nip":"060086978","nipp":"196805201995031003","nama":"SUPARNO","kppadm":"000","jabatan":"Direktur","kantor":"Direktorat Ekstensifikasi dan Penilaian","seksi":"<pre><\/pre>","tpkantor":"KPDJP","kwladm":"991","isLogin":"<pre>1<\/pre>","_ci_previous_url":"http:\/\/localhost\/engineN\/home\/gmapkjs"},"post":{"kwl":"SEMUA","kdmap":"SEMUA","kjs":"SEMUA","kategori":"SEMUA","tahun":"2024"},"headers":{"Content-Type":"application\/x-www-form-urlencoded","Host":"localhost","Connection":"keep-alive","Cache-Control":"max-age=0","Sec-Ch-Ua":""Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"","Sec-Ch-Ua-Mobile":"?0","Sec-Ch-Ua-Platform":""Windows"","Upgrade-Insecure-Requests":"1","Origin":"http:\/\/localhost","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36","Accept":"text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,image\/apng,*\/*;q=0.8,application\/signed-exchange;v=b3;q=0.7","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"navigate","Sec-Fetch-User":"?1","Sec-Fetch-Dest":"document","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"debug-bar-tab=ci-timeline; debug-bar-state=minimized; ci_session=84lu6ft803rsdcfgu48sbqf5iskep16s"},"cookies":{"debug-bar-tab":"ci-timeline","debug-bar-state":"minimized","ci_session":"84lu6ft803rsdcfgu48sbqf5iskep16s"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715934134.453052.json b/writable/debugbar/debugbar_1715934134.453052.json deleted file mode 100644 index cd1cdbe6..00000000 --- a/writable/debugbar/debugbar_1715934134.453052.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/home\/gmapkjs","method":"POST","isAJAX":false,"startTime":1715934128.888666,"totalTime":5540.8,"totalMemory":"7.765","segmentDuration":795,"segmentCount":7,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715934128.894608,"duration":0.017705917358398438},{"name":"Routing","component":"Timer","start":1715934128.912318,"duration":0.0031499862670898438},{"name":"Before Filters","component":"Timer","start":1715934128.920469,"duration":4.100799560546875e-5},{"name":"Controller","component":"Timer","start":1715934128.920515,"duration":5.508898973464966},{"name":"Controller Constructor","component":"Timer","start":1715934128.920516,"duration":0.005460023880004883},{"name":"After Filters","component":"Timer","start":1715934134.429431,"duration":0.00032806396484375}]},{"title":"Database","titleSafe":"database","titleDetails":"(7 total Queries, 7 of them unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"0.43 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KANWIL"\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KODE" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:43","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:183","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKwl()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:43","qid":"67607b614d11434a4c65c40fb7ffb165"},{"hover":"","class":"","duration":"0.24 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "BULAN"","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:35","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:184","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selBln()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:35","qid":"4beeec2a302fcc4b3e06d4fdd051b886"},{"hover":"","class":"","duration":"0.2 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KPP"\n<strong>WHERE<\/strong> "KD_KANWIL" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KD_KPP" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:52","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:185","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKpp()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:52","qid":"fe76dbd28859eaa837426110b3dfb956"},{"hover":"","class":"","duration":"0.56 ms","sql":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_KATEGORI KATEGORI, NM_KATEGORIPDK NAMA <strong>FROM<\/strong> REF_KLU\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_KATEGORI <strong>ASC<\/strong>","trace":[{"file":"APPPATH\\Models\\Mref.php:11","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:187","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKLU()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:11","qid":"6c2089f10975bbc381789189fa5866e5"},{"hover":"","class":"","duration":"0.35 ms","sql":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_MAP,NM_MAP <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_MAP <strong>ASC<\/strong>","trace":[{"file":"APPPATH\\Models\\Mref.php:18","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:188","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selMAP()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:18","qid":"1c00e3e04d30b80f9d1c18bdc9181544"},{"hover":"","class":"","duration":"0.47 ms","sql":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_SETOR KJS <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>WHERE<\/strong> TRIM(KD_SETOR) <strong>IS<\/strong> <strong>NOT<\/strong> <strong>NULL<\/strong>\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_SETOR <strong>ASC<\/strong>","trace":[{"file":"APPPATH\\Models\\Mref.php:25","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:189","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKJS()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:25","qid":"a2cc834b20744d2abe6ff016708c7e3a"},{"hover":"","class":"","duration":"3011.77 ms","sql":"<strong>SELECT<\/strong> \r\n BLNBYR,\r\n (<strong>SELECT<\/strong> <strong>SUM<\/strong>(JUMLAH)POPULASI <strong>FROM<\/strong> KEWAJIBAN_FLAGN\r\n <strong>WHERE<\/strong> KD_MAP <> 0 ) POPULASI,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN 1 ELSE 0 END) WPBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN 1 ELSE 0 END) WPBYRPAST,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN TOTAL ELSE 0 END) JMLBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN TOTAL ELSE 0 END) JMLBYRPAST\r\n <strong>FROM<\/strong> (<strong>SELECT<\/strong> NPWP,THNBYR,BLNBYR,<strong>SUM<\/strong>(TOTAL) TOTAL <strong>FROM<\/strong> DASHBOARD_BESAR_MAPKJS\r\n <strong>WHERE<\/strong> THNBYR BETWEEN '2023' <strong>AND<\/strong> '2024' \r\n <strong>GROUP<\/strong> <strong>BY<\/strong> NPWP,THNBYR,BLNBYR\r\n )\r\n <strong>GROUP<\/strong> <strong>BY<\/strong> BLNBYR <strong>ORDER<\/strong> <strong>BY<\/strong> BLNBYR <strong>ASC<\/strong>\r\n ","trace":[{"file":"APPPATH\\Models\\Mpemby.php:381","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:190","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mpemby->gmapkjs()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mpemby.php:381","qid":"bf978b0e1e1886229de3a272ad33c026"}]},"badgeValue":7,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715934131.371593,"duration":"0.040230"},{"name":"Query","component":"Database","start":1715934131.412298,"duration":"0.000430","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KANWIL"\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KODE" <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934131.413453,"duration":"0.000241","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "BULAN""},{"name":"Query","component":"Database","start":1715934131.413784,"duration":"0.000196","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KPP"\n<strong>WHERE<\/strong> "KD_KANWIL" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KD_KPP" <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934131.414011,"duration":"0.000558","query":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_KATEGORI KATEGORI, NM_KATEGORIPDK NAMA <strong>FROM<\/strong> REF_KLU\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_KATEGORI <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934131.414604,"duration":"0.000353","query":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_MAP,NM_MAP <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_MAP <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934131.415007,"duration":"0.000466","query":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_SETOR KJS <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>WHERE<\/strong> TRIM(KD_SETOR) <strong>IS<\/strong> <strong>NOT<\/strong> <strong>NULL<\/strong>\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_SETOR <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934131.415569,"duration":"3.011768","query":"<strong>SELECT<\/strong> \r\n BLNBYR,\r\n (<strong>SELECT<\/strong> <strong>SUM<\/strong>(JUMLAH)POPULASI <strong>FROM<\/strong> KEWAJIBAN_FLAGN\r\n <strong>WHERE<\/strong> KD_MAP <> 0 ) POPULASI,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN 1 ELSE 0 END) WPBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN 1 ELSE 0 END) WPBYRPAST,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN TOTAL ELSE 0 END) JMLBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN TOTAL ELSE 0 END) JMLBYRPAST\r\n <strong>FROM<\/strong> (<strong>SELECT<\/strong> NPWP,THNBYR,BLNBYR,<strong>SUM<\/strong>(TOTAL) TOTAL <strong>FROM<\/strong> DASHBOARD_BESAR_MAPKJS\r\n <strong>WHERE<\/strong> THNBYR BETWEEN '2023' <strong>AND<\/strong> '2024' \r\n <strong>GROUP<\/strong> <strong>BY<\/strong> NPWP,THNBYR,BLNBYR\r\n )\r\n <strong>GROUP<\/strong> <strong>BY<\/strong> BLNBYR <strong>ORDER<\/strong> <strong>BY<\/strong> BLNBYR <strong>ASC<\/strong>\r\n "}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[{"level":"info","msg":"Session: Class initialized using 'CodeIgniter\\Session\\Handlers\\FileHandler' driver."}]},"badgeValue":null,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":6,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"View: inc\/head.php","component":"Views","start":1715934134.427425,"duration":0.0004811286926269531},{"name":"View: inc\/navbar.php","component":"Views","start":1715934134.428001,"duration":0.0001201629638671875},{"name":"View: inc\/sidebar.php","component":"Views","start":1715934134.428163,"duration":0.00021195411682128906},{"name":"View: inc\/js.php","component":"Views","start":1715934134.428782,"duration":0.0002789497375488281},{"name":"View: ppm\/gmapkjs.php","component":"Views","start":1715934134.428419,"duration":0.0007507801055908203},{"name":"View: inc\/footer.php","component":"Views","start":1715934134.429233,"duration":0.00012302398681640625}]},{"title":"Files","titleSafe":"files","titleDetails":"( 178 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseBuilder.php","name":"BaseBuilder.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Builder.php","name":"Builder.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\HandlerInterface.php","name":"HandlerInterface.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Session\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Session\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Session\\Session.php","name":"Session.php"},{"path":"SYSTEMPATH\\Session\\SessionInterface.php","name":"SessionInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Traits\\ConditionalTrait.php","name":"ConditionalTrait.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Session.php","name":"Session.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\BaseController.php","name":"BaseController.php"},{"path":"APPPATH\\Controllers\\Home.php","name":"Home.php"},{"path":"APPPATH\\Helpers\\myhelper_helper.php","name":"myhelper_helper.php"},{"path":"APPPATH\\Models\\Mpemby.php","name":"Mpemby.php"},{"path":"APPPATH\\Models\\Mref.php","name":"Mref.php"},{"path":"APPPATH\\Views\\inc\\footer.php","name":"footer.php"},{"path":"APPPATH\\Views\\inc\\head.php","name":"head.php"},{"path":"APPPATH\\Views\\inc\\js.php","name":"js.php"},{"path":"APPPATH\\Views\\inc\\navbar.php","name":"navbar.php"},{"path":"APPPATH\\Views\\inc\\sidebar.php","name":"sidebar.php"},{"path":"APPPATH\\Views\\ppm\\gmapkjs.php","name":"gmapkjs.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerAwareTrait.php","name":"LoggerAwareTrait.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":178,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Home","method":"gmapkjs","paramCount":0,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":0,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"4.18","count":1},"dbquery":{"event":"dbquery","duration":"0.10","count":7}}},"badgeValue":8,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715934128.900681,"duration":0.0041849613189697266},{"name":"Event: dbquery","component":"Events","start":1715934131.412733,"duration":2.384185791015625e-5},{"name":"Event: dbquery","component":"Events","start":1715934131.413697,"duration":1.1920928955078125e-5},{"name":"Event: dbquery","component":"Events","start":1715934131.413982,"duration":1.0967254638671875e-5},{"name":"Event: dbquery","component":"Events","start":1715934131.41457,"duration":1.0013580322265625e-5},{"name":"Event: dbquery","component":"Events","start":1715934131.414959,"duration":9.059906005859375e-6},{"name":"Event: dbquery","component":"Events","start":1715934131.415475,"duration":1.0013580322265625e-5},{"name":"Event: dbquery","component":"Events","start":1715934134.427342,"duration":2.5987625122070312e-5}]}],"vars":{"varData":{"View Data":{"kwlx":"SEMUA","kppx":"SEMUA","seksix":"SEMUA","nipx":"SEMUA","tahunx":"2024","bulanx":"01","bulan2x":"05","mapx":"SEMUA","kjsx":"SEMUA","kategorix":"SEMUA","selkwl":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (34)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#105 (3)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"010\"<div class=\"access-path\">$value[0]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"010\"<div class=\"access-path\">$value[0]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (15) \"Kanwil DJP Aceh\"<div class=\"access-path\">$value[0]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#108 (3)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"020\"<div class=\"access-path\">$value[1]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"020\"<div class=\"access-path\">$value[1]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (27) \"Kanwil DJP Sumatera Utara I\"<div class=\"access-path\">$value[1]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#109 (3)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"030\"<div class=\"access-path\">$value[2]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"030\"<div class=\"access-path\">$value[2]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"Kanwil DJP Sumatera Utara II\"<div class=\"access-path\">$value[2]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#110 (3)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"040\"<div class=\"access-path\">$value[3]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"040\"<div class=\"access-path\">$value[3]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (15) \"Kanwil DJP Riau\"<div class=\"access-path\">$value[3]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#111 (3)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"050\"<div class=\"access-path\">$value[4]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"050\"<div class=\"access-path\">$value[4]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (35) \"Kanwil DJP Sumatera Barat dan Jambi\"<div class=\"access-path\">$value[4]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#112 (3)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"060\"<div class=\"access-path\">$value[5]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"060\"<div class=\"access-path\">$value[5]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (57) \"Kanwil DJP Sumatera Selatan dan Kepulauan Bangka Belitung\"<div class=\"access-path\">$value[5]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#113 (3)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"070\"<div class=\"access-path\">$value[6]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"070\"<div class=\"access-path\">$value[6]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (31) \"Kanwil DJP Bengkulu dan Lampung\"<div class=\"access-path\">$value[6]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#114 (3)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"080\"<div class=\"access-path\">$value[7]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"080\"<div class=\"access-path\">$value[7]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Pusat\"<div class=\"access-path\">$value[7]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#115 (3)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"090\"<div class=\"access-path\">$value[8]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"090\"<div class=\"access-path\">$value[8]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Barat\"<div class=\"access-path\">$value[8]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#116 (3)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"100\"<div class=\"access-path\">$value[9]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"100\"<div class=\"access-path\">$value[9]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"Kanwil DJP Jakarta Selatan I\"<div class=\"access-path\">$value[9]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#117 (3)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"110\"<div class=\"access-path\">$value[10]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"110\"<div class=\"access-path\">$value[10]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Timur\"<div class=\"access-path\">$value[10]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#118 (3)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"120\"<div class=\"access-path\">$value[11]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"120\"<div class=\"access-path\">$value[11]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Utara\"<div class=\"access-path\">$value[11]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#119 (3)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"130\"<div class=\"access-path\">$value[12]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"130\"<div class=\"access-path\">$value[12]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jakarta Khusus\"<div class=\"access-path\">$value[12]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#120 (3)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"140\"<div class=\"access-path\">$value[13]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"140\"<div class=\"access-path\">$value[13]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (17) \"Kanwil DJP Banten\"<div class=\"access-path\">$value[13]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#121 (3)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"150\"<div class=\"access-path\">$value[14]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"150\"<div class=\"access-path\">$value[14]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (23) \"Kanwil DJP Jawa Barat I\"<div class=\"access-path\">$value[14]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#122 (3)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"160\"<div class=\"access-path\">$value[15]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"160\"<div class=\"access-path\">$value[15]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jawa Barat II\"<div class=\"access-path\">$value[15]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#123 (3)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"170\"<div class=\"access-path\">$value[16]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"170\"<div class=\"access-path\">$value[16]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jawa Tengah I\"<div class=\"access-path\">$value[16]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#124 (3)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"180\"<div class=\"access-path\">$value[17]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"180\"<div class=\"access-path\">$value[17]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jawa Tengah II\"<div class=\"access-path\">$value[17]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#125 (3)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"190\"<div class=\"access-path\">$value[18]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"190\"<div class=\"access-path\">$value[18]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (37) \"Kanwil DJP Daerah Istimewa Yogyakarta\"<div class=\"access-path\">$value[18]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#126 (3)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"200\"<div class=\"access-path\">$value[19]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"200\"<div class=\"access-path\">$value[19]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (23) \"Kanwil DJP Jawa Timur I\"<div class=\"access-path\">$value[19]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#127 (3)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"210\"<div class=\"access-path\">$value[20]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"210\"<div class=\"access-path\">$value[20]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jawa Timur II\"<div class=\"access-path\">$value[20]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#128 (3)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"220\"<div class=\"access-path\">$value[21]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"220\"<div class=\"access-path\">$value[21]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jawa Timur III\"<div class=\"access-path\">$value[21]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>22<\/dfn> => <var>stdClass<\/var>#129 (3)<div class=\"access-path\">$value[22]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"230\"<div class=\"access-path\">$value[22]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"230\"<div class=\"access-path\">$value[22]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (27) \"Kanwil DJP Kalimantan Barat\"<div class=\"access-path\">$value[22]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>23<\/dfn> => <var>stdClass<\/var>#130 (3)<div class=\"access-path\">$value[23]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"240\"<div class=\"access-path\">$value[23]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"240\"<div class=\"access-path\">$value[23]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (40) \"Kanwil DJP Kalimantan Selatan dan Tengah\"<div class=\"access-path\">$value[23]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>24<\/dfn> => <var>stdClass<\/var>#131 (3)<div class=\"access-path\">$value[24]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"250\"<div class=\"access-path\">$value[24]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"250\"<div class=\"access-path\">$value[24]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (37) \"Kanwil DJP Kalimantan Timur dan Utara\"<div class=\"access-path\">$value[24]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>25<\/dfn> => <var>stdClass<\/var>#132 (3)<div class=\"access-path\">$value[25]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"260\"<div class=\"access-path\">$value[25]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"260\"<div class=\"access-path\">$value[25]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (48) \"Kanwil DJP Sulawesi Selatan, Barat, dan Tenggara\"<div class=\"access-path\">$value[25]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>26<\/dfn> => <var>stdClass<\/var>#133 (3)<div class=\"access-path\">$value[26]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"270\"<div class=\"access-path\">$value[26]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"270\"<div class=\"access-path\">$value[26]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (62) \"Kanwil DJP Sulawesi Utara, Tengah, Gorontalo, dan Maluku Utara\"<div class=\"access-path\">$value[26]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>27<\/dfn> => <var>stdClass<\/var>#134 (3)<div class=\"access-path\">$value[27]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"280\"<div class=\"access-path\">$value[27]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"280\"<div class=\"access-path\">$value[27]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (15) \"Kanwil DJP Bali\"<div class=\"access-path\">$value[27]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>28<\/dfn> => <var>stdClass<\/var>#135 (3)<div class=\"access-path\">$value[28]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"290\"<div class=\"access-path\">$value[28]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"290\"<div class=\"access-path\">$value[28]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Nusa Tenggara\"<div class=\"access-path\">$value[28]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>29<\/dfn> => <var>stdClass<\/var>#136 (3)<div class=\"access-path\">$value[29]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"300\"<div class=\"access-path\">$value[29]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"300\"<div class=\"access-path\">$value[29]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (41) \"Kanwil DJP Papua, Papua Barat, dan Maluku\"<div class=\"access-path\">$value[29]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>30<\/dfn> => <var>stdClass<\/var>#137 (3)<div class=\"access-path\">$value[30]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"310\"<div class=\"access-path\">$value[30]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"310\"<div class=\"access-path\">$value[30]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"Kanwil DJP Wajib Pajak Besar\"<div class=\"access-path\">$value[30]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>31<\/dfn> => <var>stdClass<\/var>#138 (3)<div class=\"access-path\">$value[31]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"320\"<div class=\"access-path\">$value[31]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"320\"<div class=\"access-path\">$value[31]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (29) \"Kanwil DJP Jakarta Selatan II\"<div class=\"access-path\">$value[31]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>32<\/dfn> => <var>stdClass<\/var>#139 (3)<div class=\"access-path\">$value[32]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"330\"<div class=\"access-path\">$value[32]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"330\"<div class=\"access-path\">$value[32]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jawa Barat III\"<div class=\"access-path\">$value[32]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>33<\/dfn> => <var>stdClass<\/var>#140 (3)<div class=\"access-path\">$value[33]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"340\"<div class=\"access-path\">$value[33]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"340\"<div class=\"access-path\">$value[33]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Kepulauan Riau\"<div class=\"access-path\">$value[33]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selbulan":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (12)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#107 (3)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"01\"<div class=\"access-path\">$value[0]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (7) \"JANUARI\"<div class=\"access-path\">$value[0]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"JAN\"<div class=\"access-path\">$value[0]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#143 (3)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"02\"<div class=\"access-path\">$value[1]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (8) \"FEBRUARI\"<div class=\"access-path\">$value[1]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"FEB\"<div class=\"access-path\">$value[1]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#144 (3)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"03\"<div class=\"access-path\">$value[2]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (5) \"MARET\"<div class=\"access-path\">$value[2]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"MAR\"<div class=\"access-path\">$value[2]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#145 (3)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"04\"<div class=\"access-path\">$value[3]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (5) \"APRIL\"<div class=\"access-path\">$value[3]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"APR\"<div class=\"access-path\">$value[3]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#146 (3)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"05\"<div class=\"access-path\">$value[4]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (3) \"MEI\"<div class=\"access-path\">$value[4]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"MEI\"<div class=\"access-path\">$value[4]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#147 (3)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"06\"<div class=\"access-path\">$value[5]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (4) \"JUNI\"<div class=\"access-path\">$value[5]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"JUN\"<div class=\"access-path\">$value[5]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#148 (3)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"07\"<div class=\"access-path\">$value[6]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (4) \"JULI\"<div class=\"access-path\">$value[6]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"JUL\"<div class=\"access-path\">$value[6]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#149 (3)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"08\"<div class=\"access-path\">$value[7]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (7) \"AGUSTUS\"<div class=\"access-path\">$value[7]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (5) \"AGUST\"<div class=\"access-path\">$value[7]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#150 (3)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"09\"<div class=\"access-path\">$value[8]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (9) \"SEPTEMBER\"<div class=\"access-path\">$value[8]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"SEP\"<div class=\"access-path\">$value[8]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#151 (3)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"10\"<div class=\"access-path\">$value[9]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (7) \"OKTOBER\"<div class=\"access-path\">$value[9]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"OKT\"<div class=\"access-path\">$value[9]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#152 (3)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"11\"<div class=\"access-path\">$value[10]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (8) \"NOPEMBER\"<div class=\"access-path\">$value[10]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"NOP\"<div class=\"access-path\">$value[10]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#153 (3)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"12\"<div class=\"access-path\">$value[11]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (8) \"DESEMBER\"<div class=\"access-path\">$value[11]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"DES\"<div class=\"access-path\">$value[11]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selkpp":"<div class=\"kint-rich\"><dl><dt><dfn>$value<\/dfn> <var>array<\/var> (0)<\/dt><\/dl><\/div>","selklu":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (22)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#156 (2)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"A\"<div class=\"access-path\">$value[0]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (9) \"PERTANIAN\"<div class=\"access-path\">$value[0]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#157 (2)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"B\"<div class=\"access-path\">$value[1]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (27) \"PERTAMBANGAN DAN PENGGALIAN\"<div class=\"access-path\">$value[1]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#158 (2)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"C\"<div class=\"access-path\">$value[2]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (19) \"INDUSTRI PENGOLAHAN\"<div class=\"access-path\">$value[2]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#159 (2)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"D\"<div class=\"access-path\">$value[3]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (17) \"PENGADAAN LISTRIK\"<div class=\"access-path\">$value[3]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#160 (2)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"E\"<div class=\"access-path\">$value[4]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (13) \"TREATMENT AIR\"<div class=\"access-path\">$value[4]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#161 (2)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"F\"<div class=\"access-path\">$value[5]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (10) \"KONSTRUKSI\"<div class=\"access-path\">$value[5]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#162 (2)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"G\"<div class=\"access-path\">$value[6]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"PERDAGANGAN BESAR DAN ECERAN\"<div class=\"access-path\">$value[6]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#163 (2)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"H\"<div class=\"access-path\">$value[7]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"PENGANGKUTAN DAN PERGUDANGAN\"<div class=\"access-path\">$value[7]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#164 (2)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"I\"<div class=\"access-path\">$value[8]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (47) \"PENYEDIAAN AKOMODASI DAN PENYEDIAAN MAKAN MINUM\"<div class=\"access-path\">$value[8]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#165 (2)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"J\"<div class=\"access-path\">$value[9]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"INFORMASI DAN KOMUNIKASI\"<div class=\"access-path\">$value[9]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#166 (2)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"K\"<div class=\"access-path\">$value[10]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (31) \"AKTIVITAS KEUANGAN DAN ASURANSI\"<div class=\"access-path\">$value[10]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#167 (2)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"L\"<div class=\"access-path\">$value[11]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (10) \"REAL ESTAT\"<div class=\"access-path\">$value[11]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#168 (2)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"M\"<div class=\"access-path\">$value[12]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (21) \"AKTIVITAS PROFESIONAL\"<div class=\"access-path\">$value[12]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#169 (2)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"N\"<div class=\"access-path\">$value[13]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (54) \"AKTIVITAS PENYEWAAN DAN SEWA GUNA USAHA TANPA HAK OPSI\"<div class=\"access-path\">$value[13]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#170 (2)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"O\"<div class=\"access-path\">$value[14]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"ADMINISTRASI PEMERINTAHAN\"<div class=\"access-path\">$value[14]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#171 (2)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"P\"<div class=\"access-path\">$value[15]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (10) \"PENDIDIKAN\"<div class=\"access-path\">$value[15]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#172 (2)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"Q\"<div class=\"access-path\">$value[16]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (48) \"AKTIVITAS KESEHATAN MANUSIA DAN AKTIVITAS SOSIAL\"<div class=\"access-path\">$value[16]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#173 (2)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"R\"<div class=\"access-path\">$value[17]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (8) \"KESENIAN\"<div class=\"access-path\">$value[17]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#174 (2)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"S\"<div class=\"access-path\">$value[18]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (22) \"AKTIVITAS JASA LAINNYA\"<div class=\"access-path\">$value[18]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#175 (2)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"T\"<div class=\"access-path\">$value[19]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (44) \"AKTIVITAS RUMAH TANGGA SEBAGAI PEMBERI KERJA\"<div class=\"access-path\">$value[19]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#176 (2)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"U\"<div class=\"access-path\">$value[20]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (68) \"AKTIVITAS BADAN INTERNASIONAL DAN BADAN EKSTRA INTERNASIONAL LAINNYA\"<div class=\"access-path\">$value[20]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#177 (2)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"Z\"<div class=\"access-path\">$value[21]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (14) \"PEJABAT NEGARA\"<div class=\"access-path\">$value[21]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selmap":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (55)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#179 (2)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411111\"<div class=\"access-path\">$value[0]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (15) \"PPh Minyak Bumi\"<div class=\"access-path\">$value[0]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#180 (2)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411112\"<div class=\"access-path\">$value[1]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Gas Alam\"<div class=\"access-path\">$value[1]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#181 (2)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411113\"<div class=\"access-path\">$value[2]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (23) \"PPh Minyak Bumi Lainnya\"<div class=\"access-path\">$value[2]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#182 (2)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411119\"<div class=\"access-path\">$value[3]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (17) \"PPh Migas Lainnya\"<div class=\"access-path\">$value[3]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#183 (2)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411121\"<div class=\"access-path\">$value[4]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 21\"<div class=\"access-path\">$value[4]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#184 (2)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411122\"<div class=\"access-path\">$value[5]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 22\"<div class=\"access-path\">$value[5]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#185 (2)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411123\"<div class=\"access-path\">$value[6]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"PPh Pasal 22 Impor\"<div class=\"access-path\">$value[6]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#186 (2)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411124\"<div class=\"access-path\">$value[7]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 23\"<div class=\"access-path\">$value[7]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#187 (2)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411125\"<div class=\"access-path\">$value[8]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"PPh Pasal 25\/29 OP\"<div class=\"access-path\">$value[8]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#188 (2)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411126\"<div class=\"access-path\">$value[9]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (21) \"PPh Pasal 25\/29 Badan\"<div class=\"access-path\">$value[9]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#189 (2)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411127\"<div class=\"access-path\">$value[10]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 26\"<div class=\"access-path\">$value[10]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#190 (2)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411128\"<div class=\"access-path\">$value[11]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (9) \"PPh Final\"<div class=\"access-path\">$value[11]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#191 (2)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411129\"<div class=\"access-path\">$value[12]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (21) \"PPh Non Migas Lainnya\"<div class=\"access-path\">$value[12]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#192 (2)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411131\"<div class=\"access-path\">$value[13]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"Fiskal Luar Negeri\"<div class=\"access-path\">$value[13]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#193 (2)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411141\"<div class=\"access-path\">$value[14]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 21\"<div class=\"access-path\">$value[14]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#194 (2)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411141\"<div class=\"access-path\">$value[15]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[15]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#195 (2)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411142\"<div class=\"access-path\">$value[16]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 22\"<div class=\"access-path\">$value[16]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#196 (2)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411143\"<div class=\"access-path\">$value[17]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (22) \"DTP PPH Pasal 22 Impor\"<div class=\"access-path\">$value[17]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#197 (2)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411144\"<div class=\"access-path\">$value[18]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[18]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#198 (2)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411144\"<div class=\"access-path\">$value[19]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 23\"<div class=\"access-path\">$value[19]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#199 (2)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411145\"<div class=\"access-path\">$value[20]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (22) \"DTP PPH Pasal 25\/29 OP\"<div class=\"access-path\">$value[20]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#200 (2)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411146\"<div class=\"access-path\">$value[21]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (25) \"DTP PPH Pasal 25\/29 Badan\"<div class=\"access-path\">$value[21]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>22<\/dfn> => <var>stdClass<\/var>#201 (2)<div class=\"access-path\">$value[22]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411146\"<div class=\"access-path\">$value[22]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[22]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>23<\/dfn> => <var>stdClass<\/var>#202 (2)<div class=\"access-path\">$value[23]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411147\"<div class=\"access-path\">$value[23]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 26\"<div class=\"access-path\">$value[23]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>24<\/dfn> => <var>stdClass<\/var>#203 (2)<div class=\"access-path\">$value[24]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411147\"<div class=\"access-path\">$value[24]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[24]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>25<\/dfn> => <var>stdClass<\/var>#204 (2)<div class=\"access-path\">$value[25]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411148\"<div class=\"access-path\">$value[25]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"DTP PPH Final\"<div class=\"access-path\">$value[25]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>26<\/dfn> => <var>stdClass<\/var>#205 (2)<div class=\"access-path\">$value[26]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411149\"<div class=\"access-path\">$value[26]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (17) \"DTP PPH Non Migas\"<div class=\"access-path\">$value[26]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>27<\/dfn> => <var>stdClass<\/var>#206 (2)<div class=\"access-path\">$value[27]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411211\"<div class=\"access-path\">$value[27]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"PPN Dalam Negeri\"<div class=\"access-path\">$value[27]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>28<\/dfn> => <var>stdClass<\/var>#207 (2)<div class=\"access-path\">$value[28]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411212\"<div class=\"access-path\">$value[28]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (9) \"PPN Impor\"<div class=\"access-path\">$value[28]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>29<\/dfn> => <var>stdClass<\/var>#208 (2)<div class=\"access-path\">$value[29]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411219\"<div class=\"access-path\">$value[29]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"PPN Lainnya\"<div class=\"access-path\">$value[29]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>30<\/dfn> => <var>stdClass<\/var>#209 (2)<div class=\"access-path\">$value[30]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411221\"<div class=\"access-path\">$value[30]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"PPnBM dalam Negeri\"<div class=\"access-path\">$value[30]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>31<\/dfn> => <var>stdClass<\/var>#210 (2)<div class=\"access-path\">$value[31]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411222\"<div class=\"access-path\">$value[31]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"PPnBM Impor\"<div class=\"access-path\">$value[31]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>32<\/dfn> => <var>stdClass<\/var>#211 (2)<div class=\"access-path\">$value[32]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411229\"<div class=\"access-path\">$value[32]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PPnBM Lainnya\"<div class=\"access-path\">$value[32]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>33<\/dfn> => <var>stdClass<\/var>#212 (2)<div class=\"access-path\">$value[33]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411231\"<div class=\"access-path\">$value[33]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (20) \"DTP PPN Dalam Negeri\"<div class=\"access-path\">$value[33]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>34<\/dfn> => <var>stdClass<\/var>#213 (2)<div class=\"access-path\">$value[34]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411232\"<div class=\"access-path\">$value[34]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"DTP PPN Impor\"<div class=\"access-path\">$value[34]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>35<\/dfn> => <var>stdClass<\/var>#214 (2)<div class=\"access-path\">$value[35]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411239\"<div class=\"access-path\">$value[35]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (15) \"DTP PPN Lainnya\"<div class=\"access-path\">$value[35]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>36<\/dfn> => <var>stdClass<\/var>#215 (2)<div class=\"access-path\">$value[36]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411241\"<div class=\"access-path\">$value[36]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (29) \"DTP PPN Dalam Negeri Covid-19\"<div class=\"access-path\">$value[36]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>37<\/dfn> => <var>stdClass<\/var>#216 (2)<div class=\"access-path\">$value[37]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411242\"<div class=\"access-path\">$value[37]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (31) \"DTP PPNBM Dalam Negeri Covid-19\"<div class=\"access-path\">$value[37]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>38<\/dfn> => <var>stdClass<\/var>#217 (2)<div class=\"access-path\">$value[38]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411311\"<div class=\"access-path\">$value[38]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PBB Pedesaan\"<div class=\"access-path\">$value[38]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>39<\/dfn> => <var>stdClass<\/var>#218 (2)<div class=\"access-path\">$value[39]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411312\"<div class=\"access-path\">$value[39]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PBB Perkotaan\"<div class=\"access-path\">$value[39]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>40<\/dfn> => <var>stdClass<\/var>#219 (2)<div class=\"access-path\">$value[40]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411313\"<div class=\"access-path\">$value[40]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (14) \"PBB Perkebunan\"<div class=\"access-path\">$value[40]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>41<\/dfn> => <var>stdClass<\/var>#220 (2)<div class=\"access-path\">$value[41]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411314\"<div class=\"access-path\">$value[41]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PBB Kehutanan\"<div class=\"access-path\">$value[41]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>42<\/dfn> => <var>stdClass<\/var>#221 (2)<div class=\"access-path\">$value[42]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411315\"<div class=\"access-path\">$value[42]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (43) \"PBB Pertambangan untuk Mineral dan Batubara\"<div class=\"access-path\">$value[42]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>43<\/dfn> => <var>stdClass<\/var>#222 (2)<div class=\"access-path\">$value[43]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411316\"<div class=\"access-path\">$value[43]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (42) \"PBB Pertambangan untuk Minyak dan Gas Bumi\"<div class=\"access-path\">$value[43]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>44<\/dfn> => <var>stdClass<\/var>#223 (2)<div class=\"access-path\">$value[44]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411317\"<div class=\"access-path\">$value[44]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (42) \"Pertambangan untuk pertambangan panas bumi\"<div class=\"access-path\">$value[44]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>45<\/dfn> => <var>stdClass<\/var>#224 (2)<div class=\"access-path\">$value[45]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411319\"<div class=\"access-path\">$value[45]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"PBB Lainnya\"<div class=\"access-path\">$value[45]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>46<\/dfn> => <var>stdClass<\/var>#225 (2)<div class=\"access-path\">$value[46]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411411\"<div class=\"access-path\">$value[46]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (5) \"BPHTB\"<div class=\"access-path\">$value[46]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>47<\/dfn> => <var>stdClass<\/var>#226 (2)<div class=\"access-path\">$value[47]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411611\"<div class=\"access-path\">$value[47]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"Bea Meterai\"<div class=\"access-path\">$value[47]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>48<\/dfn> => <var>stdClass<\/var>#227 (2)<div class=\"access-path\">$value[48]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411612\"<div class=\"access-path\">$value[48]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (23) \"Penjualan Benda Materai\"<div class=\"access-path\">$value[48]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>49<\/dfn> => <var>stdClass<\/var>#228 (2)<div class=\"access-path\">$value[49]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411613\"<div class=\"access-path\">$value[49]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PPn Batu Bara\"<div class=\"access-path\">$value[49]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>50<\/dfn> => <var>stdClass<\/var>#229 (2)<div class=\"access-path\">$value[50]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411619\"<div class=\"access-path\">$value[50]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (4) \"PTLL\"<div class=\"access-path\">$value[50]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>51<\/dfn> => <var>stdClass<\/var>#230 (2)<div class=\"access-path\">$value[51]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411621\"<div class=\"access-path\">$value[51]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (25) \"Bunga\/Denda Penagihan PPh\"<div class=\"access-path\">$value[51]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>52<\/dfn> => <var>stdClass<\/var>#231 (2)<div class=\"access-path\">$value[52]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411622\"<div class=\"access-path\">$value[52]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (25) \"Bunga\/Denda Penagihan PPN\"<div class=\"access-path\">$value[52]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>53<\/dfn> => <var>stdClass<\/var>#232 (2)<div class=\"access-path\">$value[53]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411623\"<div class=\"access-path\">$value[53]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (27) \"Bunga\/Denda Penagihan PPnBM\"<div class=\"access-path\">$value[53]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>54<\/dfn> => <var>stdClass<\/var>#233 (2)<div class=\"access-path\">$value[54]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411624\"<div class=\"access-path\">$value[54]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (26) \"Bunga\/Denda Penagihan PTLL\"<div class=\"access-path\">$value[54]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selkjs":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (175)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#235 (1)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"000\"<div class=\"access-path\">$value[0]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#236 (1)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"100\"<div class=\"access-path\">$value[1]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#237 (1)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"101\"<div class=\"access-path\">$value[2]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#238 (1)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"102\"<div class=\"access-path\">$value[3]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#239 (1)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"103\"<div class=\"access-path\">$value[4]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#240 (1)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"104\"<div class=\"access-path\">$value[5]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#241 (1)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"105\"<div class=\"access-path\">$value[6]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#242 (1)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"106\"<div class=\"access-path\">$value[7]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#243 (1)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"107\"<div class=\"access-path\">$value[8]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#244 (1)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"108\"<div class=\"access-path\">$value[9]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#245 (1)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"111\"<div class=\"access-path\">$value[10]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#246 (1)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"121\"<div class=\"access-path\">$value[11]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#247 (1)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"122\"<div class=\"access-path\">$value[12]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#248 (1)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"199\"<div class=\"access-path\">$value[13]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#249 (1)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"200\"<div class=\"access-path\">$value[14]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#250 (1)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"201\"<div class=\"access-path\">$value[15]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#251 (1)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"202\"<div class=\"access-path\">$value[16]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#252 (1)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"203\"<div class=\"access-path\">$value[17]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#253 (1)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"204\"<div class=\"access-path\">$value[18]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#254 (1)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"205\"<div class=\"access-path\">$value[19]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#255 (1)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"206\"<div class=\"access-path\">$value[20]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#256 (1)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"207\"<div class=\"access-path\">$value[21]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>22<\/dfn> => <var>stdClass<\/var>#257 (1)<div class=\"access-path\">$value[22]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"208\"<div class=\"access-path\">$value[22]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>23<\/dfn> => <var>stdClass<\/var>#258 (1)<div class=\"access-path\">$value[23]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"209\"<div class=\"access-path\">$value[23]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>24<\/dfn> => <var>stdClass<\/var>#259 (1)<div class=\"access-path\">$value[24]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"210\"<div class=\"access-path\">$value[24]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>25<\/dfn> => <var>stdClass<\/var>#260 (1)<div class=\"access-path\">$value[25]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"211\"<div class=\"access-path\">$value[25]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>26<\/dfn> => <var>stdClass<\/var>#261 (1)<div class=\"access-path\">$value[26]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"212\"<div class=\"access-path\">$value[26]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>27<\/dfn> => <var>stdClass<\/var>#262 (1)<div class=\"access-path\">$value[27]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"213\"<div class=\"access-path\">$value[27]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>28<\/dfn> => <var>stdClass<\/var>#263 (1)<div class=\"access-path\">$value[28]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"214\"<div class=\"access-path\">$value[28]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>29<\/dfn> => <var>stdClass<\/var>#264 (1)<div class=\"access-path\">$value[29]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"215\"<div class=\"access-path\">$value[29]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>30<\/dfn> => <var>stdClass<\/var>#265 (1)<div class=\"access-path\">$value[30]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"216\"<div class=\"access-path\">$value[30]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>31<\/dfn> => <var>stdClass<\/var>#266 (1)<div class=\"access-path\">$value[31]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"217\"<div class=\"access-path\">$value[31]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>32<\/dfn> => <var>stdClass<\/var>#267 (1)<div class=\"access-path\">$value[32]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"218\"<div class=\"access-path\">$value[32]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>33<\/dfn> => <var>stdClass<\/var>#268 (1)<div class=\"access-path\">$value[33]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"219\"<div class=\"access-path\">$value[33]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>34<\/dfn> => <var>stdClass<\/var>#269 (1)<div class=\"access-path\">$value[34]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"220\"<div class=\"access-path\">$value[34]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>35<\/dfn> => <var>stdClass<\/var>#270 (1)<div class=\"access-path\">$value[35]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"221\"<div class=\"access-path\">$value[35]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>36<\/dfn> => <var>stdClass<\/var>#271 (1)<div class=\"access-path\">$value[36]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"222\"<div class=\"access-path\">$value[36]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>37<\/dfn> => <var>stdClass<\/var>#272 (1)<div class=\"access-path\">$value[37]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"223\"<div class=\"access-path\">$value[37]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>38<\/dfn> => <var>stdClass<\/var>#273 (1)<div class=\"access-path\">$value[38]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"224\"<div class=\"access-path\">$value[38]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>39<\/dfn> => <var>stdClass<\/var>#274 (1)<div class=\"access-path\">$value[39]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"225\"<div class=\"access-path\">$value[39]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>40<\/dfn> => <var>stdClass<\/var>#275 (1)<div class=\"access-path\">$value[40]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"226\"<div class=\"access-path\">$value[40]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>41<\/dfn> => <var>stdClass<\/var>#276 (1)<div class=\"access-path\">$value[41]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"227\"<div class=\"access-path\">$value[41]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>42<\/dfn> => <var>stdClass<\/var>#277 (1)<div class=\"access-path\">$value[42]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"228\"<div class=\"access-path\">$value[42]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>43<\/dfn> => <var>stdClass<\/var>#278 (1)<div class=\"access-path\">$value[43]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"229\"<div class=\"access-path\">$value[43]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>44<\/dfn> => <var>stdClass<\/var>#279 (1)<div class=\"access-path\">$value[44]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"230\"<div class=\"access-path\">$value[44]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>45<\/dfn> => <var>stdClass<\/var>#280 (1)<div class=\"access-path\">$value[45]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"231\"<div class=\"access-path\">$value[45]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>46<\/dfn> => <var>stdClass<\/var>#281 (1)<div class=\"access-path\">$value[46]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"232\"<div class=\"access-path\">$value[46]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>47<\/dfn> => <var>stdClass<\/var>#282 (1)<div class=\"access-path\">$value[47]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"233\"<div class=\"access-path\">$value[47]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>48<\/dfn> => <var>stdClass<\/var>#283 (1)<div class=\"access-path\">$value[48]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"234\"<div class=\"access-path\">$value[48]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>49<\/dfn> => <var>stdClass<\/var>#284 (1)<div class=\"access-path\">$value[49]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"235\"<div class=\"access-path\">$value[49]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>50<\/dfn> => <var>stdClass<\/var>#285 (1)<div class=\"access-path\">$value[50]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"236\"<div class=\"access-path\">$value[50]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>51<\/dfn> => <var>stdClass<\/var>#286 (1)<div class=\"access-path\">$value[51]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"237\"<div class=\"access-path\">$value[51]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>52<\/dfn> => <var>stdClass<\/var>#287 (1)<div class=\"access-path\">$value[52]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"238\"<div class=\"access-path\">$value[52]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>53<\/dfn> => <var>stdClass<\/var>#288 (1)<div class=\"access-path\">$value[53]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"239\"<div class=\"access-path\">$value[53]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>54<\/dfn> => <var>stdClass<\/var>#289 (1)<div class=\"access-path\">$value[54]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"240\"<div class=\"access-path\">$value[54]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>55<\/dfn> => <var>stdClass<\/var>#290 (1)<div class=\"access-path\">$value[55]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"241\"<div class=\"access-path\">$value[55]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>56<\/dfn> => <var>stdClass<\/var>#291 (1)<div class=\"access-path\">$value[56]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"242\"<div class=\"access-path\">$value[56]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>57<\/dfn> => <var>stdClass<\/var>#292 (1)<div class=\"access-path\">$value[57]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"243\"<div class=\"access-path\">$value[57]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>58<\/dfn> => <var>stdClass<\/var>#293 (1)<div class=\"access-path\">$value[58]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"244\"<div class=\"access-path\">$value[58]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>59<\/dfn> => <var>stdClass<\/var>#294 (1)<div class=\"access-path\">$value[59]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"245\"<div class=\"access-path\">$value[59]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>60<\/dfn> => <var>stdClass<\/var>#295 (1)<div class=\"access-path\">$value[60]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"246\"<div class=\"access-path\">$value[60]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>61<\/dfn> => <var>stdClass<\/var>#296 (1)<div class=\"access-path\">$value[61]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"247\"<div class=\"access-path\">$value[61]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>62<\/dfn> => <var>stdClass<\/var>#297 (1)<div class=\"access-path\">$value[62]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"248\"<div class=\"access-path\">$value[62]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>63<\/dfn> => <var>stdClass<\/var>#298 (1)<div class=\"access-path\">$value[63]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"249\"<div class=\"access-path\">$value[63]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>64<\/dfn> => <var>stdClass<\/var>#299 (1)<div class=\"access-path\">$value[64]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"250\"<div class=\"access-path\">$value[64]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>65<\/dfn> => <var>stdClass<\/var>#300 (1)<div class=\"access-path\">$value[65]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"251\"<div class=\"access-path\">$value[65]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>66<\/dfn> => <var>stdClass<\/var>#301 (1)<div class=\"access-path\">$value[66]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"252\"<div class=\"access-path\">$value[66]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>67<\/dfn> => <var>stdClass<\/var>#302 (1)<div class=\"access-path\">$value[67]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"253\"<div class=\"access-path\">$value[67]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>68<\/dfn> => <var>stdClass<\/var>#303 (1)<div class=\"access-path\">$value[68]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"254\"<div class=\"access-path\">$value[68]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>69<\/dfn> => <var>stdClass<\/var>#304 (1)<div class=\"access-path\">$value[69]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"255\"<div class=\"access-path\">$value[69]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>70<\/dfn> => <var>stdClass<\/var>#305 (1)<div class=\"access-path\">$value[70]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"256\"<div class=\"access-path\">$value[70]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>71<\/dfn> => <var>stdClass<\/var>#306 (1)<div class=\"access-path\">$value[71]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"257\"<div class=\"access-path\">$value[71]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>72<\/dfn> => <var>stdClass<\/var>#307 (1)<div class=\"access-path\">$value[72]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"258\"<div class=\"access-path\">$value[72]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>73<\/dfn> => <var>stdClass<\/var>#308 (1)<div class=\"access-path\">$value[73]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"259\"<div class=\"access-path\">$value[73]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>74<\/dfn> => <var>stdClass<\/var>#309 (1)<div class=\"access-path\">$value[74]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"260\"<div class=\"access-path\">$value[74]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>75<\/dfn> => <var>stdClass<\/var>#310 (1)<div class=\"access-path\">$value[75]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"261\"<div class=\"access-path\">$value[75]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>76<\/dfn> => <var>stdClass<\/var>#311 (1)<div class=\"access-path\">$value[76]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"262\"<div class=\"access-path\">$value[76]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>77<\/dfn> => <var>stdClass<\/var>#312 (1)<div class=\"access-path\">$value[77]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"263\"<div class=\"access-path\">$value[77]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>78<\/dfn> => <var>stdClass<\/var>#313 (1)<div class=\"access-path\">$value[78]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"264\"<div class=\"access-path\">$value[78]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>79<\/dfn> => <var>stdClass<\/var>#314 (1)<div class=\"access-path\">$value[79]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"265\"<div class=\"access-path\">$value[79]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>80<\/dfn> => <var>stdClass<\/var>#315 (1)<div class=\"access-path\">$value[80]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"266\"<div class=\"access-path\">$value[80]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>81<\/dfn> => <var>stdClass<\/var>#316 (1)<div class=\"access-path\">$value[81]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"267\"<div class=\"access-path\">$value[81]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>82<\/dfn> => <var>stdClass<\/var>#317 (1)<div class=\"access-path\">$value[82]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"268\"<div class=\"access-path\">$value[82]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>83<\/dfn> => <var>stdClass<\/var>#318 (1)<div class=\"access-path\">$value[83]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"269\"<div class=\"access-path\">$value[83]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>84<\/dfn> => <var>stdClass<\/var>#319 (1)<div class=\"access-path\">$value[84]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"270\"<div class=\"access-path\">$value[84]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>85<\/dfn> => <var>stdClass<\/var>#320 (1)<div class=\"access-path\">$value[85]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"271\"<div class=\"access-path\">$value[85]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>86<\/dfn> => <var>stdClass<\/var>#321 (1)<div class=\"access-path\">$value[86]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"272\"<div class=\"access-path\">$value[86]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>87<\/dfn> => <var>stdClass<\/var>#322 (1)<div class=\"access-path\">$value[87]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"273\"<div class=\"access-path\">$value[87]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>88<\/dfn> => <var>stdClass<\/var>#323 (1)<div class=\"access-path\">$value[88]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"274\"<div class=\"access-path\">$value[88]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>89<\/dfn> => <var>stdClass<\/var>#324 (1)<div class=\"access-path\">$value[89]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"275\"<div class=\"access-path\">$value[89]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>90<\/dfn> => <var>stdClass<\/var>#325 (1)<div class=\"access-path\">$value[90]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"276\"<div class=\"access-path\">$value[90]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>91<\/dfn> => <var>stdClass<\/var>#326 (1)<div class=\"access-path\">$value[91]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"277\"<div class=\"access-path\">$value[91]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>92<\/dfn> => <var>stdClass<\/var>#327 (1)<div class=\"access-path\">$value[92]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"278\"<div class=\"access-path\">$value[92]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>93<\/dfn> => <var>stdClass<\/var>#328 (1)<div class=\"access-path\">$value[93]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"279\"<div class=\"access-path\">$value[93]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>94<\/dfn> => <var>stdClass<\/var>#329 (1)<div class=\"access-path\">$value[94]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"280\"<div class=\"access-path\">$value[94]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>95<\/dfn> => <var>stdClass<\/var>#330 (1)<div class=\"access-path\">$value[95]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"281\"<div class=\"access-path\">$value[95]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>96<\/dfn> => <var>stdClass<\/var>#331 (1)<div class=\"access-path\">$value[96]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"282\"<div class=\"access-path\">$value[96]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>97<\/dfn> => <var>stdClass<\/var>#332 (1)<div class=\"access-path\">$value[97]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"283\"<div class=\"access-path\">$value[97]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>98<\/dfn> => <var>stdClass<\/var>#333 (1)<div class=\"access-path\">$value[98]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"284\"<div class=\"access-path\">$value[98]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>99<\/dfn> => <var>stdClass<\/var>#334 (1)<div class=\"access-path\">$value[99]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"285\"<div class=\"access-path\">$value[99]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>100<\/dfn> => <var>stdClass<\/var>#335 (1)<div class=\"access-path\">$value[100]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"286\"<div class=\"access-path\">$value[100]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>101<\/dfn> => <var>stdClass<\/var>#336 (1)<div class=\"access-path\">$value[101]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"287\"<div class=\"access-path\">$value[101]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>102<\/dfn> => <var>stdClass<\/var>#337 (1)<div class=\"access-path\">$value[102]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"288\"<div class=\"access-path\">$value[102]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>103<\/dfn> => <var>stdClass<\/var>#338 (1)<div class=\"access-path\">$value[103]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"289\"<div class=\"access-path\">$value[103]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>104<\/dfn> => <var>stdClass<\/var>#339 (1)<div class=\"access-path\">$value[104]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"290\"<div class=\"access-path\">$value[104]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>105<\/dfn> => <var>stdClass<\/var>#340 (1)<div class=\"access-path\">$value[105]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"291\"<div class=\"access-path\">$value[105]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>106<\/dfn> => <var>stdClass<\/var>#341 (1)<div class=\"access-path\">$value[106]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"292\"<div class=\"access-path\">$value[106]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>107<\/dfn> => <var>stdClass<\/var>#342 (1)<div class=\"access-path\">$value[107]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"293\"<div class=\"access-path\">$value[107]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>108<\/dfn> => <var>stdClass<\/var>#343 (1)<div class=\"access-path\">$value[108]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"294\"<div class=\"access-path\">$value[108]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>109<\/dfn> => <var>stdClass<\/var>#344 (1)<div class=\"access-path\">$value[109]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"295\"<div class=\"access-path\">$value[109]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>110<\/dfn> => <var>stdClass<\/var>#345 (1)<div class=\"access-path\">$value[110]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"296\"<div class=\"access-path\">$value[110]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>111<\/dfn> => <var>stdClass<\/var>#346 (1)<div class=\"access-path\">$value[111]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"297\"<div class=\"access-path\">$value[111]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>112<\/dfn> => <var>stdClass<\/var>#347 (1)<div class=\"access-path\">$value[112]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"298\"<div class=\"access-path\">$value[112]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>113<\/dfn> => <var>stdClass<\/var>#348 (1)<div class=\"access-path\">$value[113]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"299\"<div class=\"access-path\">$value[113]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>114<\/dfn> => <var>stdClass<\/var>#349 (1)<div class=\"access-path\">$value[114]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"300\"<div class=\"access-path\">$value[114]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>115<\/dfn> => <var>stdClass<\/var>#350 (1)<div class=\"access-path\">$value[115]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"301\"<div class=\"access-path\">$value[115]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>116<\/dfn> => <var>stdClass<\/var>#351 (1)<div class=\"access-path\">$value[116]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"302\"<div class=\"access-path\">$value[116]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>117<\/dfn> => <var>stdClass<\/var>#352 (1)<div class=\"access-path\">$value[117]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"310\"<div class=\"access-path\">$value[117]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>118<\/dfn> => <var>stdClass<\/var>#353 (1)<div class=\"access-path\">$value[118]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"311\"<div class=\"access-path\">$value[118]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>119<\/dfn> => <var>stdClass<\/var>#354 (1)<div class=\"access-path\">$value[119]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"312\"<div class=\"access-path\">$value[119]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>120<\/dfn> => <var>stdClass<\/var>#355 (1)<div class=\"access-path\">$value[120]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"313\"<div class=\"access-path\">$value[120]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>121<\/dfn> => <var>stdClass<\/var>#356 (1)<div class=\"access-path\">$value[121]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"314\"<div class=\"access-path\">$value[121]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>122<\/dfn> => <var>stdClass<\/var>#357 (1)<div class=\"access-path\">$value[122]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"317\"<div class=\"access-path\">$value[122]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>123<\/dfn> => <var>stdClass<\/var>#358 (1)<div class=\"access-path\">$value[123]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"318\"<div class=\"access-path\">$value[123]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>124<\/dfn> => <var>stdClass<\/var>#359 (1)<div class=\"access-path\">$value[124]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"319\"<div class=\"access-path\">$value[124]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>125<\/dfn> => <var>stdClass<\/var>#360 (1)<div class=\"access-path\">$value[125]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"320\"<div class=\"access-path\">$value[125]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>126<\/dfn> => <var>stdClass<\/var>#361 (1)<div class=\"access-path\">$value[126]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"321\"<div class=\"access-path\">$value[126]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>127<\/dfn> => <var>stdClass<\/var>#362 (1)<div class=\"access-path\">$value[127]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"322\"<div class=\"access-path\">$value[127]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>128<\/dfn> => <var>stdClass<\/var>#363 (1)<div class=\"access-path\">$value[128]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"323\"<div class=\"access-path\">$value[128]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>129<\/dfn> => <var>stdClass<\/var>#364 (1)<div class=\"access-path\">$value[129]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"324\"<div class=\"access-path\">$value[129]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>130<\/dfn> => <var>stdClass<\/var>#365 (1)<div class=\"access-path\">$value[130]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"390\"<div class=\"access-path\">$value[130]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>131<\/dfn> => <var>stdClass<\/var>#366 (1)<div class=\"access-path\">$value[131]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"400\"<div class=\"access-path\">$value[131]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>132<\/dfn> => <var>stdClass<\/var>#367 (1)<div class=\"access-path\">$value[132]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"401\"<div class=\"access-path\">$value[132]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>133<\/dfn> => <var>stdClass<\/var>#368 (1)<div class=\"access-path\">$value[133]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"402\"<div class=\"access-path\">$value[133]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>134<\/dfn> => <var>stdClass<\/var>#369 (1)<div class=\"access-path\">$value[134]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"403\"<div class=\"access-path\">$value[134]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>135<\/dfn> => <var>stdClass<\/var>#370 (1)<div class=\"access-path\">$value[135]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"404\"<div class=\"access-path\">$value[135]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>136<\/dfn> => <var>stdClass<\/var>#371 (1)<div class=\"access-path\">$value[136]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"405\"<div class=\"access-path\">$value[136]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>137<\/dfn> => <var>stdClass<\/var>#372 (1)<div class=\"access-path\">$value[137]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"406\"<div class=\"access-path\">$value[137]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>138<\/dfn> => <var>stdClass<\/var>#373 (1)<div class=\"access-path\">$value[138]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"407\"<div class=\"access-path\">$value[138]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>139<\/dfn> => <var>stdClass<\/var>#374 (1)<div class=\"access-path\">$value[139]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"408\"<div class=\"access-path\">$value[139]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>140<\/dfn> => <var>stdClass<\/var>#375 (1)<div class=\"access-path\">$value[140]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"409\"<div class=\"access-path\">$value[140]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>141<\/dfn> => <var>stdClass<\/var>#376 (1)<div class=\"access-path\">$value[141]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"410\"<div class=\"access-path\">$value[141]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>142<\/dfn> => <var>stdClass<\/var>#377 (1)<div class=\"access-path\">$value[142]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"411\"<div class=\"access-path\">$value[142]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>143<\/dfn> => <var>stdClass<\/var>#378 (1)<div class=\"access-path\">$value[143]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"412\"<div class=\"access-path\">$value[143]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>144<\/dfn> => <var>stdClass<\/var>#379 (1)<div class=\"access-path\">$value[144]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"413\"<div class=\"access-path\">$value[144]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>145<\/dfn> => <var>stdClass<\/var>#380 (1)<div class=\"access-path\">$value[145]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"414\"<div class=\"access-path\">$value[145]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>146<\/dfn> => <var>stdClass<\/var>#381 (1)<div class=\"access-path\">$value[146]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"415\"<div class=\"access-path\">$value[146]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>147<\/dfn> => <var>stdClass<\/var>#382 (1)<div class=\"access-path\">$value[147]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"416\"<div class=\"access-path\">$value[147]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>148<\/dfn> => <var>stdClass<\/var>#383 (1)<div class=\"access-path\">$value[148]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"417\"<div class=\"access-path\">$value[148]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>149<\/dfn> => <var>stdClass<\/var>#384 (1)<div class=\"access-path\">$value[149]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"418\"<div class=\"access-path\">$value[149]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>150<\/dfn> => <var>stdClass<\/var>#385 (1)<div class=\"access-path\">$value[150]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"419\"<div class=\"access-path\">$value[150]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>151<\/dfn> => <var>stdClass<\/var>#386 (1)<div class=\"access-path\">$value[151]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"420\"<div class=\"access-path\">$value[151]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>152<\/dfn> => <var>stdClass<\/var>#387 (1)<div class=\"access-path\">$value[152]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"421\"<div class=\"access-path\">$value[152]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>153<\/dfn> => <var>stdClass<\/var>#388 (1)<div class=\"access-path\">$value[153]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"422\"<div class=\"access-path\">$value[153]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>154<\/dfn> => <var>stdClass<\/var>#389 (1)<div class=\"access-path\">$value[154]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"423\"<div class=\"access-path\">$value[154]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>155<\/dfn> => <var>stdClass<\/var>#390 (1)<div class=\"access-path\">$value[155]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"424\"<div class=\"access-path\">$value[155]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>156<\/dfn> => <var>stdClass<\/var>#391 (1)<div class=\"access-path\">$value[156]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"425\"<div class=\"access-path\">$value[156]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>157<\/dfn> => <var>stdClass<\/var>#392 (1)<div class=\"access-path\">$value[157]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"427\"<div class=\"access-path\">$value[157]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>158<\/dfn> => <var>stdClass<\/var>#393 (1)<div class=\"access-path\">$value[158]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"428\"<div class=\"access-path\">$value[158]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>159<\/dfn> => <var>stdClass<\/var>#394 (1)<div class=\"access-path\">$value[159]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"499\"<div class=\"access-path\">$value[159]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>160<\/dfn> => <var>stdClass<\/var>#395 (1)<div class=\"access-path\">$value[160]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"500\"<div class=\"access-path\">$value[160]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>161<\/dfn> => <var>stdClass<\/var>#396 (1)<div class=\"access-path\">$value[161]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"501\"<div class=\"access-path\">$value[161]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>162<\/dfn> => <var>stdClass<\/var>#397 (1)<div class=\"access-path\">$value[162]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"510\"<div class=\"access-path\">$value[162]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>163<\/dfn> => <var>stdClass<\/var>#398 (1)<div class=\"access-path\">$value[163]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"511\"<div class=\"access-path\">$value[163]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>164<\/dfn> => <var>stdClass<\/var>#399 (1)<div class=\"access-path\">$value[164]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"512\"<div class=\"access-path\">$value[164]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>165<\/dfn> => <var>stdClass<\/var>#400 (1)<div class=\"access-path\">$value[165]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"513\"<div class=\"access-path\">$value[165]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>166<\/dfn> => <var>stdClass<\/var>#401 (1)<div class=\"access-path\">$value[166]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"514\"<div class=\"access-path\">$value[166]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>167<\/dfn> => <var>stdClass<\/var>#402 (1)<div class=\"access-path\">$value[167]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"515\"<div class=\"access-path\">$value[167]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>168<\/dfn> => <var>stdClass<\/var>#403 (1)<div class=\"access-path\">$value[168]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"516\"<div class=\"access-path\">$value[168]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>169<\/dfn> => <var>stdClass<\/var>#404 (1)<div class=\"access-path\">$value[169]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"900\"<div class=\"access-path\">$value[169]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>170<\/dfn> => <var>stdClass<\/var>#405 (1)<div class=\"access-path\">$value[170]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"901\"<div class=\"access-path\">$value[170]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>171<\/dfn> => <var>stdClass<\/var>#406 (1)<div class=\"access-path\">$value[171]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"902\"<div class=\"access-path\">$value[171]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>172<\/dfn> => <var>stdClass<\/var>#407 (1)<div class=\"access-path\">$value[172]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"910\"<div class=\"access-path\">$value[172]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>173<\/dfn> => <var>stdClass<\/var>#408 (1)<div class=\"access-path\">$value[173]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"920\"<div class=\"access-path\">$value[173]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>174<\/dfn> => <var>stdClass<\/var>#409 (1)<div class=\"access-path\">$value[174]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"930\"<div class=\"access-path\">$value[174]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","dtmapkjs":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (12)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#411 (6)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"01\"<div class=\"access-path\">$value[0]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"153193226838783\"<div class=\"access-path\">$value[0]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"162324655671151\"<div class=\"access-path\">$value[0]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[0]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"964130\"<div class=\"access-path\">$value[0]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"926187\"<div class=\"access-path\">$value[0]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#412 (6)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"02\"<div class=\"access-path\">$value[1]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"119419515571313\"<div class=\"access-path\">$value[1]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"117656017422686\"<div class=\"access-path\">$value[1]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[1]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"836587\"<div class=\"access-path\">$value[1]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"849167\"<div class=\"access-path\">$value[1]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#413 (6)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"03\"<div class=\"access-path\">$value[2]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"130324656773714\"<div class=\"access-path\">$value[2]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"151908567490454\"<div class=\"access-path\">$value[2]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[2]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (7) \"1099357\"<div class=\"access-path\">$value[2]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1112279\"<div class=\"access-path\">$value[2]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#414 (6)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"04\"<div class=\"access-path\">$value[3]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"224520570036594\"<div class=\"access-path\">$value[3]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"256229865814097\"<div class=\"access-path\">$value[3]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[3]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"911748\"<div class=\"access-path\">$value[3]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"877992\"<div class=\"access-path\">$value[3]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#415 (6)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"05\"<div class=\"access-path\">$value[4]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[4]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"142317308724531\"<div class=\"access-path\">$value[4]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[4]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[4]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"912007\"<div class=\"access-path\">$value[4]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#416 (6)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"06\"<div class=\"access-path\">$value[5]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[5]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"139837261465513\"<div class=\"access-path\">$value[5]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[5]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[5]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"930351\"<div class=\"access-path\">$value[5]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#417 (6)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"07\"<div class=\"access-path\">$value[6]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[6]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"138827778078352\"<div class=\"access-path\">$value[6]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[6]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[6]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"957637\"<div class=\"access-path\">$value[6]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#418 (6)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"08\"<div class=\"access-path\">$value[7]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[7]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"137864154782725\"<div class=\"access-path\">$value[7]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[7]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[7]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"991044\"<div class=\"access-path\">$value[7]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#419 (6)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"09\"<div class=\"access-path\">$value[8]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[8]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"140807912273049\"<div class=\"access-path\">$value[8]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[8]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[8]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"976139\"<div class=\"access-path\">$value[8]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#420 (6)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"10\"<div class=\"access-path\">$value[9]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[9]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"136104769648355\"<div class=\"access-path\">$value[9]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[9]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[9]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1001434\"<div class=\"access-path\">$value[9]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#421 (6)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"11\"<div class=\"access-path\">$value[10]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[10]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"146046768940592\"<div class=\"access-path\">$value[10]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[10]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[10]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1043589\"<div class=\"access-path\">$value[10]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#422 (6)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"12\"<div class=\"access-path\">$value[11]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[11]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"197947434424383\"<div class=\"access-path\">$value[11]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[11]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[11]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1194889\"<div class=\"access-path\">$value[11]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>"}},"session":{"__ci_last_regenerate":"<pre>1715934103<\/pre>","nip":"060086978","nipp":"196805201995031003","nama":"SUPARNO","kppadm":"000","jabatan":"Direktur","kantor":"Direktorat Ekstensifikasi dan Penilaian","seksi":"<pre><\/pre>","tpkantor":"KPDJP","kwladm":"991","isLogin":"<pre>1<\/pre>","_ci_previous_url":"http:\/\/localhost\/engineN\/home\/gmapkjs"},"post":{"kwl":"SEMUA","kdmap":"SEMUA","kjs":"SEMUA","kategori":"SEMUA","tahun":"2024"},"headers":{"Content-Type":"application\/x-www-form-urlencoded","Host":"localhost","Connection":"keep-alive","Cache-Control":"max-age=0","Sec-Ch-Ua":""Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"","Sec-Ch-Ua-Mobile":"?0","Sec-Ch-Ua-Platform":""Windows"","Upgrade-Insecure-Requests":"1","Origin":"http:\/\/localhost","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36","Accept":"text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,image\/apng,*\/*;q=0.8,application\/signed-exchange;v=b3;q=0.7","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"navigate","Sec-Fetch-User":"?1","Sec-Fetch-Dest":"document","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"debug-bar-tab=ci-timeline; debug-bar-state=minimized; ci_session=84lu6ft803rsdcfgu48sbqf5iskep16s"},"cookies":{"debug-bar-tab":"ci-timeline","debug-bar-state":"minimized","ci_session":"84lu6ft803rsdcfgu48sbqf5iskep16s"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715934137.346765.json b/writable/debugbar/debugbar_1715934137.346765.json deleted file mode 100644 index 8759a057..00000000 --- a/writable/debugbar/debugbar_1715934137.346765.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/home\/gmapkjs","method":"POST","isAJAX":false,"startTime":1715934128.995657,"totalTime":8326.9,"totalMemory":"7.765","segmentDuration":1190,"segmentCount":7,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715934129.001501,"duration":0.01840996742248535},{"name":"Routing","component":"Timer","start":1715934129.019914,"duration":0.003103971481323242},{"name":"Before Filters","component":"Timer","start":1715934129.027871,"duration":3.719329833984375e-5},{"name":"Controller","component":"Timer","start":1715934129.027912,"duration":8.294596195220947},{"name":"Controller Constructor","component":"Timer","start":1715934129.027914,"duration":0.005037069320678711},{"name":"After Filters","component":"Timer","start":1715934137.322523,"duration":0.0002429485321044922}]},{"title":"Database","titleSafe":"database","titleDetails":"(7 total Queries, 7 of them unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"0.26 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KANWIL"\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KODE" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:43","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:183","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKwl()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:43","qid":"21639adb5088181084578275cf6c68a5"},{"hover":"","class":"","duration":"0.22 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "BULAN"","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:35","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:184","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selBln()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:35","qid":"c61045c9d1ef4b7f7084678ea3c5386e"},{"hover":"","class":"","duration":"0.16 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KPP"\n<strong>WHERE<\/strong> "KD_KANWIL" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KD_KPP" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:52","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:185","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKpp()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:52","qid":"5a24ffc7c03c83590a7baaa6df622e04"},{"hover":"","class":"","duration":"0.47 ms","sql":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_KATEGORI KATEGORI, NM_KATEGORIPDK NAMA <strong>FROM<\/strong> REF_KLU\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_KATEGORI <strong>ASC<\/strong>","trace":[{"file":"APPPATH\\Models\\Mref.php:11","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:187","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKLU()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:11","qid":"fe36854e1b3a1e99afc72487a3c28e39"},{"hover":"","class":"","duration":"0.26 ms","sql":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_MAP,NM_MAP <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_MAP <strong>ASC<\/strong>","trace":[{"file":"APPPATH\\Models\\Mref.php:18","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:188","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selMAP()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:18","qid":"34c37ac884296c39ad58b229b0a326a7"},{"hover":"","class":"","duration":"0.3 ms","sql":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_SETOR KJS <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>WHERE<\/strong> TRIM(KD_SETOR) <strong>IS<\/strong> <strong>NOT<\/strong> <strong>NULL<\/strong>\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_SETOR <strong>ASC<\/strong>","trace":[{"file":"APPPATH\\Models\\Mref.php:25","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:189","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKJS()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:25","qid":"b2663376e2c27c59c5a1f5d7a589c62d"},{"hover":"","class":"","duration":"2800.75 ms","sql":"<strong>SELECT<\/strong> \r\n BLNBYR,\r\n (<strong>SELECT<\/strong> <strong>SUM<\/strong>(JUMLAH)POPULASI <strong>FROM<\/strong> KEWAJIBAN_FLAGN\r\n <strong>WHERE<\/strong> KD_MAP <> 0 ) POPULASI,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN 1 ELSE 0 END) WPBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN 1 ELSE 0 END) WPBYRPAST,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN TOTAL ELSE 0 END) JMLBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN TOTAL ELSE 0 END) JMLBYRPAST\r\n <strong>FROM<\/strong> (<strong>SELECT<\/strong> NPWP,THNBYR,BLNBYR,<strong>SUM<\/strong>(TOTAL) TOTAL <strong>FROM<\/strong> DASHBOARD_BESAR_MAPKJS\r\n <strong>WHERE<\/strong> THNBYR BETWEEN '2023' <strong>AND<\/strong> '2024' \r\n <strong>GROUP<\/strong> <strong>BY<\/strong> NPWP,THNBYR,BLNBYR\r\n )\r\n <strong>GROUP<\/strong> <strong>BY<\/strong> BLNBYR <strong>ORDER<\/strong> <strong>BY<\/strong> BLNBYR <strong>ASC<\/strong>\r\n ","trace":[{"file":"APPPATH\\Models\\Mpemby.php:381","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:190","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mpemby->gmapkjs()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mpemby.php:381","qid":"c9760f20e798e52a7b83befca60a02b1"}]},"badgeValue":7,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715934134.492472,"duration":"0.023921"},{"name":"Query","component":"Database","start":1715934134.516888,"duration":"0.000258","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KANWIL"\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KODE" <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934134.517824,"duration":"0.000221","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "BULAN""},{"name":"Query","component":"Database","start":1715934134.51813,"duration":"0.000157","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KPP"\n<strong>WHERE<\/strong> "KD_KANWIL" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KD_KPP" <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934134.518325,"duration":"0.000473","query":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_KATEGORI KATEGORI, NM_KATEGORIPDK NAMA <strong>FROM<\/strong> REF_KLU\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_KATEGORI <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934134.518828,"duration":"0.000263","query":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_MAP,NM_MAP <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_MAP <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934134.519129,"duration":"0.000304","query":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_SETOR KJS <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>WHERE<\/strong> TRIM(KD_SETOR) <strong>IS<\/strong> <strong>NOT<\/strong> <strong>NULL<\/strong>\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_SETOR <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934134.519509,"duration":"2.800750","query":"<strong>SELECT<\/strong> \r\n BLNBYR,\r\n (<strong>SELECT<\/strong> <strong>SUM<\/strong>(JUMLAH)POPULASI <strong>FROM<\/strong> KEWAJIBAN_FLAGN\r\n <strong>WHERE<\/strong> KD_MAP <> 0 ) POPULASI,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN 1 ELSE 0 END) WPBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN 1 ELSE 0 END) WPBYRPAST,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN TOTAL ELSE 0 END) JMLBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN TOTAL ELSE 0 END) JMLBYRPAST\r\n <strong>FROM<\/strong> (<strong>SELECT<\/strong> NPWP,THNBYR,BLNBYR,<strong>SUM<\/strong>(TOTAL) TOTAL <strong>FROM<\/strong> DASHBOARD_BESAR_MAPKJS\r\n <strong>WHERE<\/strong> THNBYR BETWEEN '2023' <strong>AND<\/strong> '2024' \r\n <strong>GROUP<\/strong> <strong>BY<\/strong> NPWP,THNBYR,BLNBYR\r\n )\r\n <strong>GROUP<\/strong> <strong>BY<\/strong> BLNBYR <strong>ORDER<\/strong> <strong>BY<\/strong> BLNBYR <strong>ASC<\/strong>\r\n "}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[{"level":"info","msg":"Session: Class initialized using 'CodeIgniter\\Session\\Handlers\\FileHandler' driver."}]},"badgeValue":null,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":6,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"View: inc\/head.php","component":"Views","start":1715934137.32035,"duration":0.0005781650543212891},{"name":"View: inc\/navbar.php","component":"Views","start":1715934137.321047,"duration":0.00014591217041015625},{"name":"View: inc\/sidebar.php","component":"Views","start":1715934137.321241,"duration":0.0002300739288330078},{"name":"View: inc\/js.php","component":"Views","start":1715934137.321905,"duration":0.0002930164337158203},{"name":"View: ppm\/gmapkjs.php","component":"Views","start":1715934137.32152,"duration":0.0007889270782470703},{"name":"View: inc\/footer.php","component":"Views","start":1715934137.322376,"duration":9.107589721679688e-5}]},{"title":"Files","titleSafe":"files","titleDetails":"( 178 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseBuilder.php","name":"BaseBuilder.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Builder.php","name":"Builder.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\HandlerInterface.php","name":"HandlerInterface.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Session\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Session\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Session\\Session.php","name":"Session.php"},{"path":"SYSTEMPATH\\Session\\SessionInterface.php","name":"SessionInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Traits\\ConditionalTrait.php","name":"ConditionalTrait.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Session.php","name":"Session.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\BaseController.php","name":"BaseController.php"},{"path":"APPPATH\\Controllers\\Home.php","name":"Home.php"},{"path":"APPPATH\\Helpers\\myhelper_helper.php","name":"myhelper_helper.php"},{"path":"APPPATH\\Models\\Mpemby.php","name":"Mpemby.php"},{"path":"APPPATH\\Models\\Mref.php","name":"Mref.php"},{"path":"APPPATH\\Views\\inc\\footer.php","name":"footer.php"},{"path":"APPPATH\\Views\\inc\\head.php","name":"head.php"},{"path":"APPPATH\\Views\\inc\\js.php","name":"js.php"},{"path":"APPPATH\\Views\\inc\\navbar.php","name":"navbar.php"},{"path":"APPPATH\\Views\\inc\\sidebar.php","name":"sidebar.php"},{"path":"APPPATH\\Views\\ppm\\gmapkjs.php","name":"gmapkjs.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerAwareTrait.php","name":"LoggerAwareTrait.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":178,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Home","method":"gmapkjs","paramCount":0,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":0,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"4.79","count":1},"dbquery":{"event":"dbquery","duration":"0.09","count":7}}},"badgeValue":8,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715934129.007525,"duration":0.0047910213470458984},{"name":"Event: dbquery","component":"Events","start":1715934134.517151,"duration":2.09808349609375e-5},{"name":"Event: dbquery","component":"Events","start":1715934134.518047,"duration":1.1920928955078125e-5},{"name":"Event: dbquery","component":"Events","start":1715934134.518289,"duration":1.2874603271484375e-5},{"name":"Event: dbquery","component":"Events","start":1715934134.518799,"duration":6.9141387939453125e-6},{"name":"Event: dbquery","component":"Events","start":1715934134.519092,"duration":5.0067901611328125e-6},{"name":"Event: dbquery","component":"Events","start":1715934134.519433,"duration":4.0531158447265625e-6},{"name":"Event: dbquery","component":"Events","start":1715934137.320264,"duration":2.384185791015625e-5}]}],"vars":{"varData":{"View Data":{"kwlx":"SEMUA","kppx":"SEMUA","seksix":"SEMUA","nipx":"SEMUA","tahunx":"2024","bulanx":"01","bulan2x":"05","mapx":"SEMUA","kjsx":"SEMUA","kategorix":"SEMUA","selkwl":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (34)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#105 (3)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"010\"<div class=\"access-path\">$value[0]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"010\"<div class=\"access-path\">$value[0]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (15) \"Kanwil DJP Aceh\"<div class=\"access-path\">$value[0]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#108 (3)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"020\"<div class=\"access-path\">$value[1]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"020\"<div class=\"access-path\">$value[1]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (27) \"Kanwil DJP Sumatera Utara I\"<div class=\"access-path\">$value[1]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#109 (3)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"030\"<div class=\"access-path\">$value[2]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"030\"<div class=\"access-path\">$value[2]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"Kanwil DJP Sumatera Utara II\"<div class=\"access-path\">$value[2]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#110 (3)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"040\"<div class=\"access-path\">$value[3]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"040\"<div class=\"access-path\">$value[3]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (15) \"Kanwil DJP Riau\"<div class=\"access-path\">$value[3]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#111 (3)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"050\"<div class=\"access-path\">$value[4]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"050\"<div class=\"access-path\">$value[4]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (35) \"Kanwil DJP Sumatera Barat dan Jambi\"<div class=\"access-path\">$value[4]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#112 (3)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"060\"<div class=\"access-path\">$value[5]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"060\"<div class=\"access-path\">$value[5]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (57) \"Kanwil DJP Sumatera Selatan dan Kepulauan Bangka Belitung\"<div class=\"access-path\">$value[5]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#113 (3)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"070\"<div class=\"access-path\">$value[6]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"070\"<div class=\"access-path\">$value[6]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (31) \"Kanwil DJP Bengkulu dan Lampung\"<div class=\"access-path\">$value[6]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#114 (3)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"080\"<div class=\"access-path\">$value[7]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"080\"<div class=\"access-path\">$value[7]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Pusat\"<div class=\"access-path\">$value[7]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#115 (3)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"090\"<div class=\"access-path\">$value[8]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"090\"<div class=\"access-path\">$value[8]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Barat\"<div class=\"access-path\">$value[8]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#116 (3)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"100\"<div class=\"access-path\">$value[9]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"100\"<div class=\"access-path\">$value[9]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"Kanwil DJP Jakarta Selatan I\"<div class=\"access-path\">$value[9]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#117 (3)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"110\"<div class=\"access-path\">$value[10]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"110\"<div class=\"access-path\">$value[10]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Timur\"<div class=\"access-path\">$value[10]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#118 (3)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"120\"<div class=\"access-path\">$value[11]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"120\"<div class=\"access-path\">$value[11]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Utara\"<div class=\"access-path\">$value[11]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#119 (3)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"130\"<div class=\"access-path\">$value[12]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"130\"<div class=\"access-path\">$value[12]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jakarta Khusus\"<div class=\"access-path\">$value[12]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#120 (3)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"140\"<div class=\"access-path\">$value[13]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"140\"<div class=\"access-path\">$value[13]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (17) \"Kanwil DJP Banten\"<div class=\"access-path\">$value[13]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#121 (3)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"150\"<div class=\"access-path\">$value[14]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"150\"<div class=\"access-path\">$value[14]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (23) \"Kanwil DJP Jawa Barat I\"<div class=\"access-path\">$value[14]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#122 (3)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"160\"<div class=\"access-path\">$value[15]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"160\"<div class=\"access-path\">$value[15]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jawa Barat II\"<div class=\"access-path\">$value[15]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#123 (3)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"170\"<div class=\"access-path\">$value[16]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"170\"<div class=\"access-path\">$value[16]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jawa Tengah I\"<div class=\"access-path\">$value[16]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#124 (3)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"180\"<div class=\"access-path\">$value[17]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"180\"<div class=\"access-path\">$value[17]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jawa Tengah II\"<div class=\"access-path\">$value[17]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#125 (3)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"190\"<div class=\"access-path\">$value[18]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"190\"<div class=\"access-path\">$value[18]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (37) \"Kanwil DJP Daerah Istimewa Yogyakarta\"<div class=\"access-path\">$value[18]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#126 (3)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"200\"<div class=\"access-path\">$value[19]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"200\"<div class=\"access-path\">$value[19]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (23) \"Kanwil DJP Jawa Timur I\"<div class=\"access-path\">$value[19]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#127 (3)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"210\"<div class=\"access-path\">$value[20]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"210\"<div class=\"access-path\">$value[20]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jawa Timur II\"<div class=\"access-path\">$value[20]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#128 (3)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"220\"<div class=\"access-path\">$value[21]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"220\"<div class=\"access-path\">$value[21]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jawa Timur III\"<div class=\"access-path\">$value[21]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>22<\/dfn> => <var>stdClass<\/var>#129 (3)<div class=\"access-path\">$value[22]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"230\"<div class=\"access-path\">$value[22]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"230\"<div class=\"access-path\">$value[22]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (27) \"Kanwil DJP Kalimantan Barat\"<div class=\"access-path\">$value[22]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>23<\/dfn> => <var>stdClass<\/var>#130 (3)<div class=\"access-path\">$value[23]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"240\"<div class=\"access-path\">$value[23]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"240\"<div class=\"access-path\">$value[23]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (40) \"Kanwil DJP Kalimantan Selatan dan Tengah\"<div class=\"access-path\">$value[23]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>24<\/dfn> => <var>stdClass<\/var>#131 (3)<div class=\"access-path\">$value[24]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"250\"<div class=\"access-path\">$value[24]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"250\"<div class=\"access-path\">$value[24]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (37) \"Kanwil DJP Kalimantan Timur dan Utara\"<div class=\"access-path\">$value[24]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>25<\/dfn> => <var>stdClass<\/var>#132 (3)<div class=\"access-path\">$value[25]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"260\"<div class=\"access-path\">$value[25]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"260\"<div class=\"access-path\">$value[25]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (48) \"Kanwil DJP Sulawesi Selatan, Barat, dan Tenggara\"<div class=\"access-path\">$value[25]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>26<\/dfn> => <var>stdClass<\/var>#133 (3)<div class=\"access-path\">$value[26]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"270\"<div class=\"access-path\">$value[26]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"270\"<div class=\"access-path\">$value[26]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (62) \"Kanwil DJP Sulawesi Utara, Tengah, Gorontalo, dan Maluku Utara\"<div class=\"access-path\">$value[26]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>27<\/dfn> => <var>stdClass<\/var>#134 (3)<div class=\"access-path\">$value[27]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"280\"<div class=\"access-path\">$value[27]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"280\"<div class=\"access-path\">$value[27]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (15) \"Kanwil DJP Bali\"<div class=\"access-path\">$value[27]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>28<\/dfn> => <var>stdClass<\/var>#135 (3)<div class=\"access-path\">$value[28]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"290\"<div class=\"access-path\">$value[28]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"290\"<div class=\"access-path\">$value[28]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Nusa Tenggara\"<div class=\"access-path\">$value[28]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>29<\/dfn> => <var>stdClass<\/var>#136 (3)<div class=\"access-path\">$value[29]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"300\"<div class=\"access-path\">$value[29]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"300\"<div class=\"access-path\">$value[29]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (41) \"Kanwil DJP Papua, Papua Barat, dan Maluku\"<div class=\"access-path\">$value[29]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>30<\/dfn> => <var>stdClass<\/var>#137 (3)<div class=\"access-path\">$value[30]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"310\"<div class=\"access-path\">$value[30]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"310\"<div class=\"access-path\">$value[30]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"Kanwil DJP Wajib Pajak Besar\"<div class=\"access-path\">$value[30]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>31<\/dfn> => <var>stdClass<\/var>#138 (3)<div class=\"access-path\">$value[31]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"320\"<div class=\"access-path\">$value[31]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"320\"<div class=\"access-path\">$value[31]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (29) \"Kanwil DJP Jakarta Selatan II\"<div class=\"access-path\">$value[31]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>32<\/dfn> => <var>stdClass<\/var>#139 (3)<div class=\"access-path\">$value[32]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"330\"<div class=\"access-path\">$value[32]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"330\"<div class=\"access-path\">$value[32]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jawa Barat III\"<div class=\"access-path\">$value[32]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>33<\/dfn> => <var>stdClass<\/var>#140 (3)<div class=\"access-path\">$value[33]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"340\"<div class=\"access-path\">$value[33]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"340\"<div class=\"access-path\">$value[33]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Kepulauan Riau\"<div class=\"access-path\">$value[33]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selbulan":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (12)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#107 (3)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"01\"<div class=\"access-path\">$value[0]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (7) \"JANUARI\"<div class=\"access-path\">$value[0]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"JAN\"<div class=\"access-path\">$value[0]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#143 (3)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"02\"<div class=\"access-path\">$value[1]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (8) \"FEBRUARI\"<div class=\"access-path\">$value[1]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"FEB\"<div class=\"access-path\">$value[1]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#144 (3)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"03\"<div class=\"access-path\">$value[2]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (5) \"MARET\"<div class=\"access-path\">$value[2]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"MAR\"<div class=\"access-path\">$value[2]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#145 (3)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"04\"<div class=\"access-path\">$value[3]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (5) \"APRIL\"<div class=\"access-path\">$value[3]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"APR\"<div class=\"access-path\">$value[3]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#146 (3)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"05\"<div class=\"access-path\">$value[4]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (3) \"MEI\"<div class=\"access-path\">$value[4]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"MEI\"<div class=\"access-path\">$value[4]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#147 (3)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"06\"<div class=\"access-path\">$value[5]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (4) \"JUNI\"<div class=\"access-path\">$value[5]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"JUN\"<div class=\"access-path\">$value[5]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#148 (3)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"07\"<div class=\"access-path\">$value[6]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (4) \"JULI\"<div class=\"access-path\">$value[6]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"JUL\"<div class=\"access-path\">$value[6]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#149 (3)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"08\"<div class=\"access-path\">$value[7]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (7) \"AGUSTUS\"<div class=\"access-path\">$value[7]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (5) \"AGUST\"<div class=\"access-path\">$value[7]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#150 (3)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"09\"<div class=\"access-path\">$value[8]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (9) \"SEPTEMBER\"<div class=\"access-path\">$value[8]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"SEP\"<div class=\"access-path\">$value[8]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#151 (3)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"10\"<div class=\"access-path\">$value[9]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (7) \"OKTOBER\"<div class=\"access-path\">$value[9]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"OKT\"<div class=\"access-path\">$value[9]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#152 (3)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"11\"<div class=\"access-path\">$value[10]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (8) \"NOPEMBER\"<div class=\"access-path\">$value[10]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"NOP\"<div class=\"access-path\">$value[10]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#153 (3)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"12\"<div class=\"access-path\">$value[11]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (8) \"DESEMBER\"<div class=\"access-path\">$value[11]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"DES\"<div class=\"access-path\">$value[11]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selkpp":"<div class=\"kint-rich\"><dl><dt><dfn>$value<\/dfn> <var>array<\/var> (0)<\/dt><\/dl><\/div>","selklu":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (22)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#156 (2)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"A\"<div class=\"access-path\">$value[0]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (9) \"PERTANIAN\"<div class=\"access-path\">$value[0]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#157 (2)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"B\"<div class=\"access-path\">$value[1]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (27) \"PERTAMBANGAN DAN PENGGALIAN\"<div class=\"access-path\">$value[1]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#158 (2)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"C\"<div class=\"access-path\">$value[2]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (19) \"INDUSTRI PENGOLAHAN\"<div class=\"access-path\">$value[2]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#159 (2)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"D\"<div class=\"access-path\">$value[3]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (17) \"PENGADAAN LISTRIK\"<div class=\"access-path\">$value[3]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#160 (2)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"E\"<div class=\"access-path\">$value[4]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (13) \"TREATMENT AIR\"<div class=\"access-path\">$value[4]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#161 (2)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"F\"<div class=\"access-path\">$value[5]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (10) \"KONSTRUKSI\"<div class=\"access-path\">$value[5]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#162 (2)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"G\"<div class=\"access-path\">$value[6]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"PERDAGANGAN BESAR DAN ECERAN\"<div class=\"access-path\">$value[6]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#163 (2)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"H\"<div class=\"access-path\">$value[7]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"PENGANGKUTAN DAN PERGUDANGAN\"<div class=\"access-path\">$value[7]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#164 (2)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"I\"<div class=\"access-path\">$value[8]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (47) \"PENYEDIAAN AKOMODASI DAN PENYEDIAAN MAKAN MINUM\"<div class=\"access-path\">$value[8]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#165 (2)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"J\"<div class=\"access-path\">$value[9]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"INFORMASI DAN KOMUNIKASI\"<div class=\"access-path\">$value[9]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#166 (2)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"K\"<div class=\"access-path\">$value[10]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (31) \"AKTIVITAS KEUANGAN DAN ASURANSI\"<div class=\"access-path\">$value[10]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#167 (2)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"L\"<div class=\"access-path\">$value[11]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (10) \"REAL ESTAT\"<div class=\"access-path\">$value[11]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#168 (2)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"M\"<div class=\"access-path\">$value[12]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (21) \"AKTIVITAS PROFESIONAL\"<div class=\"access-path\">$value[12]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#169 (2)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"N\"<div class=\"access-path\">$value[13]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (54) \"AKTIVITAS PENYEWAAN DAN SEWA GUNA USAHA TANPA HAK OPSI\"<div class=\"access-path\">$value[13]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#170 (2)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"O\"<div class=\"access-path\">$value[14]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"ADMINISTRASI PEMERINTAHAN\"<div class=\"access-path\">$value[14]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#171 (2)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"P\"<div class=\"access-path\">$value[15]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (10) \"PENDIDIKAN\"<div class=\"access-path\">$value[15]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#172 (2)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"Q\"<div class=\"access-path\">$value[16]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (48) \"AKTIVITAS KESEHATAN MANUSIA DAN AKTIVITAS SOSIAL\"<div class=\"access-path\">$value[16]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#173 (2)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"R\"<div class=\"access-path\">$value[17]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (8) \"KESENIAN\"<div class=\"access-path\">$value[17]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#174 (2)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"S\"<div class=\"access-path\">$value[18]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (22) \"AKTIVITAS JASA LAINNYA\"<div class=\"access-path\">$value[18]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#175 (2)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"T\"<div class=\"access-path\">$value[19]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (44) \"AKTIVITAS RUMAH TANGGA SEBAGAI PEMBERI KERJA\"<div class=\"access-path\">$value[19]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#176 (2)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"U\"<div class=\"access-path\">$value[20]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (68) \"AKTIVITAS BADAN INTERNASIONAL DAN BADAN EKSTRA INTERNASIONAL LAINNYA\"<div class=\"access-path\">$value[20]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#177 (2)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"Z\"<div class=\"access-path\">$value[21]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (14) \"PEJABAT NEGARA\"<div class=\"access-path\">$value[21]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selmap":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (55)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#179 (2)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411111\"<div class=\"access-path\">$value[0]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (15) \"PPh Minyak Bumi\"<div class=\"access-path\">$value[0]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#180 (2)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411112\"<div class=\"access-path\">$value[1]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Gas Alam\"<div class=\"access-path\">$value[1]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#181 (2)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411113\"<div class=\"access-path\">$value[2]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (23) \"PPh Minyak Bumi Lainnya\"<div class=\"access-path\">$value[2]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#182 (2)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411119\"<div class=\"access-path\">$value[3]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (17) \"PPh Migas Lainnya\"<div class=\"access-path\">$value[3]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#183 (2)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411121\"<div class=\"access-path\">$value[4]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 21\"<div class=\"access-path\">$value[4]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#184 (2)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411122\"<div class=\"access-path\">$value[5]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 22\"<div class=\"access-path\">$value[5]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#185 (2)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411123\"<div class=\"access-path\">$value[6]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"PPh Pasal 22 Impor\"<div class=\"access-path\">$value[6]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#186 (2)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411124\"<div class=\"access-path\">$value[7]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 23\"<div class=\"access-path\">$value[7]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#187 (2)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411125\"<div class=\"access-path\">$value[8]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"PPh Pasal 25\/29 OP\"<div class=\"access-path\">$value[8]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#188 (2)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411126\"<div class=\"access-path\">$value[9]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (21) \"PPh Pasal 25\/29 Badan\"<div class=\"access-path\">$value[9]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#189 (2)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411127\"<div class=\"access-path\">$value[10]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 26\"<div class=\"access-path\">$value[10]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#190 (2)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411128\"<div class=\"access-path\">$value[11]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (9) \"PPh Final\"<div class=\"access-path\">$value[11]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#191 (2)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411129\"<div class=\"access-path\">$value[12]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (21) \"PPh Non Migas Lainnya\"<div class=\"access-path\">$value[12]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#192 (2)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411131\"<div class=\"access-path\">$value[13]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"Fiskal Luar Negeri\"<div class=\"access-path\">$value[13]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#193 (2)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411141\"<div class=\"access-path\">$value[14]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 21\"<div class=\"access-path\">$value[14]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#194 (2)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411141\"<div class=\"access-path\">$value[15]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[15]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#195 (2)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411142\"<div class=\"access-path\">$value[16]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 22\"<div class=\"access-path\">$value[16]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#196 (2)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411143\"<div class=\"access-path\">$value[17]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (22) \"DTP PPH Pasal 22 Impor\"<div class=\"access-path\">$value[17]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#197 (2)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411144\"<div class=\"access-path\">$value[18]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[18]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#198 (2)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411144\"<div class=\"access-path\">$value[19]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 23\"<div class=\"access-path\">$value[19]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#199 (2)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411145\"<div class=\"access-path\">$value[20]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (22) \"DTP PPH Pasal 25\/29 OP\"<div class=\"access-path\">$value[20]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#200 (2)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411146\"<div class=\"access-path\">$value[21]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (25) \"DTP PPH Pasal 25\/29 Badan\"<div class=\"access-path\">$value[21]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>22<\/dfn> => <var>stdClass<\/var>#201 (2)<div class=\"access-path\">$value[22]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411146\"<div class=\"access-path\">$value[22]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[22]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>23<\/dfn> => <var>stdClass<\/var>#202 (2)<div class=\"access-path\">$value[23]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411147\"<div class=\"access-path\">$value[23]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 26\"<div class=\"access-path\">$value[23]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>24<\/dfn> => <var>stdClass<\/var>#203 (2)<div class=\"access-path\">$value[24]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411147\"<div class=\"access-path\">$value[24]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[24]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>25<\/dfn> => <var>stdClass<\/var>#204 (2)<div class=\"access-path\">$value[25]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411148\"<div class=\"access-path\">$value[25]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"DTP PPH Final\"<div class=\"access-path\">$value[25]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>26<\/dfn> => <var>stdClass<\/var>#205 (2)<div class=\"access-path\">$value[26]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411149\"<div class=\"access-path\">$value[26]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (17) \"DTP PPH Non Migas\"<div class=\"access-path\">$value[26]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>27<\/dfn> => <var>stdClass<\/var>#206 (2)<div class=\"access-path\">$value[27]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411211\"<div class=\"access-path\">$value[27]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"PPN Dalam Negeri\"<div class=\"access-path\">$value[27]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>28<\/dfn> => <var>stdClass<\/var>#207 (2)<div class=\"access-path\">$value[28]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411212\"<div class=\"access-path\">$value[28]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (9) \"PPN Impor\"<div class=\"access-path\">$value[28]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>29<\/dfn> => <var>stdClass<\/var>#208 (2)<div class=\"access-path\">$value[29]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411219\"<div class=\"access-path\">$value[29]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"PPN Lainnya\"<div class=\"access-path\">$value[29]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>30<\/dfn> => <var>stdClass<\/var>#209 (2)<div class=\"access-path\">$value[30]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411221\"<div class=\"access-path\">$value[30]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"PPnBM dalam Negeri\"<div class=\"access-path\">$value[30]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>31<\/dfn> => <var>stdClass<\/var>#210 (2)<div class=\"access-path\">$value[31]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411222\"<div class=\"access-path\">$value[31]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"PPnBM Impor\"<div class=\"access-path\">$value[31]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>32<\/dfn> => <var>stdClass<\/var>#211 (2)<div class=\"access-path\">$value[32]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411229\"<div class=\"access-path\">$value[32]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PPnBM Lainnya\"<div class=\"access-path\">$value[32]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>33<\/dfn> => <var>stdClass<\/var>#212 (2)<div class=\"access-path\">$value[33]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411231\"<div class=\"access-path\">$value[33]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (20) \"DTP PPN Dalam Negeri\"<div class=\"access-path\">$value[33]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>34<\/dfn> => <var>stdClass<\/var>#213 (2)<div class=\"access-path\">$value[34]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411232\"<div class=\"access-path\">$value[34]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"DTP PPN Impor\"<div class=\"access-path\">$value[34]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>35<\/dfn> => <var>stdClass<\/var>#214 (2)<div class=\"access-path\">$value[35]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411239\"<div class=\"access-path\">$value[35]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (15) \"DTP PPN Lainnya\"<div class=\"access-path\">$value[35]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>36<\/dfn> => <var>stdClass<\/var>#215 (2)<div class=\"access-path\">$value[36]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411241\"<div class=\"access-path\">$value[36]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (29) \"DTP PPN Dalam Negeri Covid-19\"<div class=\"access-path\">$value[36]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>37<\/dfn> => <var>stdClass<\/var>#216 (2)<div class=\"access-path\">$value[37]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411242\"<div class=\"access-path\">$value[37]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (31) \"DTP PPNBM Dalam Negeri Covid-19\"<div class=\"access-path\">$value[37]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>38<\/dfn> => <var>stdClass<\/var>#217 (2)<div class=\"access-path\">$value[38]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411311\"<div class=\"access-path\">$value[38]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PBB Pedesaan\"<div class=\"access-path\">$value[38]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>39<\/dfn> => <var>stdClass<\/var>#218 (2)<div class=\"access-path\">$value[39]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411312\"<div class=\"access-path\">$value[39]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PBB Perkotaan\"<div class=\"access-path\">$value[39]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>40<\/dfn> => <var>stdClass<\/var>#219 (2)<div class=\"access-path\">$value[40]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411313\"<div class=\"access-path\">$value[40]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (14) \"PBB Perkebunan\"<div class=\"access-path\">$value[40]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>41<\/dfn> => <var>stdClass<\/var>#220 (2)<div class=\"access-path\">$value[41]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411314\"<div class=\"access-path\">$value[41]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PBB Kehutanan\"<div class=\"access-path\">$value[41]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>42<\/dfn> => <var>stdClass<\/var>#221 (2)<div class=\"access-path\">$value[42]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411315\"<div class=\"access-path\">$value[42]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (43) \"PBB Pertambangan untuk Mineral dan Batubara\"<div class=\"access-path\">$value[42]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>43<\/dfn> => <var>stdClass<\/var>#222 (2)<div class=\"access-path\">$value[43]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411316\"<div class=\"access-path\">$value[43]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (42) \"PBB Pertambangan untuk Minyak dan Gas Bumi\"<div class=\"access-path\">$value[43]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>44<\/dfn> => <var>stdClass<\/var>#223 (2)<div class=\"access-path\">$value[44]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411317\"<div class=\"access-path\">$value[44]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (42) \"Pertambangan untuk pertambangan panas bumi\"<div class=\"access-path\">$value[44]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>45<\/dfn> => <var>stdClass<\/var>#224 (2)<div class=\"access-path\">$value[45]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411319\"<div class=\"access-path\">$value[45]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"PBB Lainnya\"<div class=\"access-path\">$value[45]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>46<\/dfn> => <var>stdClass<\/var>#225 (2)<div class=\"access-path\">$value[46]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411411\"<div class=\"access-path\">$value[46]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (5) \"BPHTB\"<div class=\"access-path\">$value[46]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>47<\/dfn> => <var>stdClass<\/var>#226 (2)<div class=\"access-path\">$value[47]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411611\"<div class=\"access-path\">$value[47]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"Bea Meterai\"<div class=\"access-path\">$value[47]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>48<\/dfn> => <var>stdClass<\/var>#227 (2)<div class=\"access-path\">$value[48]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411612\"<div class=\"access-path\">$value[48]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (23) \"Penjualan Benda Materai\"<div class=\"access-path\">$value[48]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>49<\/dfn> => <var>stdClass<\/var>#228 (2)<div class=\"access-path\">$value[49]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411613\"<div class=\"access-path\">$value[49]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PPn Batu Bara\"<div class=\"access-path\">$value[49]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>50<\/dfn> => <var>stdClass<\/var>#229 (2)<div class=\"access-path\">$value[50]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411619\"<div class=\"access-path\">$value[50]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (4) \"PTLL\"<div class=\"access-path\">$value[50]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>51<\/dfn> => <var>stdClass<\/var>#230 (2)<div class=\"access-path\">$value[51]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411621\"<div class=\"access-path\">$value[51]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (25) \"Bunga\/Denda Penagihan PPh\"<div class=\"access-path\">$value[51]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>52<\/dfn> => <var>stdClass<\/var>#231 (2)<div class=\"access-path\">$value[52]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411622\"<div class=\"access-path\">$value[52]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (25) \"Bunga\/Denda Penagihan PPN\"<div class=\"access-path\">$value[52]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>53<\/dfn> => <var>stdClass<\/var>#232 (2)<div class=\"access-path\">$value[53]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411623\"<div class=\"access-path\">$value[53]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (27) \"Bunga\/Denda Penagihan PPnBM\"<div class=\"access-path\">$value[53]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>54<\/dfn> => <var>stdClass<\/var>#233 (2)<div class=\"access-path\">$value[54]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411624\"<div class=\"access-path\">$value[54]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (26) \"Bunga\/Denda Penagihan PTLL\"<div class=\"access-path\">$value[54]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selkjs":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (175)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#235 (1)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"000\"<div class=\"access-path\">$value[0]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#236 (1)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"100\"<div class=\"access-path\">$value[1]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#237 (1)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"101\"<div class=\"access-path\">$value[2]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#238 (1)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"102\"<div class=\"access-path\">$value[3]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#239 (1)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"103\"<div class=\"access-path\">$value[4]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#240 (1)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"104\"<div class=\"access-path\">$value[5]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#241 (1)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"105\"<div class=\"access-path\">$value[6]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#242 (1)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"106\"<div class=\"access-path\">$value[7]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#243 (1)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"107\"<div class=\"access-path\">$value[8]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#244 (1)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"108\"<div class=\"access-path\">$value[9]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#245 (1)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"111\"<div class=\"access-path\">$value[10]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#246 (1)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"121\"<div class=\"access-path\">$value[11]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#247 (1)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"122\"<div class=\"access-path\">$value[12]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#248 (1)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"199\"<div class=\"access-path\">$value[13]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#249 (1)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"200\"<div class=\"access-path\">$value[14]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#250 (1)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"201\"<div class=\"access-path\">$value[15]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#251 (1)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"202\"<div class=\"access-path\">$value[16]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#252 (1)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"203\"<div class=\"access-path\">$value[17]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#253 (1)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"204\"<div class=\"access-path\">$value[18]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#254 (1)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"205\"<div class=\"access-path\">$value[19]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#255 (1)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"206\"<div class=\"access-path\">$value[20]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#256 (1)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"207\"<div class=\"access-path\">$value[21]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>22<\/dfn> => <var>stdClass<\/var>#257 (1)<div class=\"access-path\">$value[22]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"208\"<div class=\"access-path\">$value[22]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>23<\/dfn> => <var>stdClass<\/var>#258 (1)<div class=\"access-path\">$value[23]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"209\"<div class=\"access-path\">$value[23]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>24<\/dfn> => <var>stdClass<\/var>#259 (1)<div class=\"access-path\">$value[24]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"210\"<div class=\"access-path\">$value[24]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>25<\/dfn> => <var>stdClass<\/var>#260 (1)<div class=\"access-path\">$value[25]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"211\"<div class=\"access-path\">$value[25]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>26<\/dfn> => <var>stdClass<\/var>#261 (1)<div class=\"access-path\">$value[26]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"212\"<div class=\"access-path\">$value[26]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>27<\/dfn> => <var>stdClass<\/var>#262 (1)<div class=\"access-path\">$value[27]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"213\"<div class=\"access-path\">$value[27]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>28<\/dfn> => <var>stdClass<\/var>#263 (1)<div class=\"access-path\">$value[28]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"214\"<div class=\"access-path\">$value[28]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>29<\/dfn> => <var>stdClass<\/var>#264 (1)<div class=\"access-path\">$value[29]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"215\"<div class=\"access-path\">$value[29]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>30<\/dfn> => <var>stdClass<\/var>#265 (1)<div class=\"access-path\">$value[30]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"216\"<div class=\"access-path\">$value[30]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>31<\/dfn> => <var>stdClass<\/var>#266 (1)<div class=\"access-path\">$value[31]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"217\"<div class=\"access-path\">$value[31]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>32<\/dfn> => <var>stdClass<\/var>#267 (1)<div class=\"access-path\">$value[32]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"218\"<div class=\"access-path\">$value[32]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>33<\/dfn> => <var>stdClass<\/var>#268 (1)<div class=\"access-path\">$value[33]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"219\"<div class=\"access-path\">$value[33]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>34<\/dfn> => <var>stdClass<\/var>#269 (1)<div class=\"access-path\">$value[34]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"220\"<div class=\"access-path\">$value[34]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>35<\/dfn> => <var>stdClass<\/var>#270 (1)<div class=\"access-path\">$value[35]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"221\"<div class=\"access-path\">$value[35]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>36<\/dfn> => <var>stdClass<\/var>#271 (1)<div class=\"access-path\">$value[36]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"222\"<div class=\"access-path\">$value[36]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>37<\/dfn> => <var>stdClass<\/var>#272 (1)<div class=\"access-path\">$value[37]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"223\"<div class=\"access-path\">$value[37]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>38<\/dfn> => <var>stdClass<\/var>#273 (1)<div class=\"access-path\">$value[38]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"224\"<div class=\"access-path\">$value[38]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>39<\/dfn> => <var>stdClass<\/var>#274 (1)<div class=\"access-path\">$value[39]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"225\"<div class=\"access-path\">$value[39]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>40<\/dfn> => <var>stdClass<\/var>#275 (1)<div class=\"access-path\">$value[40]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"226\"<div class=\"access-path\">$value[40]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>41<\/dfn> => <var>stdClass<\/var>#276 (1)<div class=\"access-path\">$value[41]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"227\"<div class=\"access-path\">$value[41]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>42<\/dfn> => <var>stdClass<\/var>#277 (1)<div class=\"access-path\">$value[42]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"228\"<div class=\"access-path\">$value[42]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>43<\/dfn> => <var>stdClass<\/var>#278 (1)<div class=\"access-path\">$value[43]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"229\"<div class=\"access-path\">$value[43]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>44<\/dfn> => <var>stdClass<\/var>#279 (1)<div class=\"access-path\">$value[44]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"230\"<div class=\"access-path\">$value[44]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>45<\/dfn> => <var>stdClass<\/var>#280 (1)<div class=\"access-path\">$value[45]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"231\"<div class=\"access-path\">$value[45]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>46<\/dfn> => <var>stdClass<\/var>#281 (1)<div class=\"access-path\">$value[46]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"232\"<div class=\"access-path\">$value[46]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>47<\/dfn> => <var>stdClass<\/var>#282 (1)<div class=\"access-path\">$value[47]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"233\"<div class=\"access-path\">$value[47]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>48<\/dfn> => <var>stdClass<\/var>#283 (1)<div class=\"access-path\">$value[48]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"234\"<div class=\"access-path\">$value[48]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>49<\/dfn> => <var>stdClass<\/var>#284 (1)<div class=\"access-path\">$value[49]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"235\"<div class=\"access-path\">$value[49]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>50<\/dfn> => <var>stdClass<\/var>#285 (1)<div class=\"access-path\">$value[50]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"236\"<div class=\"access-path\">$value[50]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>51<\/dfn> => <var>stdClass<\/var>#286 (1)<div class=\"access-path\">$value[51]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"237\"<div class=\"access-path\">$value[51]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>52<\/dfn> => <var>stdClass<\/var>#287 (1)<div class=\"access-path\">$value[52]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"238\"<div class=\"access-path\">$value[52]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>53<\/dfn> => <var>stdClass<\/var>#288 (1)<div class=\"access-path\">$value[53]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"239\"<div class=\"access-path\">$value[53]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>54<\/dfn> => <var>stdClass<\/var>#289 (1)<div class=\"access-path\">$value[54]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"240\"<div class=\"access-path\">$value[54]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>55<\/dfn> => <var>stdClass<\/var>#290 (1)<div class=\"access-path\">$value[55]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"241\"<div class=\"access-path\">$value[55]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>56<\/dfn> => <var>stdClass<\/var>#291 (1)<div class=\"access-path\">$value[56]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"242\"<div class=\"access-path\">$value[56]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>57<\/dfn> => <var>stdClass<\/var>#292 (1)<div class=\"access-path\">$value[57]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"243\"<div class=\"access-path\">$value[57]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>58<\/dfn> => <var>stdClass<\/var>#293 (1)<div class=\"access-path\">$value[58]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"244\"<div class=\"access-path\">$value[58]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>59<\/dfn> => <var>stdClass<\/var>#294 (1)<div class=\"access-path\">$value[59]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"245\"<div class=\"access-path\">$value[59]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>60<\/dfn> => <var>stdClass<\/var>#295 (1)<div class=\"access-path\">$value[60]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"246\"<div class=\"access-path\">$value[60]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>61<\/dfn> => <var>stdClass<\/var>#296 (1)<div class=\"access-path\">$value[61]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"247\"<div class=\"access-path\">$value[61]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>62<\/dfn> => <var>stdClass<\/var>#297 (1)<div class=\"access-path\">$value[62]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"248\"<div class=\"access-path\">$value[62]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>63<\/dfn> => <var>stdClass<\/var>#298 (1)<div class=\"access-path\">$value[63]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"249\"<div class=\"access-path\">$value[63]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>64<\/dfn> => <var>stdClass<\/var>#299 (1)<div class=\"access-path\">$value[64]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"250\"<div class=\"access-path\">$value[64]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>65<\/dfn> => <var>stdClass<\/var>#300 (1)<div class=\"access-path\">$value[65]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"251\"<div class=\"access-path\">$value[65]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>66<\/dfn> => <var>stdClass<\/var>#301 (1)<div class=\"access-path\">$value[66]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"252\"<div class=\"access-path\">$value[66]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>67<\/dfn> => <var>stdClass<\/var>#302 (1)<div class=\"access-path\">$value[67]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"253\"<div class=\"access-path\">$value[67]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>68<\/dfn> => <var>stdClass<\/var>#303 (1)<div class=\"access-path\">$value[68]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"254\"<div class=\"access-path\">$value[68]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>69<\/dfn> => <var>stdClass<\/var>#304 (1)<div class=\"access-path\">$value[69]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"255\"<div class=\"access-path\">$value[69]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>70<\/dfn> => <var>stdClass<\/var>#305 (1)<div class=\"access-path\">$value[70]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"256\"<div class=\"access-path\">$value[70]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>71<\/dfn> => <var>stdClass<\/var>#306 (1)<div class=\"access-path\">$value[71]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"257\"<div class=\"access-path\">$value[71]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>72<\/dfn> => <var>stdClass<\/var>#307 (1)<div class=\"access-path\">$value[72]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"258\"<div class=\"access-path\">$value[72]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>73<\/dfn> => <var>stdClass<\/var>#308 (1)<div class=\"access-path\">$value[73]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"259\"<div class=\"access-path\">$value[73]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>74<\/dfn> => <var>stdClass<\/var>#309 (1)<div class=\"access-path\">$value[74]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"260\"<div class=\"access-path\">$value[74]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>75<\/dfn> => <var>stdClass<\/var>#310 (1)<div class=\"access-path\">$value[75]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"261\"<div class=\"access-path\">$value[75]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>76<\/dfn> => <var>stdClass<\/var>#311 (1)<div class=\"access-path\">$value[76]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"262\"<div class=\"access-path\">$value[76]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>77<\/dfn> => <var>stdClass<\/var>#312 (1)<div class=\"access-path\">$value[77]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"263\"<div class=\"access-path\">$value[77]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>78<\/dfn> => <var>stdClass<\/var>#313 (1)<div class=\"access-path\">$value[78]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"264\"<div class=\"access-path\">$value[78]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>79<\/dfn> => <var>stdClass<\/var>#314 (1)<div class=\"access-path\">$value[79]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"265\"<div class=\"access-path\">$value[79]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>80<\/dfn> => <var>stdClass<\/var>#315 (1)<div class=\"access-path\">$value[80]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"266\"<div class=\"access-path\">$value[80]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>81<\/dfn> => <var>stdClass<\/var>#316 (1)<div class=\"access-path\">$value[81]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"267\"<div class=\"access-path\">$value[81]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>82<\/dfn> => <var>stdClass<\/var>#317 (1)<div class=\"access-path\">$value[82]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"268\"<div class=\"access-path\">$value[82]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>83<\/dfn> => <var>stdClass<\/var>#318 (1)<div class=\"access-path\">$value[83]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"269\"<div class=\"access-path\">$value[83]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>84<\/dfn> => <var>stdClass<\/var>#319 (1)<div class=\"access-path\">$value[84]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"270\"<div class=\"access-path\">$value[84]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>85<\/dfn> => <var>stdClass<\/var>#320 (1)<div class=\"access-path\">$value[85]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"271\"<div class=\"access-path\">$value[85]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>86<\/dfn> => <var>stdClass<\/var>#321 (1)<div class=\"access-path\">$value[86]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"272\"<div class=\"access-path\">$value[86]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>87<\/dfn> => <var>stdClass<\/var>#322 (1)<div class=\"access-path\">$value[87]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"273\"<div class=\"access-path\">$value[87]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>88<\/dfn> => <var>stdClass<\/var>#323 (1)<div class=\"access-path\">$value[88]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"274\"<div class=\"access-path\">$value[88]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>89<\/dfn> => <var>stdClass<\/var>#324 (1)<div class=\"access-path\">$value[89]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"275\"<div class=\"access-path\">$value[89]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>90<\/dfn> => <var>stdClass<\/var>#325 (1)<div class=\"access-path\">$value[90]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"276\"<div class=\"access-path\">$value[90]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>91<\/dfn> => <var>stdClass<\/var>#326 (1)<div class=\"access-path\">$value[91]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"277\"<div class=\"access-path\">$value[91]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>92<\/dfn> => <var>stdClass<\/var>#327 (1)<div class=\"access-path\">$value[92]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"278\"<div class=\"access-path\">$value[92]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>93<\/dfn> => <var>stdClass<\/var>#328 (1)<div class=\"access-path\">$value[93]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"279\"<div class=\"access-path\">$value[93]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>94<\/dfn> => <var>stdClass<\/var>#329 (1)<div class=\"access-path\">$value[94]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"280\"<div class=\"access-path\">$value[94]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>95<\/dfn> => <var>stdClass<\/var>#330 (1)<div class=\"access-path\">$value[95]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"281\"<div class=\"access-path\">$value[95]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>96<\/dfn> => <var>stdClass<\/var>#331 (1)<div class=\"access-path\">$value[96]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"282\"<div class=\"access-path\">$value[96]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>97<\/dfn> => <var>stdClass<\/var>#332 (1)<div class=\"access-path\">$value[97]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"283\"<div class=\"access-path\">$value[97]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>98<\/dfn> => <var>stdClass<\/var>#333 (1)<div class=\"access-path\">$value[98]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"284\"<div class=\"access-path\">$value[98]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>99<\/dfn> => <var>stdClass<\/var>#334 (1)<div class=\"access-path\">$value[99]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"285\"<div class=\"access-path\">$value[99]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>100<\/dfn> => <var>stdClass<\/var>#335 (1)<div class=\"access-path\">$value[100]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"286\"<div class=\"access-path\">$value[100]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>101<\/dfn> => <var>stdClass<\/var>#336 (1)<div class=\"access-path\">$value[101]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"287\"<div class=\"access-path\">$value[101]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>102<\/dfn> => <var>stdClass<\/var>#337 (1)<div class=\"access-path\">$value[102]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"288\"<div class=\"access-path\">$value[102]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>103<\/dfn> => <var>stdClass<\/var>#338 (1)<div class=\"access-path\">$value[103]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"289\"<div class=\"access-path\">$value[103]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>104<\/dfn> => <var>stdClass<\/var>#339 (1)<div class=\"access-path\">$value[104]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"290\"<div class=\"access-path\">$value[104]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>105<\/dfn> => <var>stdClass<\/var>#340 (1)<div class=\"access-path\">$value[105]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"291\"<div class=\"access-path\">$value[105]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>106<\/dfn> => <var>stdClass<\/var>#341 (1)<div class=\"access-path\">$value[106]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"292\"<div class=\"access-path\">$value[106]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>107<\/dfn> => <var>stdClass<\/var>#342 (1)<div class=\"access-path\">$value[107]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"293\"<div class=\"access-path\">$value[107]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>108<\/dfn> => <var>stdClass<\/var>#343 (1)<div class=\"access-path\">$value[108]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"294\"<div class=\"access-path\">$value[108]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>109<\/dfn> => <var>stdClass<\/var>#344 (1)<div class=\"access-path\">$value[109]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"295\"<div class=\"access-path\">$value[109]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>110<\/dfn> => <var>stdClass<\/var>#345 (1)<div class=\"access-path\">$value[110]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"296\"<div class=\"access-path\">$value[110]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>111<\/dfn> => <var>stdClass<\/var>#346 (1)<div class=\"access-path\">$value[111]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"297\"<div class=\"access-path\">$value[111]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>112<\/dfn> => <var>stdClass<\/var>#347 (1)<div class=\"access-path\">$value[112]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"298\"<div class=\"access-path\">$value[112]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>113<\/dfn> => <var>stdClass<\/var>#348 (1)<div class=\"access-path\">$value[113]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"299\"<div class=\"access-path\">$value[113]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>114<\/dfn> => <var>stdClass<\/var>#349 (1)<div class=\"access-path\">$value[114]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"300\"<div class=\"access-path\">$value[114]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>115<\/dfn> => <var>stdClass<\/var>#350 (1)<div class=\"access-path\">$value[115]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"301\"<div class=\"access-path\">$value[115]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>116<\/dfn> => <var>stdClass<\/var>#351 (1)<div class=\"access-path\">$value[116]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"302\"<div class=\"access-path\">$value[116]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>117<\/dfn> => <var>stdClass<\/var>#352 (1)<div class=\"access-path\">$value[117]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"310\"<div class=\"access-path\">$value[117]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>118<\/dfn> => <var>stdClass<\/var>#353 (1)<div class=\"access-path\">$value[118]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"311\"<div class=\"access-path\">$value[118]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>119<\/dfn> => <var>stdClass<\/var>#354 (1)<div class=\"access-path\">$value[119]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"312\"<div class=\"access-path\">$value[119]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>120<\/dfn> => <var>stdClass<\/var>#355 (1)<div class=\"access-path\">$value[120]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"313\"<div class=\"access-path\">$value[120]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>121<\/dfn> => <var>stdClass<\/var>#356 (1)<div class=\"access-path\">$value[121]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"314\"<div class=\"access-path\">$value[121]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>122<\/dfn> => <var>stdClass<\/var>#357 (1)<div class=\"access-path\">$value[122]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"317\"<div class=\"access-path\">$value[122]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>123<\/dfn> => <var>stdClass<\/var>#358 (1)<div class=\"access-path\">$value[123]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"318\"<div class=\"access-path\">$value[123]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>124<\/dfn> => <var>stdClass<\/var>#359 (1)<div class=\"access-path\">$value[124]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"319\"<div class=\"access-path\">$value[124]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>125<\/dfn> => <var>stdClass<\/var>#360 (1)<div class=\"access-path\">$value[125]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"320\"<div class=\"access-path\">$value[125]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>126<\/dfn> => <var>stdClass<\/var>#361 (1)<div class=\"access-path\">$value[126]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"321\"<div class=\"access-path\">$value[126]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>127<\/dfn> => <var>stdClass<\/var>#362 (1)<div class=\"access-path\">$value[127]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"322\"<div class=\"access-path\">$value[127]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>128<\/dfn> => <var>stdClass<\/var>#363 (1)<div class=\"access-path\">$value[128]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"323\"<div class=\"access-path\">$value[128]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>129<\/dfn> => <var>stdClass<\/var>#364 (1)<div class=\"access-path\">$value[129]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"324\"<div class=\"access-path\">$value[129]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>130<\/dfn> => <var>stdClass<\/var>#365 (1)<div class=\"access-path\">$value[130]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"390\"<div class=\"access-path\">$value[130]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>131<\/dfn> => <var>stdClass<\/var>#366 (1)<div class=\"access-path\">$value[131]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"400\"<div class=\"access-path\">$value[131]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>132<\/dfn> => <var>stdClass<\/var>#367 (1)<div class=\"access-path\">$value[132]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"401\"<div class=\"access-path\">$value[132]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>133<\/dfn> => <var>stdClass<\/var>#368 (1)<div class=\"access-path\">$value[133]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"402\"<div class=\"access-path\">$value[133]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>134<\/dfn> => <var>stdClass<\/var>#369 (1)<div class=\"access-path\">$value[134]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"403\"<div class=\"access-path\">$value[134]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>135<\/dfn> => <var>stdClass<\/var>#370 (1)<div class=\"access-path\">$value[135]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"404\"<div class=\"access-path\">$value[135]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>136<\/dfn> => <var>stdClass<\/var>#371 (1)<div class=\"access-path\">$value[136]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"405\"<div class=\"access-path\">$value[136]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>137<\/dfn> => <var>stdClass<\/var>#372 (1)<div class=\"access-path\">$value[137]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"406\"<div class=\"access-path\">$value[137]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>138<\/dfn> => <var>stdClass<\/var>#373 (1)<div class=\"access-path\">$value[138]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"407\"<div class=\"access-path\">$value[138]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>139<\/dfn> => <var>stdClass<\/var>#374 (1)<div class=\"access-path\">$value[139]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"408\"<div class=\"access-path\">$value[139]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>140<\/dfn> => <var>stdClass<\/var>#375 (1)<div class=\"access-path\">$value[140]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"409\"<div class=\"access-path\">$value[140]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>141<\/dfn> => <var>stdClass<\/var>#376 (1)<div class=\"access-path\">$value[141]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"410\"<div class=\"access-path\">$value[141]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>142<\/dfn> => <var>stdClass<\/var>#377 (1)<div class=\"access-path\">$value[142]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"411\"<div class=\"access-path\">$value[142]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>143<\/dfn> => <var>stdClass<\/var>#378 (1)<div class=\"access-path\">$value[143]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"412\"<div class=\"access-path\">$value[143]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>144<\/dfn> => <var>stdClass<\/var>#379 (1)<div class=\"access-path\">$value[144]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"413\"<div class=\"access-path\">$value[144]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>145<\/dfn> => <var>stdClass<\/var>#380 (1)<div class=\"access-path\">$value[145]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"414\"<div class=\"access-path\">$value[145]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>146<\/dfn> => <var>stdClass<\/var>#381 (1)<div class=\"access-path\">$value[146]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"415\"<div class=\"access-path\">$value[146]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>147<\/dfn> => <var>stdClass<\/var>#382 (1)<div class=\"access-path\">$value[147]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"416\"<div class=\"access-path\">$value[147]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>148<\/dfn> => <var>stdClass<\/var>#383 (1)<div class=\"access-path\">$value[148]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"417\"<div class=\"access-path\">$value[148]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>149<\/dfn> => <var>stdClass<\/var>#384 (1)<div class=\"access-path\">$value[149]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"418\"<div class=\"access-path\">$value[149]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>150<\/dfn> => <var>stdClass<\/var>#385 (1)<div class=\"access-path\">$value[150]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"419\"<div class=\"access-path\">$value[150]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>151<\/dfn> => <var>stdClass<\/var>#386 (1)<div class=\"access-path\">$value[151]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"420\"<div class=\"access-path\">$value[151]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>152<\/dfn> => <var>stdClass<\/var>#387 (1)<div class=\"access-path\">$value[152]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"421\"<div class=\"access-path\">$value[152]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>153<\/dfn> => <var>stdClass<\/var>#388 (1)<div class=\"access-path\">$value[153]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"422\"<div class=\"access-path\">$value[153]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>154<\/dfn> => <var>stdClass<\/var>#389 (1)<div class=\"access-path\">$value[154]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"423\"<div class=\"access-path\">$value[154]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>155<\/dfn> => <var>stdClass<\/var>#390 (1)<div class=\"access-path\">$value[155]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"424\"<div class=\"access-path\">$value[155]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>156<\/dfn> => <var>stdClass<\/var>#391 (1)<div class=\"access-path\">$value[156]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"425\"<div class=\"access-path\">$value[156]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>157<\/dfn> => <var>stdClass<\/var>#392 (1)<div class=\"access-path\">$value[157]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"427\"<div class=\"access-path\">$value[157]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>158<\/dfn> => <var>stdClass<\/var>#393 (1)<div class=\"access-path\">$value[158]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"428\"<div class=\"access-path\">$value[158]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>159<\/dfn> => <var>stdClass<\/var>#394 (1)<div class=\"access-path\">$value[159]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"499\"<div class=\"access-path\">$value[159]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>160<\/dfn> => <var>stdClass<\/var>#395 (1)<div class=\"access-path\">$value[160]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"500\"<div class=\"access-path\">$value[160]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>161<\/dfn> => <var>stdClass<\/var>#396 (1)<div class=\"access-path\">$value[161]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"501\"<div class=\"access-path\">$value[161]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>162<\/dfn> => <var>stdClass<\/var>#397 (1)<div class=\"access-path\">$value[162]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"510\"<div class=\"access-path\">$value[162]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>163<\/dfn> => <var>stdClass<\/var>#398 (1)<div class=\"access-path\">$value[163]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"511\"<div class=\"access-path\">$value[163]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>164<\/dfn> => <var>stdClass<\/var>#399 (1)<div class=\"access-path\">$value[164]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"512\"<div class=\"access-path\">$value[164]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>165<\/dfn> => <var>stdClass<\/var>#400 (1)<div class=\"access-path\">$value[165]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"513\"<div class=\"access-path\">$value[165]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>166<\/dfn> => <var>stdClass<\/var>#401 (1)<div class=\"access-path\">$value[166]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"514\"<div class=\"access-path\">$value[166]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>167<\/dfn> => <var>stdClass<\/var>#402 (1)<div class=\"access-path\">$value[167]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"515\"<div class=\"access-path\">$value[167]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>168<\/dfn> => <var>stdClass<\/var>#403 (1)<div class=\"access-path\">$value[168]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"516\"<div class=\"access-path\">$value[168]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>169<\/dfn> => <var>stdClass<\/var>#404 (1)<div class=\"access-path\">$value[169]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"900\"<div class=\"access-path\">$value[169]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>170<\/dfn> => <var>stdClass<\/var>#405 (1)<div class=\"access-path\">$value[170]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"901\"<div class=\"access-path\">$value[170]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>171<\/dfn> => <var>stdClass<\/var>#406 (1)<div class=\"access-path\">$value[171]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"902\"<div class=\"access-path\">$value[171]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>172<\/dfn> => <var>stdClass<\/var>#407 (1)<div class=\"access-path\">$value[172]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"910\"<div class=\"access-path\">$value[172]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>173<\/dfn> => <var>stdClass<\/var>#408 (1)<div class=\"access-path\">$value[173]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"920\"<div class=\"access-path\">$value[173]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>174<\/dfn> => <var>stdClass<\/var>#409 (1)<div class=\"access-path\">$value[174]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"930\"<div class=\"access-path\">$value[174]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","dtmapkjs":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (12)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#411 (6)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"01\"<div class=\"access-path\">$value[0]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"153193226838783\"<div class=\"access-path\">$value[0]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"162324655671151\"<div class=\"access-path\">$value[0]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[0]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"964130\"<div class=\"access-path\">$value[0]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"926187\"<div class=\"access-path\">$value[0]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#412 (6)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"02\"<div class=\"access-path\">$value[1]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"119419515571313\"<div class=\"access-path\">$value[1]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"117656017422686\"<div class=\"access-path\">$value[1]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[1]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"836587\"<div class=\"access-path\">$value[1]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"849167\"<div class=\"access-path\">$value[1]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#413 (6)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"03\"<div class=\"access-path\">$value[2]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"130324656773714\"<div class=\"access-path\">$value[2]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"151908567490454\"<div class=\"access-path\">$value[2]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[2]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (7) \"1099357\"<div class=\"access-path\">$value[2]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1112279\"<div class=\"access-path\">$value[2]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#414 (6)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"04\"<div class=\"access-path\">$value[3]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"224520570036594\"<div class=\"access-path\">$value[3]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"256229865814097\"<div class=\"access-path\">$value[3]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[3]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"911748\"<div class=\"access-path\">$value[3]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"877992\"<div class=\"access-path\">$value[3]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#415 (6)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"05\"<div class=\"access-path\">$value[4]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[4]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"142317308724531\"<div class=\"access-path\">$value[4]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[4]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[4]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"912007\"<div class=\"access-path\">$value[4]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#416 (6)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"06\"<div class=\"access-path\">$value[5]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[5]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"139837261465513\"<div class=\"access-path\">$value[5]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[5]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[5]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"930351\"<div class=\"access-path\">$value[5]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#417 (6)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"07\"<div class=\"access-path\">$value[6]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[6]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"138827778078352\"<div class=\"access-path\">$value[6]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[6]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[6]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"957637\"<div class=\"access-path\">$value[6]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#418 (6)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"08\"<div class=\"access-path\">$value[7]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[7]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"137864154782725\"<div class=\"access-path\">$value[7]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[7]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[7]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"991044\"<div class=\"access-path\">$value[7]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#419 (6)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"09\"<div class=\"access-path\">$value[8]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[8]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"140807912273049\"<div class=\"access-path\">$value[8]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[8]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[8]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"976139\"<div class=\"access-path\">$value[8]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#420 (6)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"10\"<div class=\"access-path\">$value[9]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[9]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"136104769648355\"<div class=\"access-path\">$value[9]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[9]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[9]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1001434\"<div class=\"access-path\">$value[9]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#421 (6)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"11\"<div class=\"access-path\">$value[10]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[10]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"146046768940592\"<div class=\"access-path\">$value[10]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[10]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[10]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1043589\"<div class=\"access-path\">$value[10]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#422 (6)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"12\"<div class=\"access-path\">$value[11]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[11]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"197947434424383\"<div class=\"access-path\">$value[11]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[11]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[11]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1194889\"<div class=\"access-path\">$value[11]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>"}},"session":{"__ci_last_regenerate":"<pre>1715934103<\/pre>","nip":"060086978","nipp":"196805201995031003","nama":"SUPARNO","kppadm":"000","jabatan":"Direktur","kantor":"Direktorat Ekstensifikasi dan Penilaian","seksi":"<pre><\/pre>","tpkantor":"KPDJP","kwladm":"991","isLogin":"<pre>1<\/pre>","_ci_previous_url":"http:\/\/localhost\/engineN\/home\/gmapkjs"},"post":{"kwl":"SEMUA","kdmap":"SEMUA","kjs":"SEMUA","kategori":"SEMUA","tahun":"2024"},"headers":{"Content-Type":"application\/x-www-form-urlencoded","Host":"localhost","Connection":"keep-alive","Cache-Control":"max-age=0","Sec-Ch-Ua":""Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"","Sec-Ch-Ua-Mobile":"?0","Sec-Ch-Ua-Platform":""Windows"","Upgrade-Insecure-Requests":"1","Origin":"http:\/\/localhost","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36","Accept":"text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,image\/apng,*\/*;q=0.8,application\/signed-exchange;v=b3;q=0.7","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"navigate","Sec-Fetch-User":"?1","Sec-Fetch-Dest":"document","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"debug-bar-tab=ci-timeline; debug-bar-state=minimized; ci_session=84lu6ft803rsdcfgu48sbqf5iskep16s"},"cookies":{"debug-bar-tab":"ci-timeline","debug-bar-state":"minimized","ci_session":"84lu6ft803rsdcfgu48sbqf5iskep16s"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715934140.586156.json b/writable/debugbar/debugbar_1715934140.586156.json deleted file mode 100644 index 6af672d7..00000000 --- a/writable/debugbar/debugbar_1715934140.586156.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/home\/gmapkjs","method":"POST","isAJAX":false,"startTime":1715934129.211648,"totalTime":11351.2,"totalMemory":"7.765","segmentDuration":1625,"segmentCount":7,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715934129.217617,"duration":0.01294088363647461},{"name":"Routing","component":"Timer","start":1715934129.23056,"duration":0.002866983413696289},{"name":"Before Filters","component":"Timer","start":1715934129.237921,"duration":2.193450927734375e-5},{"name":"Controller","component":"Timer","start":1715934129.237945,"duration":11.324930906295776},{"name":"Controller Constructor","component":"Timer","start":1715934129.237946,"duration":0.0043599605560302734},{"name":"After Filters","component":"Timer","start":1715934140.562891,"duration":0.0002570152282714844}]},{"title":"Database","titleSafe":"database","titleDetails":"(7 total Queries, 7 of them unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"0.35 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KANWIL"\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KODE" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:43","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:183","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKwl()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:43","qid":"5693f8ca676d70c9f770bf9a44e8b8be"},{"hover":"","class":"","duration":"0.2 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "BULAN"","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:35","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:184","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selBln()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:35","qid":"9466f47bd6fb6bc421b652efd55c6dae"},{"hover":"","class":"","duration":"0.2 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KPP"\n<strong>WHERE<\/strong> "KD_KANWIL" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KD_KPP" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:52","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:185","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKpp()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:52","qid":"b1c7bd79bf553029224b3164e0020864"},{"hover":"","class":"","duration":"0.54 ms","sql":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_KATEGORI KATEGORI, NM_KATEGORIPDK NAMA <strong>FROM<\/strong> REF_KLU\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_KATEGORI <strong>ASC<\/strong>","trace":[{"file":"APPPATH\\Models\\Mref.php:11","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:187","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKLU()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:11","qid":"89797781c71fb508c291e44a8c29c9bc"},{"hover":"","class":"","duration":"0.33 ms","sql":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_MAP,NM_MAP <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_MAP <strong>ASC<\/strong>","trace":[{"file":"APPPATH\\Models\\Mref.php:18","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:188","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selMAP()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:18","qid":"97a5e09ac0b35705b868d15f6e1a01c4"},{"hover":"","class":"","duration":"0.43 ms","sql":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_SETOR KJS <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>WHERE<\/strong> TRIM(KD_SETOR) <strong>IS<\/strong> <strong>NOT<\/strong> <strong>NULL<\/strong>\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_SETOR <strong>ASC<\/strong>","trace":[{"file":"APPPATH\\Models\\Mref.php:25","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:189","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKJS()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:25","qid":"513c6be7c81ebf33242a218f095c3ffe"},{"hover":"","class":"","duration":"3123.82 ms","sql":"<strong>SELECT<\/strong> \r\n BLNBYR,\r\n (<strong>SELECT<\/strong> <strong>SUM<\/strong>(JUMLAH)POPULASI <strong>FROM<\/strong> KEWAJIBAN_FLAGN\r\n <strong>WHERE<\/strong> KD_MAP <> 0 ) POPULASI,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN 1 ELSE 0 END) WPBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN 1 ELSE 0 END) WPBYRPAST,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN TOTAL ELSE 0 END) JMLBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN TOTAL ELSE 0 END) JMLBYRPAST\r\n <strong>FROM<\/strong> (<strong>SELECT<\/strong> NPWP,THNBYR,BLNBYR,<strong>SUM<\/strong>(TOTAL) TOTAL <strong>FROM<\/strong> DASHBOARD_BESAR_MAPKJS\r\n <strong>WHERE<\/strong> THNBYR BETWEEN '2023' <strong>AND<\/strong> '2024' \r\n <strong>GROUP<\/strong> <strong>BY<\/strong> NPWP,THNBYR,BLNBYR\r\n )\r\n <strong>GROUP<\/strong> <strong>BY<\/strong> BLNBYR <strong>ORDER<\/strong> <strong>BY<\/strong> BLNBYR <strong>ASC<\/strong>\r\n ","trace":[{"file":"APPPATH\\Models\\Mpemby.php:381","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:190","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mpemby->gmapkjs()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mpemby.php:381","qid":"c460dce760026319c9a3e074662e9e12"}]},"badgeValue":7,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715934137.385785,"duration":"0.045978"},{"name":"Query","component":"Database","start":1715934137.432348,"duration":"0.000348","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KANWIL"\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KODE" <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934137.433441,"duration":"0.000196","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "BULAN""},{"name":"Query","component":"Database","start":1715934137.43373,"duration":"0.000195","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KPP"\n<strong>WHERE<\/strong> "KD_KANWIL" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KD_KPP" <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934137.433962,"duration":"0.000542","query":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_KATEGORI KATEGORI, NM_KATEGORIPDK NAMA <strong>FROM<\/strong> REF_KLU\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_KATEGORI <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934137.434533,"duration":"0.000329","query":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_MAP,NM_MAP <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_MAP <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934137.434917,"duration":"0.000425","query":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_SETOR KJS <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>WHERE<\/strong> TRIM(KD_SETOR) <strong>IS<\/strong> <strong>NOT<\/strong> <strong>NULL<\/strong>\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_SETOR <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934137.435428,"duration":"3.123815","query":"<strong>SELECT<\/strong> \r\n BLNBYR,\r\n (<strong>SELECT<\/strong> <strong>SUM<\/strong>(JUMLAH)POPULASI <strong>FROM<\/strong> KEWAJIBAN_FLAGN\r\n <strong>WHERE<\/strong> KD_MAP <> 0 ) POPULASI,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN 1 ELSE 0 END) WPBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN 1 ELSE 0 END) WPBYRPAST,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN TOTAL ELSE 0 END) JMLBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN TOTAL ELSE 0 END) JMLBYRPAST\r\n <strong>FROM<\/strong> (<strong>SELECT<\/strong> NPWP,THNBYR,BLNBYR,<strong>SUM<\/strong>(TOTAL) TOTAL <strong>FROM<\/strong> DASHBOARD_BESAR_MAPKJS\r\n <strong>WHERE<\/strong> THNBYR BETWEEN '2023' <strong>AND<\/strong> '2024' \r\n <strong>GROUP<\/strong> <strong>BY<\/strong> NPWP,THNBYR,BLNBYR\r\n )\r\n <strong>GROUP<\/strong> <strong>BY<\/strong> BLNBYR <strong>ORDER<\/strong> <strong>BY<\/strong> BLNBYR <strong>ASC<\/strong>\r\n "}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[{"level":"info","msg":"Session: Class initialized using 'CodeIgniter\\Session\\Handlers\\FileHandler' driver."}]},"badgeValue":null,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":6,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"View: inc\/head.php","component":"Views","start":1715934140.559399,"duration":0.0011210441589355469},{"name":"View: inc\/navbar.php","component":"Views","start":1715934140.560791,"duration":0.0003590583801269531},{"name":"View: inc\/sidebar.php","component":"Views","start":1715934140.561288,"duration":0.0005919933319091797},{"name":"View: inc\/js.php","component":"Views","start":1715934140.562281,"duration":0.000286102294921875},{"name":"View: ppm\/gmapkjs.php","component":"Views","start":1715934140.561924,"duration":0.0007529258728027344},{"name":"View: inc\/footer.php","component":"Views","start":1715934140.562741,"duration":9.393692016601562e-5}]},{"title":"Files","titleSafe":"files","titleDetails":"( 178 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseBuilder.php","name":"BaseBuilder.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Builder.php","name":"Builder.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\HandlerInterface.php","name":"HandlerInterface.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Session\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Session\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Session\\Session.php","name":"Session.php"},{"path":"SYSTEMPATH\\Session\\SessionInterface.php","name":"SessionInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Traits\\ConditionalTrait.php","name":"ConditionalTrait.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Session.php","name":"Session.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\BaseController.php","name":"BaseController.php"},{"path":"APPPATH\\Controllers\\Home.php","name":"Home.php"},{"path":"APPPATH\\Helpers\\myhelper_helper.php","name":"myhelper_helper.php"},{"path":"APPPATH\\Models\\Mpemby.php","name":"Mpemby.php"},{"path":"APPPATH\\Models\\Mref.php","name":"Mref.php"},{"path":"APPPATH\\Views\\inc\\footer.php","name":"footer.php"},{"path":"APPPATH\\Views\\inc\\head.php","name":"head.php"},{"path":"APPPATH\\Views\\inc\\js.php","name":"js.php"},{"path":"APPPATH\\Views\\inc\\navbar.php","name":"navbar.php"},{"path":"APPPATH\\Views\\inc\\sidebar.php","name":"sidebar.php"},{"path":"APPPATH\\Views\\ppm\\gmapkjs.php","name":"gmapkjs.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerAwareTrait.php","name":"LoggerAwareTrait.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":178,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Home","method":"gmapkjs","paramCount":0,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":0,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"4.23","count":1},"dbquery":{"event":"dbquery","duration":"0.11","count":7}}},"badgeValue":8,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715934129.223681,"duration":0.004228115081787109},{"name":"Event: dbquery","component":"Events","start":1715934137.432701,"duration":2.47955322265625e-5},{"name":"Event: dbquery","component":"Events","start":1715934137.43364,"duration":1.3113021850585938e-5},{"name":"Event: dbquery","component":"Events","start":1715934137.433927,"duration":1.3828277587890625e-5},{"name":"Event: dbquery","component":"Events","start":1715934137.434505,"duration":6.9141387939453125e-6},{"name":"Event: dbquery","component":"Events","start":1715934137.434864,"duration":1.0967254638671875e-5},{"name":"Event: dbquery","component":"Events","start":1715934137.435343,"duration":5.9604644775390625e-6},{"name":"Event: dbquery","component":"Events","start":1715934140.559251,"duration":3.790855407714844e-5}]}],"vars":{"varData":{"View Data":{"kwlx":"SEMUA","kppx":"SEMUA","seksix":"SEMUA","nipx":"SEMUA","tahunx":"2024","bulanx":"01","bulan2x":"05","mapx":"SEMUA","kjsx":"SEMUA","kategorix":"SEMUA","selkwl":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (34)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#104 (3)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"010\"<div class=\"access-path\">$value[0]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"010\"<div class=\"access-path\">$value[0]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (15) \"Kanwil DJP Aceh\"<div class=\"access-path\">$value[0]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#107 (3)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"020\"<div class=\"access-path\">$value[1]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"020\"<div class=\"access-path\">$value[1]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (27) \"Kanwil DJP Sumatera Utara I\"<div class=\"access-path\">$value[1]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#108 (3)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"030\"<div class=\"access-path\">$value[2]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"030\"<div class=\"access-path\">$value[2]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"Kanwil DJP Sumatera Utara II\"<div class=\"access-path\">$value[2]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#109 (3)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"040\"<div class=\"access-path\">$value[3]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"040\"<div class=\"access-path\">$value[3]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (15) \"Kanwil DJP Riau\"<div class=\"access-path\">$value[3]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#110 (3)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"050\"<div class=\"access-path\">$value[4]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"050\"<div class=\"access-path\">$value[4]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (35) \"Kanwil DJP Sumatera Barat dan Jambi\"<div class=\"access-path\">$value[4]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#111 (3)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"060\"<div class=\"access-path\">$value[5]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"060\"<div class=\"access-path\">$value[5]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (57) \"Kanwil DJP Sumatera Selatan dan Kepulauan Bangka Belitung\"<div class=\"access-path\">$value[5]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#112 (3)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"070\"<div class=\"access-path\">$value[6]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"070\"<div class=\"access-path\">$value[6]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (31) \"Kanwil DJP Bengkulu dan Lampung\"<div class=\"access-path\">$value[6]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#113 (3)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"080\"<div class=\"access-path\">$value[7]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"080\"<div class=\"access-path\">$value[7]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Pusat\"<div class=\"access-path\">$value[7]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#114 (3)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"090\"<div class=\"access-path\">$value[8]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"090\"<div class=\"access-path\">$value[8]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Barat\"<div class=\"access-path\">$value[8]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#115 (3)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"100\"<div class=\"access-path\">$value[9]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"100\"<div class=\"access-path\">$value[9]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"Kanwil DJP Jakarta Selatan I\"<div class=\"access-path\">$value[9]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#116 (3)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"110\"<div class=\"access-path\">$value[10]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"110\"<div class=\"access-path\">$value[10]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Timur\"<div class=\"access-path\">$value[10]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#117 (3)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"120\"<div class=\"access-path\">$value[11]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"120\"<div class=\"access-path\">$value[11]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Utara\"<div class=\"access-path\">$value[11]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#118 (3)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"130\"<div class=\"access-path\">$value[12]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"130\"<div class=\"access-path\">$value[12]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jakarta Khusus\"<div class=\"access-path\">$value[12]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#119 (3)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"140\"<div class=\"access-path\">$value[13]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"140\"<div class=\"access-path\">$value[13]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (17) \"Kanwil DJP Banten\"<div class=\"access-path\">$value[13]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#120 (3)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"150\"<div class=\"access-path\">$value[14]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"150\"<div class=\"access-path\">$value[14]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (23) \"Kanwil DJP Jawa Barat I\"<div class=\"access-path\">$value[14]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#121 (3)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"160\"<div class=\"access-path\">$value[15]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"160\"<div class=\"access-path\">$value[15]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jawa Barat II\"<div class=\"access-path\">$value[15]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#122 (3)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"170\"<div class=\"access-path\">$value[16]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"170\"<div class=\"access-path\">$value[16]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jawa Tengah I\"<div class=\"access-path\">$value[16]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#123 (3)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"180\"<div class=\"access-path\">$value[17]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"180\"<div class=\"access-path\">$value[17]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jawa Tengah II\"<div class=\"access-path\">$value[17]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#124 (3)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"190\"<div class=\"access-path\">$value[18]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"190\"<div class=\"access-path\">$value[18]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (37) \"Kanwil DJP Daerah Istimewa Yogyakarta\"<div class=\"access-path\">$value[18]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#125 (3)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"200\"<div class=\"access-path\">$value[19]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"200\"<div class=\"access-path\">$value[19]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (23) \"Kanwil DJP Jawa Timur I\"<div class=\"access-path\">$value[19]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#126 (3)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"210\"<div class=\"access-path\">$value[20]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"210\"<div class=\"access-path\">$value[20]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jawa Timur II\"<div class=\"access-path\">$value[20]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#127 (3)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"220\"<div class=\"access-path\">$value[21]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"220\"<div class=\"access-path\">$value[21]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jawa Timur III\"<div class=\"access-path\">$value[21]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>22<\/dfn> => <var>stdClass<\/var>#128 (3)<div class=\"access-path\">$value[22]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"230\"<div class=\"access-path\">$value[22]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"230\"<div class=\"access-path\">$value[22]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (27) \"Kanwil DJP Kalimantan Barat\"<div class=\"access-path\">$value[22]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>23<\/dfn> => <var>stdClass<\/var>#129 (3)<div class=\"access-path\">$value[23]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"240\"<div class=\"access-path\">$value[23]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"240\"<div class=\"access-path\">$value[23]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (40) \"Kanwil DJP Kalimantan Selatan dan Tengah\"<div class=\"access-path\">$value[23]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>24<\/dfn> => <var>stdClass<\/var>#130 (3)<div class=\"access-path\">$value[24]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"250\"<div class=\"access-path\">$value[24]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"250\"<div class=\"access-path\">$value[24]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (37) \"Kanwil DJP Kalimantan Timur dan Utara\"<div class=\"access-path\">$value[24]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>25<\/dfn> => <var>stdClass<\/var>#131 (3)<div class=\"access-path\">$value[25]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"260\"<div class=\"access-path\">$value[25]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"260\"<div class=\"access-path\">$value[25]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (48) \"Kanwil DJP Sulawesi Selatan, Barat, dan Tenggara\"<div class=\"access-path\">$value[25]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>26<\/dfn> => <var>stdClass<\/var>#132 (3)<div class=\"access-path\">$value[26]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"270\"<div class=\"access-path\">$value[26]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"270\"<div class=\"access-path\">$value[26]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (62) \"Kanwil DJP Sulawesi Utara, Tengah, Gorontalo, dan Maluku Utara\"<div class=\"access-path\">$value[26]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>27<\/dfn> => <var>stdClass<\/var>#133 (3)<div class=\"access-path\">$value[27]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"280\"<div class=\"access-path\">$value[27]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"280\"<div class=\"access-path\">$value[27]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (15) \"Kanwil DJP Bali\"<div class=\"access-path\">$value[27]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>28<\/dfn> => <var>stdClass<\/var>#134 (3)<div class=\"access-path\">$value[28]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"290\"<div class=\"access-path\">$value[28]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"290\"<div class=\"access-path\">$value[28]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Nusa Tenggara\"<div class=\"access-path\">$value[28]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>29<\/dfn> => <var>stdClass<\/var>#135 (3)<div class=\"access-path\">$value[29]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"300\"<div class=\"access-path\">$value[29]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"300\"<div class=\"access-path\">$value[29]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (41) \"Kanwil DJP Papua, Papua Barat, dan Maluku\"<div class=\"access-path\">$value[29]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>30<\/dfn> => <var>stdClass<\/var>#136 (3)<div class=\"access-path\">$value[30]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"310\"<div class=\"access-path\">$value[30]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"310\"<div class=\"access-path\">$value[30]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"Kanwil DJP Wajib Pajak Besar\"<div class=\"access-path\">$value[30]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>31<\/dfn> => <var>stdClass<\/var>#137 (3)<div class=\"access-path\">$value[31]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"320\"<div class=\"access-path\">$value[31]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"320\"<div class=\"access-path\">$value[31]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (29) \"Kanwil DJP Jakarta Selatan II\"<div class=\"access-path\">$value[31]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>32<\/dfn> => <var>stdClass<\/var>#138 (3)<div class=\"access-path\">$value[32]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"330\"<div class=\"access-path\">$value[32]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"330\"<div class=\"access-path\">$value[32]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jawa Barat III\"<div class=\"access-path\">$value[32]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>33<\/dfn> => <var>stdClass<\/var>#139 (3)<div class=\"access-path\">$value[33]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"340\"<div class=\"access-path\">$value[33]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"340\"<div class=\"access-path\">$value[33]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Kepulauan Riau\"<div class=\"access-path\">$value[33]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selbulan":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (12)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#106 (3)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"01\"<div class=\"access-path\">$value[0]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (7) \"JANUARI\"<div class=\"access-path\">$value[0]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"JAN\"<div class=\"access-path\">$value[0]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#142 (3)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"02\"<div class=\"access-path\">$value[1]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (8) \"FEBRUARI\"<div class=\"access-path\">$value[1]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"FEB\"<div class=\"access-path\">$value[1]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#143 (3)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"03\"<div class=\"access-path\">$value[2]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (5) \"MARET\"<div class=\"access-path\">$value[2]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"MAR\"<div class=\"access-path\">$value[2]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#144 (3)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"04\"<div class=\"access-path\">$value[3]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (5) \"APRIL\"<div class=\"access-path\">$value[3]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"APR\"<div class=\"access-path\">$value[3]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#145 (3)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"05\"<div class=\"access-path\">$value[4]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (3) \"MEI\"<div class=\"access-path\">$value[4]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"MEI\"<div class=\"access-path\">$value[4]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#146 (3)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"06\"<div class=\"access-path\">$value[5]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (4) \"JUNI\"<div class=\"access-path\">$value[5]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"JUN\"<div class=\"access-path\">$value[5]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#147 (3)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"07\"<div class=\"access-path\">$value[6]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (4) \"JULI\"<div class=\"access-path\">$value[6]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"JUL\"<div class=\"access-path\">$value[6]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#148 (3)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"08\"<div class=\"access-path\">$value[7]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (7) \"AGUSTUS\"<div class=\"access-path\">$value[7]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (5) \"AGUST\"<div class=\"access-path\">$value[7]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#149 (3)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"09\"<div class=\"access-path\">$value[8]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (9) \"SEPTEMBER\"<div class=\"access-path\">$value[8]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"SEP\"<div class=\"access-path\">$value[8]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#150 (3)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"10\"<div class=\"access-path\">$value[9]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (7) \"OKTOBER\"<div class=\"access-path\">$value[9]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"OKT\"<div class=\"access-path\">$value[9]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#151 (3)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"11\"<div class=\"access-path\">$value[10]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (8) \"NOPEMBER\"<div class=\"access-path\">$value[10]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"NOP\"<div class=\"access-path\">$value[10]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#152 (3)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"12\"<div class=\"access-path\">$value[11]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (8) \"DESEMBER\"<div class=\"access-path\">$value[11]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"DES\"<div class=\"access-path\">$value[11]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selkpp":"<div class=\"kint-rich\"><dl><dt><dfn>$value<\/dfn> <var>array<\/var> (0)<\/dt><\/dl><\/div>","selklu":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (22)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#155 (2)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"A\"<div class=\"access-path\">$value[0]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (9) \"PERTANIAN\"<div class=\"access-path\">$value[0]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#156 (2)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"B\"<div class=\"access-path\">$value[1]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (27) \"PERTAMBANGAN DAN PENGGALIAN\"<div class=\"access-path\">$value[1]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#157 (2)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"C\"<div class=\"access-path\">$value[2]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (19) \"INDUSTRI PENGOLAHAN\"<div class=\"access-path\">$value[2]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#158 (2)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"D\"<div class=\"access-path\">$value[3]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (17) \"PENGADAAN LISTRIK\"<div class=\"access-path\">$value[3]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#159 (2)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"E\"<div class=\"access-path\">$value[4]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (13) \"TREATMENT AIR\"<div class=\"access-path\">$value[4]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#160 (2)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"F\"<div class=\"access-path\">$value[5]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (10) \"KONSTRUKSI\"<div class=\"access-path\">$value[5]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#161 (2)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"G\"<div class=\"access-path\">$value[6]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"PERDAGANGAN BESAR DAN ECERAN\"<div class=\"access-path\">$value[6]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#162 (2)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"H\"<div class=\"access-path\">$value[7]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"PENGANGKUTAN DAN PERGUDANGAN\"<div class=\"access-path\">$value[7]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#163 (2)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"I\"<div class=\"access-path\">$value[8]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (47) \"PENYEDIAAN AKOMODASI DAN PENYEDIAAN MAKAN MINUM\"<div class=\"access-path\">$value[8]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#164 (2)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"J\"<div class=\"access-path\">$value[9]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"INFORMASI DAN KOMUNIKASI\"<div class=\"access-path\">$value[9]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#165 (2)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"K\"<div class=\"access-path\">$value[10]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (31) \"AKTIVITAS KEUANGAN DAN ASURANSI\"<div class=\"access-path\">$value[10]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#166 (2)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"L\"<div class=\"access-path\">$value[11]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (10) \"REAL ESTAT\"<div class=\"access-path\">$value[11]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#167 (2)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"M\"<div class=\"access-path\">$value[12]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (21) \"AKTIVITAS PROFESIONAL\"<div class=\"access-path\">$value[12]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#168 (2)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"N\"<div class=\"access-path\">$value[13]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (54) \"AKTIVITAS PENYEWAAN DAN SEWA GUNA USAHA TANPA HAK OPSI\"<div class=\"access-path\">$value[13]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#169 (2)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"O\"<div class=\"access-path\">$value[14]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"ADMINISTRASI PEMERINTAHAN\"<div class=\"access-path\">$value[14]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#170 (2)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"P\"<div class=\"access-path\">$value[15]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (10) \"PENDIDIKAN\"<div class=\"access-path\">$value[15]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#171 (2)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"Q\"<div class=\"access-path\">$value[16]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (48) \"AKTIVITAS KESEHATAN MANUSIA DAN AKTIVITAS SOSIAL\"<div class=\"access-path\">$value[16]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#172 (2)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"R\"<div class=\"access-path\">$value[17]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (8) \"KESENIAN\"<div class=\"access-path\">$value[17]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#173 (2)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"S\"<div class=\"access-path\">$value[18]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (22) \"AKTIVITAS JASA LAINNYA\"<div class=\"access-path\">$value[18]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#174 (2)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"T\"<div class=\"access-path\">$value[19]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (44) \"AKTIVITAS RUMAH TANGGA SEBAGAI PEMBERI KERJA\"<div class=\"access-path\">$value[19]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#175 (2)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"U\"<div class=\"access-path\">$value[20]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (68) \"AKTIVITAS BADAN INTERNASIONAL DAN BADAN EKSTRA INTERNASIONAL LAINNYA\"<div class=\"access-path\">$value[20]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#176 (2)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"Z\"<div class=\"access-path\">$value[21]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (14) \"PEJABAT NEGARA\"<div class=\"access-path\">$value[21]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selmap":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (55)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#178 (2)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411111\"<div class=\"access-path\">$value[0]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (15) \"PPh Minyak Bumi\"<div class=\"access-path\">$value[0]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#179 (2)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411112\"<div class=\"access-path\">$value[1]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Gas Alam\"<div class=\"access-path\">$value[1]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#180 (2)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411113\"<div class=\"access-path\">$value[2]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (23) \"PPh Minyak Bumi Lainnya\"<div class=\"access-path\">$value[2]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#181 (2)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411119\"<div class=\"access-path\">$value[3]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (17) \"PPh Migas Lainnya\"<div class=\"access-path\">$value[3]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#182 (2)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411121\"<div class=\"access-path\">$value[4]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 21\"<div class=\"access-path\">$value[4]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#183 (2)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411122\"<div class=\"access-path\">$value[5]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 22\"<div class=\"access-path\">$value[5]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#184 (2)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411123\"<div class=\"access-path\">$value[6]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"PPh Pasal 22 Impor\"<div class=\"access-path\">$value[6]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#185 (2)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411124\"<div class=\"access-path\">$value[7]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 23\"<div class=\"access-path\">$value[7]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#186 (2)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411125\"<div class=\"access-path\">$value[8]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"PPh Pasal 25\/29 OP\"<div class=\"access-path\">$value[8]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#187 (2)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411126\"<div class=\"access-path\">$value[9]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (21) \"PPh Pasal 25\/29 Badan\"<div class=\"access-path\">$value[9]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#188 (2)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411127\"<div class=\"access-path\">$value[10]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 26\"<div class=\"access-path\">$value[10]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#189 (2)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411128\"<div class=\"access-path\">$value[11]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (9) \"PPh Final\"<div class=\"access-path\">$value[11]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#190 (2)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411129\"<div class=\"access-path\">$value[12]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (21) \"PPh Non Migas Lainnya\"<div class=\"access-path\">$value[12]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#191 (2)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411131\"<div class=\"access-path\">$value[13]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"Fiskal Luar Negeri\"<div class=\"access-path\">$value[13]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#192 (2)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411141\"<div class=\"access-path\">$value[14]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 21\"<div class=\"access-path\">$value[14]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#193 (2)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411141\"<div class=\"access-path\">$value[15]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[15]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#194 (2)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411142\"<div class=\"access-path\">$value[16]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 22\"<div class=\"access-path\">$value[16]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#195 (2)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411143\"<div class=\"access-path\">$value[17]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (22) \"DTP PPH Pasal 22 Impor\"<div class=\"access-path\">$value[17]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#196 (2)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411144\"<div class=\"access-path\">$value[18]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[18]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#197 (2)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411144\"<div class=\"access-path\">$value[19]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 23\"<div class=\"access-path\">$value[19]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#198 (2)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411145\"<div class=\"access-path\">$value[20]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (22) \"DTP PPH Pasal 25\/29 OP\"<div class=\"access-path\">$value[20]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#199 (2)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411146\"<div class=\"access-path\">$value[21]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (25) \"DTP PPH Pasal 25\/29 Badan\"<div class=\"access-path\">$value[21]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>22<\/dfn> => <var>stdClass<\/var>#200 (2)<div class=\"access-path\">$value[22]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411146\"<div class=\"access-path\">$value[22]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[22]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>23<\/dfn> => <var>stdClass<\/var>#201 (2)<div class=\"access-path\">$value[23]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411147\"<div class=\"access-path\">$value[23]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 26\"<div class=\"access-path\">$value[23]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>24<\/dfn> => <var>stdClass<\/var>#202 (2)<div class=\"access-path\">$value[24]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411147\"<div class=\"access-path\">$value[24]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[24]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>25<\/dfn> => <var>stdClass<\/var>#203 (2)<div class=\"access-path\">$value[25]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411148\"<div class=\"access-path\">$value[25]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"DTP PPH Final\"<div class=\"access-path\">$value[25]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>26<\/dfn> => <var>stdClass<\/var>#204 (2)<div class=\"access-path\">$value[26]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411149\"<div class=\"access-path\">$value[26]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (17) \"DTP PPH Non Migas\"<div class=\"access-path\">$value[26]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>27<\/dfn> => <var>stdClass<\/var>#205 (2)<div class=\"access-path\">$value[27]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411211\"<div class=\"access-path\">$value[27]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"PPN Dalam Negeri\"<div class=\"access-path\">$value[27]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>28<\/dfn> => <var>stdClass<\/var>#206 (2)<div class=\"access-path\">$value[28]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411212\"<div class=\"access-path\">$value[28]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (9) \"PPN Impor\"<div class=\"access-path\">$value[28]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>29<\/dfn> => <var>stdClass<\/var>#207 (2)<div class=\"access-path\">$value[29]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411219\"<div class=\"access-path\">$value[29]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"PPN Lainnya\"<div class=\"access-path\">$value[29]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>30<\/dfn> => <var>stdClass<\/var>#208 (2)<div class=\"access-path\">$value[30]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411221\"<div class=\"access-path\">$value[30]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"PPnBM dalam Negeri\"<div class=\"access-path\">$value[30]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>31<\/dfn> => <var>stdClass<\/var>#209 (2)<div class=\"access-path\">$value[31]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411222\"<div class=\"access-path\">$value[31]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"PPnBM Impor\"<div class=\"access-path\">$value[31]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>32<\/dfn> => <var>stdClass<\/var>#210 (2)<div class=\"access-path\">$value[32]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411229\"<div class=\"access-path\">$value[32]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PPnBM Lainnya\"<div class=\"access-path\">$value[32]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>33<\/dfn> => <var>stdClass<\/var>#211 (2)<div class=\"access-path\">$value[33]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411231\"<div class=\"access-path\">$value[33]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (20) \"DTP PPN Dalam Negeri\"<div class=\"access-path\">$value[33]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>34<\/dfn> => <var>stdClass<\/var>#212 (2)<div class=\"access-path\">$value[34]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411232\"<div class=\"access-path\">$value[34]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"DTP PPN Impor\"<div class=\"access-path\">$value[34]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>35<\/dfn> => <var>stdClass<\/var>#213 (2)<div class=\"access-path\">$value[35]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411239\"<div class=\"access-path\">$value[35]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (15) \"DTP PPN Lainnya\"<div class=\"access-path\">$value[35]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>36<\/dfn> => <var>stdClass<\/var>#214 (2)<div class=\"access-path\">$value[36]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411241\"<div class=\"access-path\">$value[36]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (29) \"DTP PPN Dalam Negeri Covid-19\"<div class=\"access-path\">$value[36]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>37<\/dfn> => <var>stdClass<\/var>#215 (2)<div class=\"access-path\">$value[37]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411242\"<div class=\"access-path\">$value[37]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (31) \"DTP PPNBM Dalam Negeri Covid-19\"<div class=\"access-path\">$value[37]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>38<\/dfn> => <var>stdClass<\/var>#216 (2)<div class=\"access-path\">$value[38]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411311\"<div class=\"access-path\">$value[38]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PBB Pedesaan\"<div class=\"access-path\">$value[38]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>39<\/dfn> => <var>stdClass<\/var>#217 (2)<div class=\"access-path\">$value[39]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411312\"<div class=\"access-path\">$value[39]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PBB Perkotaan\"<div class=\"access-path\">$value[39]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>40<\/dfn> => <var>stdClass<\/var>#218 (2)<div class=\"access-path\">$value[40]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411313\"<div class=\"access-path\">$value[40]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (14) \"PBB Perkebunan\"<div class=\"access-path\">$value[40]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>41<\/dfn> => <var>stdClass<\/var>#219 (2)<div class=\"access-path\">$value[41]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411314\"<div class=\"access-path\">$value[41]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PBB Kehutanan\"<div class=\"access-path\">$value[41]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>42<\/dfn> => <var>stdClass<\/var>#220 (2)<div class=\"access-path\">$value[42]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411315\"<div class=\"access-path\">$value[42]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (43) \"PBB Pertambangan untuk Mineral dan Batubara\"<div class=\"access-path\">$value[42]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>43<\/dfn> => <var>stdClass<\/var>#221 (2)<div class=\"access-path\">$value[43]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411316\"<div class=\"access-path\">$value[43]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (42) \"PBB Pertambangan untuk Minyak dan Gas Bumi\"<div class=\"access-path\">$value[43]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>44<\/dfn> => <var>stdClass<\/var>#222 (2)<div class=\"access-path\">$value[44]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411317\"<div class=\"access-path\">$value[44]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (42) \"Pertambangan untuk pertambangan panas bumi\"<div class=\"access-path\">$value[44]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>45<\/dfn> => <var>stdClass<\/var>#223 (2)<div class=\"access-path\">$value[45]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411319\"<div class=\"access-path\">$value[45]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"PBB Lainnya\"<div class=\"access-path\">$value[45]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>46<\/dfn> => <var>stdClass<\/var>#224 (2)<div class=\"access-path\">$value[46]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411411\"<div class=\"access-path\">$value[46]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (5) \"BPHTB\"<div class=\"access-path\">$value[46]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>47<\/dfn> => <var>stdClass<\/var>#225 (2)<div class=\"access-path\">$value[47]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411611\"<div class=\"access-path\">$value[47]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"Bea Meterai\"<div class=\"access-path\">$value[47]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>48<\/dfn> => <var>stdClass<\/var>#226 (2)<div class=\"access-path\">$value[48]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411612\"<div class=\"access-path\">$value[48]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (23) \"Penjualan Benda Materai\"<div class=\"access-path\">$value[48]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>49<\/dfn> => <var>stdClass<\/var>#227 (2)<div class=\"access-path\">$value[49]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411613\"<div class=\"access-path\">$value[49]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PPn Batu Bara\"<div class=\"access-path\">$value[49]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>50<\/dfn> => <var>stdClass<\/var>#228 (2)<div class=\"access-path\">$value[50]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411619\"<div class=\"access-path\">$value[50]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (4) \"PTLL\"<div class=\"access-path\">$value[50]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>51<\/dfn> => <var>stdClass<\/var>#229 (2)<div class=\"access-path\">$value[51]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411621\"<div class=\"access-path\">$value[51]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (25) \"Bunga\/Denda Penagihan PPh\"<div class=\"access-path\">$value[51]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>52<\/dfn> => <var>stdClass<\/var>#230 (2)<div class=\"access-path\">$value[52]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411622\"<div class=\"access-path\">$value[52]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (25) \"Bunga\/Denda Penagihan PPN\"<div class=\"access-path\">$value[52]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>53<\/dfn> => <var>stdClass<\/var>#231 (2)<div class=\"access-path\">$value[53]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411623\"<div class=\"access-path\">$value[53]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (27) \"Bunga\/Denda Penagihan PPnBM\"<div class=\"access-path\">$value[53]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>54<\/dfn> => <var>stdClass<\/var>#232 (2)<div class=\"access-path\">$value[54]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411624\"<div class=\"access-path\">$value[54]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (26) \"Bunga\/Denda Penagihan PTLL\"<div class=\"access-path\">$value[54]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selkjs":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (175)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#234 (1)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"000\"<div class=\"access-path\">$value[0]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#235 (1)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"100\"<div class=\"access-path\">$value[1]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#236 (1)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"101\"<div class=\"access-path\">$value[2]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#237 (1)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"102\"<div class=\"access-path\">$value[3]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#238 (1)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"103\"<div class=\"access-path\">$value[4]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#239 (1)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"104\"<div class=\"access-path\">$value[5]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#240 (1)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"105\"<div class=\"access-path\">$value[6]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#241 (1)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"106\"<div class=\"access-path\">$value[7]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#242 (1)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"107\"<div class=\"access-path\">$value[8]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#243 (1)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"108\"<div class=\"access-path\">$value[9]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#244 (1)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"111\"<div class=\"access-path\">$value[10]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#245 (1)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"121\"<div class=\"access-path\">$value[11]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#246 (1)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"122\"<div class=\"access-path\">$value[12]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#247 (1)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"199\"<div class=\"access-path\">$value[13]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#248 (1)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"200\"<div class=\"access-path\">$value[14]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#249 (1)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"201\"<div class=\"access-path\">$value[15]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#250 (1)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"202\"<div class=\"access-path\">$value[16]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#251 (1)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"203\"<div class=\"access-path\">$value[17]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#252 (1)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"204\"<div class=\"access-path\">$value[18]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#253 (1)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"205\"<div class=\"access-path\">$value[19]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#254 (1)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"206\"<div class=\"access-path\">$value[20]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#255 (1)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"207\"<div class=\"access-path\">$value[21]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>22<\/dfn> => <var>stdClass<\/var>#256 (1)<div class=\"access-path\">$value[22]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"208\"<div class=\"access-path\">$value[22]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>23<\/dfn> => <var>stdClass<\/var>#257 (1)<div class=\"access-path\">$value[23]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"209\"<div class=\"access-path\">$value[23]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>24<\/dfn> => <var>stdClass<\/var>#258 (1)<div class=\"access-path\">$value[24]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"210\"<div class=\"access-path\">$value[24]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>25<\/dfn> => <var>stdClass<\/var>#259 (1)<div class=\"access-path\">$value[25]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"211\"<div class=\"access-path\">$value[25]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>26<\/dfn> => <var>stdClass<\/var>#260 (1)<div class=\"access-path\">$value[26]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"212\"<div class=\"access-path\">$value[26]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>27<\/dfn> => <var>stdClass<\/var>#261 (1)<div class=\"access-path\">$value[27]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"213\"<div class=\"access-path\">$value[27]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>28<\/dfn> => <var>stdClass<\/var>#262 (1)<div class=\"access-path\">$value[28]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"214\"<div class=\"access-path\">$value[28]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>29<\/dfn> => <var>stdClass<\/var>#263 (1)<div class=\"access-path\">$value[29]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"215\"<div class=\"access-path\">$value[29]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>30<\/dfn> => <var>stdClass<\/var>#264 (1)<div class=\"access-path\">$value[30]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"216\"<div class=\"access-path\">$value[30]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>31<\/dfn> => <var>stdClass<\/var>#265 (1)<div class=\"access-path\">$value[31]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"217\"<div class=\"access-path\">$value[31]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>32<\/dfn> => <var>stdClass<\/var>#266 (1)<div class=\"access-path\">$value[32]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"218\"<div class=\"access-path\">$value[32]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>33<\/dfn> => <var>stdClass<\/var>#267 (1)<div class=\"access-path\">$value[33]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"219\"<div class=\"access-path\">$value[33]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>34<\/dfn> => <var>stdClass<\/var>#268 (1)<div class=\"access-path\">$value[34]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"220\"<div class=\"access-path\">$value[34]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>35<\/dfn> => <var>stdClass<\/var>#269 (1)<div class=\"access-path\">$value[35]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"221\"<div class=\"access-path\">$value[35]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>36<\/dfn> => <var>stdClass<\/var>#270 (1)<div class=\"access-path\">$value[36]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"222\"<div class=\"access-path\">$value[36]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>37<\/dfn> => <var>stdClass<\/var>#271 (1)<div class=\"access-path\">$value[37]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"223\"<div class=\"access-path\">$value[37]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>38<\/dfn> => <var>stdClass<\/var>#272 (1)<div class=\"access-path\">$value[38]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"224\"<div class=\"access-path\">$value[38]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>39<\/dfn> => <var>stdClass<\/var>#273 (1)<div class=\"access-path\">$value[39]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"225\"<div class=\"access-path\">$value[39]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>40<\/dfn> => <var>stdClass<\/var>#274 (1)<div class=\"access-path\">$value[40]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"226\"<div class=\"access-path\">$value[40]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>41<\/dfn> => <var>stdClass<\/var>#275 (1)<div class=\"access-path\">$value[41]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"227\"<div class=\"access-path\">$value[41]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>42<\/dfn> => <var>stdClass<\/var>#276 (1)<div class=\"access-path\">$value[42]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"228\"<div class=\"access-path\">$value[42]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>43<\/dfn> => <var>stdClass<\/var>#277 (1)<div class=\"access-path\">$value[43]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"229\"<div class=\"access-path\">$value[43]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>44<\/dfn> => <var>stdClass<\/var>#278 (1)<div class=\"access-path\">$value[44]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"230\"<div class=\"access-path\">$value[44]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>45<\/dfn> => <var>stdClass<\/var>#279 (1)<div class=\"access-path\">$value[45]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"231\"<div class=\"access-path\">$value[45]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>46<\/dfn> => <var>stdClass<\/var>#280 (1)<div class=\"access-path\">$value[46]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"232\"<div class=\"access-path\">$value[46]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>47<\/dfn> => <var>stdClass<\/var>#281 (1)<div class=\"access-path\">$value[47]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"233\"<div class=\"access-path\">$value[47]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>48<\/dfn> => <var>stdClass<\/var>#282 (1)<div class=\"access-path\">$value[48]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"234\"<div class=\"access-path\">$value[48]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>49<\/dfn> => <var>stdClass<\/var>#283 (1)<div class=\"access-path\">$value[49]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"235\"<div class=\"access-path\">$value[49]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>50<\/dfn> => <var>stdClass<\/var>#284 (1)<div class=\"access-path\">$value[50]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"236\"<div class=\"access-path\">$value[50]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>51<\/dfn> => <var>stdClass<\/var>#285 (1)<div class=\"access-path\">$value[51]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"237\"<div class=\"access-path\">$value[51]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>52<\/dfn> => <var>stdClass<\/var>#286 (1)<div class=\"access-path\">$value[52]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"238\"<div class=\"access-path\">$value[52]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>53<\/dfn> => <var>stdClass<\/var>#287 (1)<div class=\"access-path\">$value[53]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"239\"<div class=\"access-path\">$value[53]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>54<\/dfn> => <var>stdClass<\/var>#288 (1)<div class=\"access-path\">$value[54]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"240\"<div class=\"access-path\">$value[54]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>55<\/dfn> => <var>stdClass<\/var>#289 (1)<div class=\"access-path\">$value[55]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"241\"<div class=\"access-path\">$value[55]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>56<\/dfn> => <var>stdClass<\/var>#290 (1)<div class=\"access-path\">$value[56]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"242\"<div class=\"access-path\">$value[56]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>57<\/dfn> => <var>stdClass<\/var>#291 (1)<div class=\"access-path\">$value[57]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"243\"<div class=\"access-path\">$value[57]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>58<\/dfn> => <var>stdClass<\/var>#292 (1)<div class=\"access-path\">$value[58]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"244\"<div class=\"access-path\">$value[58]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>59<\/dfn> => <var>stdClass<\/var>#293 (1)<div class=\"access-path\">$value[59]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"245\"<div class=\"access-path\">$value[59]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>60<\/dfn> => <var>stdClass<\/var>#294 (1)<div class=\"access-path\">$value[60]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"246\"<div class=\"access-path\">$value[60]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>61<\/dfn> => <var>stdClass<\/var>#295 (1)<div class=\"access-path\">$value[61]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"247\"<div class=\"access-path\">$value[61]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>62<\/dfn> => <var>stdClass<\/var>#296 (1)<div class=\"access-path\">$value[62]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"248\"<div class=\"access-path\">$value[62]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>63<\/dfn> => <var>stdClass<\/var>#297 (1)<div class=\"access-path\">$value[63]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"249\"<div class=\"access-path\">$value[63]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>64<\/dfn> => <var>stdClass<\/var>#298 (1)<div class=\"access-path\">$value[64]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"250\"<div class=\"access-path\">$value[64]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>65<\/dfn> => <var>stdClass<\/var>#299 (1)<div class=\"access-path\">$value[65]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"251\"<div class=\"access-path\">$value[65]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>66<\/dfn> => <var>stdClass<\/var>#300 (1)<div class=\"access-path\">$value[66]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"252\"<div class=\"access-path\">$value[66]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>67<\/dfn> => <var>stdClass<\/var>#301 (1)<div class=\"access-path\">$value[67]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"253\"<div class=\"access-path\">$value[67]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>68<\/dfn> => <var>stdClass<\/var>#302 (1)<div class=\"access-path\">$value[68]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"254\"<div class=\"access-path\">$value[68]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>69<\/dfn> => <var>stdClass<\/var>#303 (1)<div class=\"access-path\">$value[69]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"255\"<div class=\"access-path\">$value[69]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>70<\/dfn> => <var>stdClass<\/var>#304 (1)<div class=\"access-path\">$value[70]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"256\"<div class=\"access-path\">$value[70]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>71<\/dfn> => <var>stdClass<\/var>#305 (1)<div class=\"access-path\">$value[71]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"257\"<div class=\"access-path\">$value[71]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>72<\/dfn> => <var>stdClass<\/var>#306 (1)<div class=\"access-path\">$value[72]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"258\"<div class=\"access-path\">$value[72]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>73<\/dfn> => <var>stdClass<\/var>#307 (1)<div class=\"access-path\">$value[73]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"259\"<div class=\"access-path\">$value[73]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>74<\/dfn> => <var>stdClass<\/var>#308 (1)<div class=\"access-path\">$value[74]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"260\"<div class=\"access-path\">$value[74]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>75<\/dfn> => <var>stdClass<\/var>#309 (1)<div class=\"access-path\">$value[75]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"261\"<div class=\"access-path\">$value[75]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>76<\/dfn> => <var>stdClass<\/var>#310 (1)<div class=\"access-path\">$value[76]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"262\"<div class=\"access-path\">$value[76]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>77<\/dfn> => <var>stdClass<\/var>#311 (1)<div class=\"access-path\">$value[77]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"263\"<div class=\"access-path\">$value[77]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>78<\/dfn> => <var>stdClass<\/var>#312 (1)<div class=\"access-path\">$value[78]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"264\"<div class=\"access-path\">$value[78]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>79<\/dfn> => <var>stdClass<\/var>#313 (1)<div class=\"access-path\">$value[79]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"265\"<div class=\"access-path\">$value[79]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>80<\/dfn> => <var>stdClass<\/var>#314 (1)<div class=\"access-path\">$value[80]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"266\"<div class=\"access-path\">$value[80]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>81<\/dfn> => <var>stdClass<\/var>#315 (1)<div class=\"access-path\">$value[81]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"267\"<div class=\"access-path\">$value[81]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>82<\/dfn> => <var>stdClass<\/var>#316 (1)<div class=\"access-path\">$value[82]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"268\"<div class=\"access-path\">$value[82]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>83<\/dfn> => <var>stdClass<\/var>#317 (1)<div class=\"access-path\">$value[83]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"269\"<div class=\"access-path\">$value[83]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>84<\/dfn> => <var>stdClass<\/var>#318 (1)<div class=\"access-path\">$value[84]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"270\"<div class=\"access-path\">$value[84]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>85<\/dfn> => <var>stdClass<\/var>#319 (1)<div class=\"access-path\">$value[85]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"271\"<div class=\"access-path\">$value[85]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>86<\/dfn> => <var>stdClass<\/var>#320 (1)<div class=\"access-path\">$value[86]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"272\"<div class=\"access-path\">$value[86]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>87<\/dfn> => <var>stdClass<\/var>#321 (1)<div class=\"access-path\">$value[87]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"273\"<div class=\"access-path\">$value[87]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>88<\/dfn> => <var>stdClass<\/var>#322 (1)<div class=\"access-path\">$value[88]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"274\"<div class=\"access-path\">$value[88]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>89<\/dfn> => <var>stdClass<\/var>#323 (1)<div class=\"access-path\">$value[89]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"275\"<div class=\"access-path\">$value[89]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>90<\/dfn> => <var>stdClass<\/var>#324 (1)<div class=\"access-path\">$value[90]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"276\"<div class=\"access-path\">$value[90]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>91<\/dfn> => <var>stdClass<\/var>#325 (1)<div class=\"access-path\">$value[91]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"277\"<div class=\"access-path\">$value[91]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>92<\/dfn> => <var>stdClass<\/var>#326 (1)<div class=\"access-path\">$value[92]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"278\"<div class=\"access-path\">$value[92]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>93<\/dfn> => <var>stdClass<\/var>#327 (1)<div class=\"access-path\">$value[93]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"279\"<div class=\"access-path\">$value[93]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>94<\/dfn> => <var>stdClass<\/var>#328 (1)<div class=\"access-path\">$value[94]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"280\"<div class=\"access-path\">$value[94]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>95<\/dfn> => <var>stdClass<\/var>#329 (1)<div class=\"access-path\">$value[95]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"281\"<div class=\"access-path\">$value[95]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>96<\/dfn> => <var>stdClass<\/var>#330 (1)<div class=\"access-path\">$value[96]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"282\"<div class=\"access-path\">$value[96]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>97<\/dfn> => <var>stdClass<\/var>#331 (1)<div class=\"access-path\">$value[97]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"283\"<div class=\"access-path\">$value[97]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>98<\/dfn> => <var>stdClass<\/var>#332 (1)<div class=\"access-path\">$value[98]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"284\"<div class=\"access-path\">$value[98]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>99<\/dfn> => <var>stdClass<\/var>#333 (1)<div class=\"access-path\">$value[99]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"285\"<div class=\"access-path\">$value[99]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>100<\/dfn> => <var>stdClass<\/var>#334 (1)<div class=\"access-path\">$value[100]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"286\"<div class=\"access-path\">$value[100]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>101<\/dfn> => <var>stdClass<\/var>#335 (1)<div class=\"access-path\">$value[101]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"287\"<div class=\"access-path\">$value[101]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>102<\/dfn> => <var>stdClass<\/var>#336 (1)<div class=\"access-path\">$value[102]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"288\"<div class=\"access-path\">$value[102]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>103<\/dfn> => <var>stdClass<\/var>#337 (1)<div class=\"access-path\">$value[103]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"289\"<div class=\"access-path\">$value[103]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>104<\/dfn> => <var>stdClass<\/var>#338 (1)<div class=\"access-path\">$value[104]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"290\"<div class=\"access-path\">$value[104]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>105<\/dfn> => <var>stdClass<\/var>#339 (1)<div class=\"access-path\">$value[105]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"291\"<div class=\"access-path\">$value[105]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>106<\/dfn> => <var>stdClass<\/var>#340 (1)<div class=\"access-path\">$value[106]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"292\"<div class=\"access-path\">$value[106]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>107<\/dfn> => <var>stdClass<\/var>#341 (1)<div class=\"access-path\">$value[107]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"293\"<div class=\"access-path\">$value[107]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>108<\/dfn> => <var>stdClass<\/var>#342 (1)<div class=\"access-path\">$value[108]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"294\"<div class=\"access-path\">$value[108]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>109<\/dfn> => <var>stdClass<\/var>#343 (1)<div class=\"access-path\">$value[109]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"295\"<div class=\"access-path\">$value[109]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>110<\/dfn> => <var>stdClass<\/var>#344 (1)<div class=\"access-path\">$value[110]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"296\"<div class=\"access-path\">$value[110]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>111<\/dfn> => <var>stdClass<\/var>#345 (1)<div class=\"access-path\">$value[111]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"297\"<div class=\"access-path\">$value[111]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>112<\/dfn> => <var>stdClass<\/var>#346 (1)<div class=\"access-path\">$value[112]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"298\"<div class=\"access-path\">$value[112]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>113<\/dfn> => <var>stdClass<\/var>#347 (1)<div class=\"access-path\">$value[113]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"299\"<div class=\"access-path\">$value[113]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>114<\/dfn> => <var>stdClass<\/var>#348 (1)<div class=\"access-path\">$value[114]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"300\"<div class=\"access-path\">$value[114]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>115<\/dfn> => <var>stdClass<\/var>#349 (1)<div class=\"access-path\">$value[115]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"301\"<div class=\"access-path\">$value[115]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>116<\/dfn> => <var>stdClass<\/var>#350 (1)<div class=\"access-path\">$value[116]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"302\"<div class=\"access-path\">$value[116]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>117<\/dfn> => <var>stdClass<\/var>#351 (1)<div class=\"access-path\">$value[117]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"310\"<div class=\"access-path\">$value[117]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>118<\/dfn> => <var>stdClass<\/var>#352 (1)<div class=\"access-path\">$value[118]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"311\"<div class=\"access-path\">$value[118]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>119<\/dfn> => <var>stdClass<\/var>#353 (1)<div class=\"access-path\">$value[119]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"312\"<div class=\"access-path\">$value[119]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>120<\/dfn> => <var>stdClass<\/var>#354 (1)<div class=\"access-path\">$value[120]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"313\"<div class=\"access-path\">$value[120]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>121<\/dfn> => <var>stdClass<\/var>#355 (1)<div class=\"access-path\">$value[121]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"314\"<div class=\"access-path\">$value[121]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>122<\/dfn> => <var>stdClass<\/var>#356 (1)<div class=\"access-path\">$value[122]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"317\"<div class=\"access-path\">$value[122]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>123<\/dfn> => <var>stdClass<\/var>#357 (1)<div class=\"access-path\">$value[123]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"318\"<div class=\"access-path\">$value[123]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>124<\/dfn> => <var>stdClass<\/var>#358 (1)<div class=\"access-path\">$value[124]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"319\"<div class=\"access-path\">$value[124]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>125<\/dfn> => <var>stdClass<\/var>#359 (1)<div class=\"access-path\">$value[125]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"320\"<div class=\"access-path\">$value[125]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>126<\/dfn> => <var>stdClass<\/var>#360 (1)<div class=\"access-path\">$value[126]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"321\"<div class=\"access-path\">$value[126]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>127<\/dfn> => <var>stdClass<\/var>#361 (1)<div class=\"access-path\">$value[127]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"322\"<div class=\"access-path\">$value[127]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>128<\/dfn> => <var>stdClass<\/var>#362 (1)<div class=\"access-path\">$value[128]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"323\"<div class=\"access-path\">$value[128]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>129<\/dfn> => <var>stdClass<\/var>#363 (1)<div class=\"access-path\">$value[129]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"324\"<div class=\"access-path\">$value[129]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>130<\/dfn> => <var>stdClass<\/var>#364 (1)<div class=\"access-path\">$value[130]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"390\"<div class=\"access-path\">$value[130]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>131<\/dfn> => <var>stdClass<\/var>#365 (1)<div class=\"access-path\">$value[131]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"400\"<div class=\"access-path\">$value[131]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>132<\/dfn> => <var>stdClass<\/var>#366 (1)<div class=\"access-path\">$value[132]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"401\"<div class=\"access-path\">$value[132]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>133<\/dfn> => <var>stdClass<\/var>#367 (1)<div class=\"access-path\">$value[133]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"402\"<div class=\"access-path\">$value[133]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>134<\/dfn> => <var>stdClass<\/var>#368 (1)<div class=\"access-path\">$value[134]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"403\"<div class=\"access-path\">$value[134]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>135<\/dfn> => <var>stdClass<\/var>#369 (1)<div class=\"access-path\">$value[135]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"404\"<div class=\"access-path\">$value[135]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>136<\/dfn> => <var>stdClass<\/var>#370 (1)<div class=\"access-path\">$value[136]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"405\"<div class=\"access-path\">$value[136]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>137<\/dfn> => <var>stdClass<\/var>#371 (1)<div class=\"access-path\">$value[137]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"406\"<div class=\"access-path\">$value[137]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>138<\/dfn> => <var>stdClass<\/var>#372 (1)<div class=\"access-path\">$value[138]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"407\"<div class=\"access-path\">$value[138]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>139<\/dfn> => <var>stdClass<\/var>#373 (1)<div class=\"access-path\">$value[139]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"408\"<div class=\"access-path\">$value[139]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>140<\/dfn> => <var>stdClass<\/var>#374 (1)<div class=\"access-path\">$value[140]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"409\"<div class=\"access-path\">$value[140]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>141<\/dfn> => <var>stdClass<\/var>#375 (1)<div class=\"access-path\">$value[141]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"410\"<div class=\"access-path\">$value[141]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>142<\/dfn> => <var>stdClass<\/var>#376 (1)<div class=\"access-path\">$value[142]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"411\"<div class=\"access-path\">$value[142]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>143<\/dfn> => <var>stdClass<\/var>#377 (1)<div class=\"access-path\">$value[143]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"412\"<div class=\"access-path\">$value[143]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>144<\/dfn> => <var>stdClass<\/var>#378 (1)<div class=\"access-path\">$value[144]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"413\"<div class=\"access-path\">$value[144]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>145<\/dfn> => <var>stdClass<\/var>#379 (1)<div class=\"access-path\">$value[145]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"414\"<div class=\"access-path\">$value[145]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>146<\/dfn> => <var>stdClass<\/var>#380 (1)<div class=\"access-path\">$value[146]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"415\"<div class=\"access-path\">$value[146]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>147<\/dfn> => <var>stdClass<\/var>#381 (1)<div class=\"access-path\">$value[147]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"416\"<div class=\"access-path\">$value[147]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>148<\/dfn> => <var>stdClass<\/var>#382 (1)<div class=\"access-path\">$value[148]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"417\"<div class=\"access-path\">$value[148]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>149<\/dfn> => <var>stdClass<\/var>#383 (1)<div class=\"access-path\">$value[149]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"418\"<div class=\"access-path\">$value[149]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>150<\/dfn> => <var>stdClass<\/var>#384 (1)<div class=\"access-path\">$value[150]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"419\"<div class=\"access-path\">$value[150]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>151<\/dfn> => <var>stdClass<\/var>#385 (1)<div class=\"access-path\">$value[151]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"420\"<div class=\"access-path\">$value[151]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>152<\/dfn> => <var>stdClass<\/var>#386 (1)<div class=\"access-path\">$value[152]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"421\"<div class=\"access-path\">$value[152]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>153<\/dfn> => <var>stdClass<\/var>#387 (1)<div class=\"access-path\">$value[153]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"422\"<div class=\"access-path\">$value[153]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>154<\/dfn> => <var>stdClass<\/var>#388 (1)<div class=\"access-path\">$value[154]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"423\"<div class=\"access-path\">$value[154]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>155<\/dfn> => <var>stdClass<\/var>#389 (1)<div class=\"access-path\">$value[155]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"424\"<div class=\"access-path\">$value[155]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>156<\/dfn> => <var>stdClass<\/var>#390 (1)<div class=\"access-path\">$value[156]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"425\"<div class=\"access-path\">$value[156]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>157<\/dfn> => <var>stdClass<\/var>#391 (1)<div class=\"access-path\">$value[157]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"427\"<div class=\"access-path\">$value[157]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>158<\/dfn> => <var>stdClass<\/var>#392 (1)<div class=\"access-path\">$value[158]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"428\"<div class=\"access-path\">$value[158]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>159<\/dfn> => <var>stdClass<\/var>#393 (1)<div class=\"access-path\">$value[159]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"499\"<div class=\"access-path\">$value[159]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>160<\/dfn> => <var>stdClass<\/var>#394 (1)<div class=\"access-path\">$value[160]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"500\"<div class=\"access-path\">$value[160]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>161<\/dfn> => <var>stdClass<\/var>#395 (1)<div class=\"access-path\">$value[161]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"501\"<div class=\"access-path\">$value[161]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>162<\/dfn> => <var>stdClass<\/var>#396 (1)<div class=\"access-path\">$value[162]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"510\"<div class=\"access-path\">$value[162]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>163<\/dfn> => <var>stdClass<\/var>#397 (1)<div class=\"access-path\">$value[163]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"511\"<div class=\"access-path\">$value[163]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>164<\/dfn> => <var>stdClass<\/var>#398 (1)<div class=\"access-path\">$value[164]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"512\"<div class=\"access-path\">$value[164]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>165<\/dfn> => <var>stdClass<\/var>#399 (1)<div class=\"access-path\">$value[165]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"513\"<div class=\"access-path\">$value[165]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>166<\/dfn> => <var>stdClass<\/var>#400 (1)<div class=\"access-path\">$value[166]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"514\"<div class=\"access-path\">$value[166]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>167<\/dfn> => <var>stdClass<\/var>#401 (1)<div class=\"access-path\">$value[167]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"515\"<div class=\"access-path\">$value[167]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>168<\/dfn> => <var>stdClass<\/var>#402 (1)<div class=\"access-path\">$value[168]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"516\"<div class=\"access-path\">$value[168]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>169<\/dfn> => <var>stdClass<\/var>#403 (1)<div class=\"access-path\">$value[169]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"900\"<div class=\"access-path\">$value[169]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>170<\/dfn> => <var>stdClass<\/var>#404 (1)<div class=\"access-path\">$value[170]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"901\"<div class=\"access-path\">$value[170]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>171<\/dfn> => <var>stdClass<\/var>#405 (1)<div class=\"access-path\">$value[171]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"902\"<div class=\"access-path\">$value[171]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>172<\/dfn> => <var>stdClass<\/var>#406 (1)<div class=\"access-path\">$value[172]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"910\"<div class=\"access-path\">$value[172]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>173<\/dfn> => <var>stdClass<\/var>#407 (1)<div class=\"access-path\">$value[173]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"920\"<div class=\"access-path\">$value[173]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>174<\/dfn> => <var>stdClass<\/var>#408 (1)<div class=\"access-path\">$value[174]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"930\"<div class=\"access-path\">$value[174]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","dtmapkjs":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (12)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#410 (6)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"01\"<div class=\"access-path\">$value[0]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"153193226838783\"<div class=\"access-path\">$value[0]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"162324655671151\"<div class=\"access-path\">$value[0]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[0]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"964130\"<div class=\"access-path\">$value[0]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"926187\"<div class=\"access-path\">$value[0]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#411 (6)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"02\"<div class=\"access-path\">$value[1]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"119419515571313\"<div class=\"access-path\">$value[1]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"117656017422686\"<div class=\"access-path\">$value[1]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[1]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"836587\"<div class=\"access-path\">$value[1]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"849167\"<div class=\"access-path\">$value[1]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#412 (6)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"03\"<div class=\"access-path\">$value[2]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"130324656773714\"<div class=\"access-path\">$value[2]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"151908567490454\"<div class=\"access-path\">$value[2]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[2]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (7) \"1099357\"<div class=\"access-path\">$value[2]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1112279\"<div class=\"access-path\">$value[2]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#413 (6)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"04\"<div class=\"access-path\">$value[3]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"224520570036594\"<div class=\"access-path\">$value[3]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"256229865814097\"<div class=\"access-path\">$value[3]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[3]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"911748\"<div class=\"access-path\">$value[3]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"877992\"<div class=\"access-path\">$value[3]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#414 (6)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"05\"<div class=\"access-path\">$value[4]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[4]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"142317308724531\"<div class=\"access-path\">$value[4]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[4]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[4]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"912007\"<div class=\"access-path\">$value[4]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#415 (6)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"06\"<div class=\"access-path\">$value[5]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[5]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"139837261465513\"<div class=\"access-path\">$value[5]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[5]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[5]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"930351\"<div class=\"access-path\">$value[5]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#416 (6)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"07\"<div class=\"access-path\">$value[6]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[6]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"138827778078352\"<div class=\"access-path\">$value[6]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[6]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[6]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"957637\"<div class=\"access-path\">$value[6]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#417 (6)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"08\"<div class=\"access-path\">$value[7]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[7]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"137864154782725\"<div class=\"access-path\">$value[7]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[7]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[7]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"991044\"<div class=\"access-path\">$value[7]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#418 (6)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"09\"<div class=\"access-path\">$value[8]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[8]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"140807912273049\"<div class=\"access-path\">$value[8]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[8]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[8]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"976139\"<div class=\"access-path\">$value[8]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#419 (6)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"10\"<div class=\"access-path\">$value[9]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[9]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"136104769648355\"<div class=\"access-path\">$value[9]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[9]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[9]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1001434\"<div class=\"access-path\">$value[9]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#420 (6)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"11\"<div class=\"access-path\">$value[10]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[10]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"146046768940592\"<div class=\"access-path\">$value[10]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[10]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[10]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1043589\"<div class=\"access-path\">$value[10]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#421 (6)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"12\"<div class=\"access-path\">$value[11]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[11]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"197947434424383\"<div class=\"access-path\">$value[11]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[11]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[11]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1194889\"<div class=\"access-path\">$value[11]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>"}},"session":{"__ci_last_regenerate":"<pre>1715934103<\/pre>","nip":"060086978","nipp":"196805201995031003","nama":"SUPARNO","kppadm":"000","jabatan":"Direktur","kantor":"Direktorat Ekstensifikasi dan Penilaian","seksi":"<pre><\/pre>","tpkantor":"KPDJP","kwladm":"991","isLogin":"<pre>1<\/pre>","_ci_previous_url":"http:\/\/localhost\/engineN\/home\/gmapkjs"},"post":{"kwl":"SEMUA","kdmap":"SEMUA","kjs":"SEMUA","kategori":"SEMUA","tahun":"2024"},"headers":{"Content-Type":"application\/x-www-form-urlencoded","Host":"localhost","Connection":"keep-alive","Cache-Control":"max-age=0","Sec-Ch-Ua":""Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"","Sec-Ch-Ua-Mobile":"?0","Sec-Ch-Ua-Platform":""Windows"","Upgrade-Insecure-Requests":"1","Origin":"http:\/\/localhost","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36","Accept":"text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,image\/apng,*\/*;q=0.8,application\/signed-exchange;v=b3;q=0.7","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"navigate","Sec-Fetch-Dest":"document","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"debug-bar-tab=ci-timeline; debug-bar-state=minimized; ci_session=84lu6ft803rsdcfgu48sbqf5iskep16s"},"cookies":{"debug-bar-tab":"ci-timeline","debug-bar-state":"minimized","ci_session":"84lu6ft803rsdcfgu48sbqf5iskep16s"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715934145.119464.json b/writable/debugbar/debugbar_1715934145.119464.json deleted file mode 100644 index 9e49842a..00000000 --- a/writable/debugbar/debugbar_1715934145.119464.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/home\/gmapkjs","method":"POST","isAJAX":false,"startTime":1715934132.86826,"totalTime":12227.5,"totalMemory":"7.765","segmentDuration":1750,"segmentCount":7,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715934132.875322,"duration":0.013540983200073242},{"name":"Routing","component":"Timer","start":1715934132.888864,"duration":0.00074005126953125},{"name":"Before Filters","component":"Timer","start":1715934132.892534,"duration":5.1975250244140625e-5},{"name":"Controller","component":"Timer","start":1715934132.89259,"duration":12.20312786102295},{"name":"Controller Constructor","component":"Timer","start":1715934132.892591,"duration":0.004045009613037109},{"name":"After Filters","component":"Timer","start":1715934145.095732,"duration":0.00025200843811035156}]},{"title":"Database","titleSafe":"database","titleDetails":"(7 total Queries, 7 of them unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"0.27 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KANWIL"\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KODE" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:43","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:183","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKwl()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:43","qid":"1151e588fbbf2d0be44767f122d73d49"},{"hover":"","class":"","duration":"0.18 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "BULAN"","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:35","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:184","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selBln()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:35","qid":"d42981033f96f0490c5bb8f5fd1806ea"},{"hover":"","class":"","duration":"0.21 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KPP"\n<strong>WHERE<\/strong> "KD_KANWIL" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KD_KPP" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:52","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:185","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKpp()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:52","qid":"b2073ab5d6070fca55089f3e9ac7a866"},{"hover":"","class":"","duration":"0.52 ms","sql":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_KATEGORI KATEGORI, NM_KATEGORIPDK NAMA <strong>FROM<\/strong> REF_KLU\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_KATEGORI <strong>ASC<\/strong>","trace":[{"file":"APPPATH\\Models\\Mref.php:11","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:187","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKLU()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:11","qid":"a88a3a40b84193147cc52d6cd8a9c838"},{"hover":"","class":"","duration":"0.31 ms","sql":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_MAP,NM_MAP <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_MAP <strong>ASC<\/strong>","trace":[{"file":"APPPATH\\Models\\Mref.php:18","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:188","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selMAP()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:18","qid":"0d45f8345438a698d5e4b7c99adbd7e9"},{"hover":"","class":"","duration":"0.44 ms","sql":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_SETOR KJS <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>WHERE<\/strong> TRIM(KD_SETOR) <strong>IS<\/strong> <strong>NOT<\/strong> <strong>NULL<\/strong>\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_SETOR <strong>ASC<\/strong>","trace":[{"file":"APPPATH\\Models\\Mref.php:25","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:189","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKJS()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:25","qid":"3ee29e0757397f54e00727c3cafbc284"},{"hover":"","class":"","duration":"4421.3 ms","sql":"<strong>SELECT<\/strong> \r\n BLNBYR,\r\n (<strong>SELECT<\/strong> <strong>SUM<\/strong>(JUMLAH)POPULASI <strong>FROM<\/strong> KEWAJIBAN_FLAGN\r\n <strong>WHERE<\/strong> KD_MAP <> 0 ) POPULASI,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN 1 ELSE 0 END) WPBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2022' THEN 1 ELSE 0 END) WPBYRPAST,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN TOTAL ELSE 0 END) JMLBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2022' THEN TOTAL ELSE 0 END) JMLBYRPAST\r\n <strong>FROM<\/strong> (<strong>SELECT<\/strong> NPWP,THNBYR,BLNBYR,<strong>SUM<\/strong>(TOTAL) TOTAL <strong>FROM<\/strong> DASHBOARD_BESAR_MAPKJS\r\n <strong>WHERE<\/strong> THNBYR BETWEEN '2022' <strong>AND<\/strong> '2023' \r\n <strong>GROUP<\/strong> <strong>BY<\/strong> NPWP,THNBYR,BLNBYR\r\n )\r\n <strong>GROUP<\/strong> <strong>BY<\/strong> BLNBYR <strong>ORDER<\/strong> <strong>BY<\/strong> BLNBYR <strong>ASC<\/strong>\r\n ","trace":[{"file":"APPPATH\\Models\\Mpemby.php:381","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:190","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mpemby->gmapkjs()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mpemby.php:381","qid":"2a6eeeabf79d0543d823304f28d0ac39"}]},"badgeValue":7,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715934140.626396,"duration":"0.042452"},{"name":"Query","component":"Database","start":1715934140.669498,"duration":"0.000267","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KANWIL"\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KODE" <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934140.670449,"duration":"0.000184","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "BULAN""},{"name":"Query","component":"Database","start":1715934140.670715,"duration":"0.000210","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KPP"\n<strong>WHERE<\/strong> "KD_KANWIL" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KD_KPP" <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934140.670943,"duration":"0.000525","query":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_KATEGORI KATEGORI, NM_KATEGORIPDK NAMA <strong>FROM<\/strong> REF_KLU\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_KATEGORI <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934140.67149,"duration":"0.000315","query":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_MAP,NM_MAP <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_MAP <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934140.671862,"duration":"0.000436","query":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_SETOR KJS <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>WHERE<\/strong> TRIM(KD_SETOR) <strong>IS<\/strong> <strong>NOT<\/strong> <strong>NULL<\/strong>\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_SETOR <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934140.672373,"duration":"4.421305","query":"<strong>SELECT<\/strong> \r\n BLNBYR,\r\n (<strong>SELECT<\/strong> <strong>SUM<\/strong>(JUMLAH)POPULASI <strong>FROM<\/strong> KEWAJIBAN_FLAGN\r\n <strong>WHERE<\/strong> KD_MAP <> 0 ) POPULASI,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN 1 ELSE 0 END) WPBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2022' THEN 1 ELSE 0 END) WPBYRPAST,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN TOTAL ELSE 0 END) JMLBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2022' THEN TOTAL ELSE 0 END) JMLBYRPAST\r\n <strong>FROM<\/strong> (<strong>SELECT<\/strong> NPWP,THNBYR,BLNBYR,<strong>SUM<\/strong>(TOTAL) TOTAL <strong>FROM<\/strong> DASHBOARD_BESAR_MAPKJS\r\n <strong>WHERE<\/strong> THNBYR BETWEEN '2022' <strong>AND<\/strong> '2023' \r\n <strong>GROUP<\/strong> <strong>BY<\/strong> NPWP,THNBYR,BLNBYR\r\n )\r\n <strong>GROUP<\/strong> <strong>BY<\/strong> BLNBYR <strong>ORDER<\/strong> <strong>BY<\/strong> BLNBYR <strong>ASC<\/strong>\r\n "}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[{"level":"info","msg":"Session: Class initialized using 'CodeIgniter\\Session\\Handlers\\FileHandler' driver."}]},"badgeValue":null,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":6,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"View: inc\/head.php","component":"Views","start":1715934145.093764,"duration":0.0004699230194091797},{"name":"View: inc\/navbar.php","component":"Views","start":1715934145.094332,"duration":0.00012993812561035156},{"name":"View: inc\/sidebar.php","component":"Views","start":1715934145.094506,"duration":0.0002110004425048828},{"name":"View: inc\/js.php","component":"Views","start":1715934145.095118,"duration":0.00029587745666503906},{"name":"View: ppm\/gmapkjs.php","component":"Views","start":1715934145.094761,"duration":0.0007631778717041016},{"name":"View: inc\/footer.php","component":"Views","start":1715934145.095588,"duration":9.012222290039062e-5}]},{"title":"Files","titleSafe":"files","titleDetails":"( 178 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseBuilder.php","name":"BaseBuilder.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Builder.php","name":"Builder.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\HandlerInterface.php","name":"HandlerInterface.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Session\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Session\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Session\\Session.php","name":"Session.php"},{"path":"SYSTEMPATH\\Session\\SessionInterface.php","name":"SessionInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Traits\\ConditionalTrait.php","name":"ConditionalTrait.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Session.php","name":"Session.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\BaseController.php","name":"BaseController.php"},{"path":"APPPATH\\Controllers\\Home.php","name":"Home.php"},{"path":"APPPATH\\Helpers\\myhelper_helper.php","name":"myhelper_helper.php"},{"path":"APPPATH\\Models\\Mpemby.php","name":"Mpemby.php"},{"path":"APPPATH\\Models\\Mref.php","name":"Mref.php"},{"path":"APPPATH\\Views\\inc\\footer.php","name":"footer.php"},{"path":"APPPATH\\Views\\inc\\head.php","name":"head.php"},{"path":"APPPATH\\Views\\inc\\js.php","name":"js.php"},{"path":"APPPATH\\Views\\inc\\navbar.php","name":"navbar.php"},{"path":"APPPATH\\Views\\inc\\sidebar.php","name":"sidebar.php"},{"path":"APPPATH\\Views\\ppm\\gmapkjs.php","name":"gmapkjs.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerAwareTrait.php","name":"LoggerAwareTrait.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":178,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Home","method":"gmapkjs","paramCount":0,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":0,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"4.68","count":1},"dbquery":{"event":"dbquery","duration":"0.09","count":7}}},"badgeValue":8,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715934132.882411,"duration":0.004681110382080078},{"name":"Event: dbquery","component":"Events","start":1715934140.66977,"duration":2.09808349609375e-5},{"name":"Event: dbquery","component":"Events","start":1715934140.670635,"duration":1.1920928955078125e-5},{"name":"Event: dbquery","component":"Events","start":1715934140.670926,"duration":5.9604644775390625e-6},{"name":"Event: dbquery","component":"Events","start":1715934140.671469,"duration":4.0531158447265625e-6},{"name":"Event: dbquery","component":"Events","start":1715934140.671805,"duration":2.002716064453125e-5},{"name":"Event: dbquery","component":"Events","start":1715934140.672298,"duration":4.0531158447265625e-6},{"name":"Event: dbquery","component":"Events","start":1715934145.093683,"duration":2.288818359375e-5}]}],"vars":{"varData":{"View Data":{"kwlx":"SEMUA","kppx":"SEMUA","seksix":"SEMUA","nipx":"SEMUA","tahunx":"2023","bulanx":"01","bulan2x":"05","mapx":"SEMUA","kjsx":"SEMUA","kategorix":"SEMUA","selkwl":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (34)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#105 (3)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"010\"<div class=\"access-path\">$value[0]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"010\"<div class=\"access-path\">$value[0]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (15) \"Kanwil DJP Aceh\"<div class=\"access-path\">$value[0]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#108 (3)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"020\"<div class=\"access-path\">$value[1]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"020\"<div class=\"access-path\">$value[1]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (27) \"Kanwil DJP Sumatera Utara I\"<div class=\"access-path\">$value[1]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#109 (3)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"030\"<div class=\"access-path\">$value[2]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"030\"<div class=\"access-path\">$value[2]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"Kanwil DJP Sumatera Utara II\"<div class=\"access-path\">$value[2]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#110 (3)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"040\"<div class=\"access-path\">$value[3]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"040\"<div class=\"access-path\">$value[3]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (15) \"Kanwil DJP Riau\"<div class=\"access-path\">$value[3]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#111 (3)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"050\"<div class=\"access-path\">$value[4]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"050\"<div class=\"access-path\">$value[4]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (35) \"Kanwil DJP Sumatera Barat dan Jambi\"<div class=\"access-path\">$value[4]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#112 (3)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"060\"<div class=\"access-path\">$value[5]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"060\"<div class=\"access-path\">$value[5]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (57) \"Kanwil DJP Sumatera Selatan dan Kepulauan Bangka Belitung\"<div class=\"access-path\">$value[5]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#113 (3)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"070\"<div class=\"access-path\">$value[6]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"070\"<div class=\"access-path\">$value[6]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (31) \"Kanwil DJP Bengkulu dan Lampung\"<div class=\"access-path\">$value[6]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#114 (3)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"080\"<div class=\"access-path\">$value[7]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"080\"<div class=\"access-path\">$value[7]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Pusat\"<div class=\"access-path\">$value[7]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#115 (3)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"090\"<div class=\"access-path\">$value[8]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"090\"<div class=\"access-path\">$value[8]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Barat\"<div class=\"access-path\">$value[8]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#116 (3)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"100\"<div class=\"access-path\">$value[9]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"100\"<div class=\"access-path\">$value[9]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"Kanwil DJP Jakarta Selatan I\"<div class=\"access-path\">$value[9]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#117 (3)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"110\"<div class=\"access-path\">$value[10]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"110\"<div class=\"access-path\">$value[10]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Timur\"<div class=\"access-path\">$value[10]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#118 (3)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"120\"<div class=\"access-path\">$value[11]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"120\"<div class=\"access-path\">$value[11]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Utara\"<div class=\"access-path\">$value[11]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#119 (3)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"130\"<div class=\"access-path\">$value[12]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"130\"<div class=\"access-path\">$value[12]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jakarta Khusus\"<div class=\"access-path\">$value[12]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#120 (3)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"140\"<div class=\"access-path\">$value[13]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"140\"<div class=\"access-path\">$value[13]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (17) \"Kanwil DJP Banten\"<div class=\"access-path\">$value[13]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#121 (3)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"150\"<div class=\"access-path\">$value[14]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"150\"<div class=\"access-path\">$value[14]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (23) \"Kanwil DJP Jawa Barat I\"<div class=\"access-path\">$value[14]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#122 (3)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"160\"<div class=\"access-path\">$value[15]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"160\"<div class=\"access-path\">$value[15]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jawa Barat II\"<div class=\"access-path\">$value[15]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#123 (3)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"170\"<div class=\"access-path\">$value[16]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"170\"<div class=\"access-path\">$value[16]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jawa Tengah I\"<div class=\"access-path\">$value[16]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#124 (3)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"180\"<div class=\"access-path\">$value[17]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"180\"<div class=\"access-path\">$value[17]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jawa Tengah II\"<div class=\"access-path\">$value[17]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#125 (3)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"190\"<div class=\"access-path\">$value[18]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"190\"<div class=\"access-path\">$value[18]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (37) \"Kanwil DJP Daerah Istimewa Yogyakarta\"<div class=\"access-path\">$value[18]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#126 (3)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"200\"<div class=\"access-path\">$value[19]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"200\"<div class=\"access-path\">$value[19]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (23) \"Kanwil DJP Jawa Timur I\"<div class=\"access-path\">$value[19]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#127 (3)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"210\"<div class=\"access-path\">$value[20]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"210\"<div class=\"access-path\">$value[20]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jawa Timur II\"<div class=\"access-path\">$value[20]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#128 (3)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"220\"<div class=\"access-path\">$value[21]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"220\"<div class=\"access-path\">$value[21]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jawa Timur III\"<div class=\"access-path\">$value[21]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>22<\/dfn> => <var>stdClass<\/var>#129 (3)<div class=\"access-path\">$value[22]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"230\"<div class=\"access-path\">$value[22]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"230\"<div class=\"access-path\">$value[22]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (27) \"Kanwil DJP Kalimantan Barat\"<div class=\"access-path\">$value[22]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>23<\/dfn> => <var>stdClass<\/var>#130 (3)<div class=\"access-path\">$value[23]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"240\"<div class=\"access-path\">$value[23]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"240\"<div class=\"access-path\">$value[23]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (40) \"Kanwil DJP Kalimantan Selatan dan Tengah\"<div class=\"access-path\">$value[23]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>24<\/dfn> => <var>stdClass<\/var>#131 (3)<div class=\"access-path\">$value[24]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"250\"<div class=\"access-path\">$value[24]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"250\"<div class=\"access-path\">$value[24]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (37) \"Kanwil DJP Kalimantan Timur dan Utara\"<div class=\"access-path\">$value[24]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>25<\/dfn> => <var>stdClass<\/var>#132 (3)<div class=\"access-path\">$value[25]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"260\"<div class=\"access-path\">$value[25]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"260\"<div class=\"access-path\">$value[25]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (48) \"Kanwil DJP Sulawesi Selatan, Barat, dan Tenggara\"<div class=\"access-path\">$value[25]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>26<\/dfn> => <var>stdClass<\/var>#133 (3)<div class=\"access-path\">$value[26]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"270\"<div class=\"access-path\">$value[26]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"270\"<div class=\"access-path\">$value[26]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (62) \"Kanwil DJP Sulawesi Utara, Tengah, Gorontalo, dan Maluku Utara\"<div class=\"access-path\">$value[26]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>27<\/dfn> => <var>stdClass<\/var>#134 (3)<div class=\"access-path\">$value[27]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"280\"<div class=\"access-path\">$value[27]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"280\"<div class=\"access-path\">$value[27]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (15) \"Kanwil DJP Bali\"<div class=\"access-path\">$value[27]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>28<\/dfn> => <var>stdClass<\/var>#135 (3)<div class=\"access-path\">$value[28]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"290\"<div class=\"access-path\">$value[28]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"290\"<div class=\"access-path\">$value[28]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Nusa Tenggara\"<div class=\"access-path\">$value[28]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>29<\/dfn> => <var>stdClass<\/var>#136 (3)<div class=\"access-path\">$value[29]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"300\"<div class=\"access-path\">$value[29]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"300\"<div class=\"access-path\">$value[29]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (41) \"Kanwil DJP Papua, Papua Barat, dan Maluku\"<div class=\"access-path\">$value[29]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>30<\/dfn> => <var>stdClass<\/var>#137 (3)<div class=\"access-path\">$value[30]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"310\"<div class=\"access-path\">$value[30]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"310\"<div class=\"access-path\">$value[30]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"Kanwil DJP Wajib Pajak Besar\"<div class=\"access-path\">$value[30]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>31<\/dfn> => <var>stdClass<\/var>#138 (3)<div class=\"access-path\">$value[31]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"320\"<div class=\"access-path\">$value[31]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"320\"<div class=\"access-path\">$value[31]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (29) \"Kanwil DJP Jakarta Selatan II\"<div class=\"access-path\">$value[31]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>32<\/dfn> => <var>stdClass<\/var>#139 (3)<div class=\"access-path\">$value[32]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"330\"<div class=\"access-path\">$value[32]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"330\"<div class=\"access-path\">$value[32]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jawa Barat III\"<div class=\"access-path\">$value[32]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>33<\/dfn> => <var>stdClass<\/var>#140 (3)<div class=\"access-path\">$value[33]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"340\"<div class=\"access-path\">$value[33]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"340\"<div class=\"access-path\">$value[33]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Kepulauan Riau\"<div class=\"access-path\">$value[33]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selbulan":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (12)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#107 (3)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"01\"<div class=\"access-path\">$value[0]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (7) \"JANUARI\"<div class=\"access-path\">$value[0]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"JAN\"<div class=\"access-path\">$value[0]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#143 (3)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"02\"<div class=\"access-path\">$value[1]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (8) \"FEBRUARI\"<div class=\"access-path\">$value[1]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"FEB\"<div class=\"access-path\">$value[1]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#144 (3)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"03\"<div class=\"access-path\">$value[2]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (5) \"MARET\"<div class=\"access-path\">$value[2]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"MAR\"<div class=\"access-path\">$value[2]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#145 (3)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"04\"<div class=\"access-path\">$value[3]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (5) \"APRIL\"<div class=\"access-path\">$value[3]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"APR\"<div class=\"access-path\">$value[3]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#146 (3)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"05\"<div class=\"access-path\">$value[4]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (3) \"MEI\"<div class=\"access-path\">$value[4]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"MEI\"<div class=\"access-path\">$value[4]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#147 (3)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"06\"<div class=\"access-path\">$value[5]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (4) \"JUNI\"<div class=\"access-path\">$value[5]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"JUN\"<div class=\"access-path\">$value[5]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#148 (3)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"07\"<div class=\"access-path\">$value[6]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (4) \"JULI\"<div class=\"access-path\">$value[6]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"JUL\"<div class=\"access-path\">$value[6]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#149 (3)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"08\"<div class=\"access-path\">$value[7]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (7) \"AGUSTUS\"<div class=\"access-path\">$value[7]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (5) \"AGUST\"<div class=\"access-path\">$value[7]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#150 (3)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"09\"<div class=\"access-path\">$value[8]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (9) \"SEPTEMBER\"<div class=\"access-path\">$value[8]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"SEP\"<div class=\"access-path\">$value[8]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#151 (3)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"10\"<div class=\"access-path\">$value[9]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (7) \"OKTOBER\"<div class=\"access-path\">$value[9]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"OKT\"<div class=\"access-path\">$value[9]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#152 (3)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"11\"<div class=\"access-path\">$value[10]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (8) \"NOPEMBER\"<div class=\"access-path\">$value[10]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"NOP\"<div class=\"access-path\">$value[10]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#153 (3)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"12\"<div class=\"access-path\">$value[11]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (8) \"DESEMBER\"<div class=\"access-path\">$value[11]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"DES\"<div class=\"access-path\">$value[11]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selkpp":"<div class=\"kint-rich\"><dl><dt><dfn>$value<\/dfn> <var>array<\/var> (0)<\/dt><\/dl><\/div>","selklu":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (22)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#156 (2)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"A\"<div class=\"access-path\">$value[0]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (9) \"PERTANIAN\"<div class=\"access-path\">$value[0]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#157 (2)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"B\"<div class=\"access-path\">$value[1]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (27) \"PERTAMBANGAN DAN PENGGALIAN\"<div class=\"access-path\">$value[1]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#158 (2)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"C\"<div class=\"access-path\">$value[2]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (19) \"INDUSTRI PENGOLAHAN\"<div class=\"access-path\">$value[2]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#159 (2)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"D\"<div class=\"access-path\">$value[3]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (17) \"PENGADAAN LISTRIK\"<div class=\"access-path\">$value[3]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#160 (2)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"E\"<div class=\"access-path\">$value[4]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (13) \"TREATMENT AIR\"<div class=\"access-path\">$value[4]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#161 (2)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"F\"<div class=\"access-path\">$value[5]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (10) \"KONSTRUKSI\"<div class=\"access-path\">$value[5]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#162 (2)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"G\"<div class=\"access-path\">$value[6]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"PERDAGANGAN BESAR DAN ECERAN\"<div class=\"access-path\">$value[6]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#163 (2)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"H\"<div class=\"access-path\">$value[7]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"PENGANGKUTAN DAN PERGUDANGAN\"<div class=\"access-path\">$value[7]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#164 (2)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"I\"<div class=\"access-path\">$value[8]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (47) \"PENYEDIAAN AKOMODASI DAN PENYEDIAAN MAKAN MINUM\"<div class=\"access-path\">$value[8]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#165 (2)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"J\"<div class=\"access-path\">$value[9]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"INFORMASI DAN KOMUNIKASI\"<div class=\"access-path\">$value[9]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#166 (2)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"K\"<div class=\"access-path\">$value[10]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (31) \"AKTIVITAS KEUANGAN DAN ASURANSI\"<div class=\"access-path\">$value[10]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#167 (2)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"L\"<div class=\"access-path\">$value[11]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (10) \"REAL ESTAT\"<div class=\"access-path\">$value[11]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#168 (2)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"M\"<div class=\"access-path\">$value[12]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (21) \"AKTIVITAS PROFESIONAL\"<div class=\"access-path\">$value[12]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#169 (2)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"N\"<div class=\"access-path\">$value[13]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (54) \"AKTIVITAS PENYEWAAN DAN SEWA GUNA USAHA TANPA HAK OPSI\"<div class=\"access-path\">$value[13]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#170 (2)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"O\"<div class=\"access-path\">$value[14]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"ADMINISTRASI PEMERINTAHAN\"<div class=\"access-path\">$value[14]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#171 (2)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"P\"<div class=\"access-path\">$value[15]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (10) \"PENDIDIKAN\"<div class=\"access-path\">$value[15]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#172 (2)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"Q\"<div class=\"access-path\">$value[16]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (48) \"AKTIVITAS KESEHATAN MANUSIA DAN AKTIVITAS SOSIAL\"<div class=\"access-path\">$value[16]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#173 (2)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"R\"<div class=\"access-path\">$value[17]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (8) \"KESENIAN\"<div class=\"access-path\">$value[17]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#174 (2)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"S\"<div class=\"access-path\">$value[18]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (22) \"AKTIVITAS JASA LAINNYA\"<div class=\"access-path\">$value[18]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#175 (2)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"T\"<div class=\"access-path\">$value[19]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (44) \"AKTIVITAS RUMAH TANGGA SEBAGAI PEMBERI KERJA\"<div class=\"access-path\">$value[19]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#176 (2)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"U\"<div class=\"access-path\">$value[20]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (68) \"AKTIVITAS BADAN INTERNASIONAL DAN BADAN EKSTRA INTERNASIONAL LAINNYA\"<div class=\"access-path\">$value[20]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#177 (2)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"Z\"<div class=\"access-path\">$value[21]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (14) \"PEJABAT NEGARA\"<div class=\"access-path\">$value[21]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selmap":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (55)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#179 (2)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411111\"<div class=\"access-path\">$value[0]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (15) \"PPh Minyak Bumi\"<div class=\"access-path\">$value[0]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#180 (2)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411112\"<div class=\"access-path\">$value[1]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Gas Alam\"<div class=\"access-path\">$value[1]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#181 (2)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411113\"<div class=\"access-path\">$value[2]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (23) \"PPh Minyak Bumi Lainnya\"<div class=\"access-path\">$value[2]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#182 (2)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411119\"<div class=\"access-path\">$value[3]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (17) \"PPh Migas Lainnya\"<div class=\"access-path\">$value[3]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#183 (2)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411121\"<div class=\"access-path\">$value[4]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 21\"<div class=\"access-path\">$value[4]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#184 (2)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411122\"<div class=\"access-path\">$value[5]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 22\"<div class=\"access-path\">$value[5]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#185 (2)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411123\"<div class=\"access-path\">$value[6]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"PPh Pasal 22 Impor\"<div class=\"access-path\">$value[6]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#186 (2)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411124\"<div class=\"access-path\">$value[7]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 23\"<div class=\"access-path\">$value[7]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#187 (2)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411125\"<div class=\"access-path\">$value[8]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"PPh Pasal 25\/29 OP\"<div class=\"access-path\">$value[8]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#188 (2)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411126\"<div class=\"access-path\">$value[9]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (21) \"PPh Pasal 25\/29 Badan\"<div class=\"access-path\">$value[9]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#189 (2)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411127\"<div class=\"access-path\">$value[10]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 26\"<div class=\"access-path\">$value[10]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#190 (2)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411128\"<div class=\"access-path\">$value[11]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (9) \"PPh Final\"<div class=\"access-path\">$value[11]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#191 (2)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411129\"<div class=\"access-path\">$value[12]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (21) \"PPh Non Migas Lainnya\"<div class=\"access-path\">$value[12]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#192 (2)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411131\"<div class=\"access-path\">$value[13]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"Fiskal Luar Negeri\"<div class=\"access-path\">$value[13]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#193 (2)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411141\"<div class=\"access-path\">$value[14]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 21\"<div class=\"access-path\">$value[14]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#194 (2)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411141\"<div class=\"access-path\">$value[15]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[15]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#195 (2)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411142\"<div class=\"access-path\">$value[16]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 22\"<div class=\"access-path\">$value[16]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#196 (2)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411143\"<div class=\"access-path\">$value[17]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (22) \"DTP PPH Pasal 22 Impor\"<div class=\"access-path\">$value[17]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#197 (2)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411144\"<div class=\"access-path\">$value[18]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[18]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#198 (2)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411144\"<div class=\"access-path\">$value[19]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 23\"<div class=\"access-path\">$value[19]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#199 (2)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411145\"<div class=\"access-path\">$value[20]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (22) \"DTP PPH Pasal 25\/29 OP\"<div class=\"access-path\">$value[20]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#200 (2)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411146\"<div class=\"access-path\">$value[21]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (25) \"DTP PPH Pasal 25\/29 Badan\"<div class=\"access-path\">$value[21]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>22<\/dfn> => <var>stdClass<\/var>#201 (2)<div class=\"access-path\">$value[22]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411146\"<div class=\"access-path\">$value[22]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[22]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>23<\/dfn> => <var>stdClass<\/var>#202 (2)<div class=\"access-path\">$value[23]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411147\"<div class=\"access-path\">$value[23]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 26\"<div class=\"access-path\">$value[23]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>24<\/dfn> => <var>stdClass<\/var>#203 (2)<div class=\"access-path\">$value[24]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411147\"<div class=\"access-path\">$value[24]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[24]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>25<\/dfn> => <var>stdClass<\/var>#204 (2)<div class=\"access-path\">$value[25]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411148\"<div class=\"access-path\">$value[25]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"DTP PPH Final\"<div class=\"access-path\">$value[25]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>26<\/dfn> => <var>stdClass<\/var>#205 (2)<div class=\"access-path\">$value[26]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411149\"<div class=\"access-path\">$value[26]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (17) \"DTP PPH Non Migas\"<div class=\"access-path\">$value[26]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>27<\/dfn> => <var>stdClass<\/var>#206 (2)<div class=\"access-path\">$value[27]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411211\"<div class=\"access-path\">$value[27]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"PPN Dalam Negeri\"<div class=\"access-path\">$value[27]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>28<\/dfn> => <var>stdClass<\/var>#207 (2)<div class=\"access-path\">$value[28]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411212\"<div class=\"access-path\">$value[28]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (9) \"PPN Impor\"<div class=\"access-path\">$value[28]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>29<\/dfn> => <var>stdClass<\/var>#208 (2)<div class=\"access-path\">$value[29]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411219\"<div class=\"access-path\">$value[29]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"PPN Lainnya\"<div class=\"access-path\">$value[29]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>30<\/dfn> => <var>stdClass<\/var>#209 (2)<div class=\"access-path\">$value[30]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411221\"<div class=\"access-path\">$value[30]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"PPnBM dalam Negeri\"<div class=\"access-path\">$value[30]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>31<\/dfn> => <var>stdClass<\/var>#210 (2)<div class=\"access-path\">$value[31]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411222\"<div class=\"access-path\">$value[31]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"PPnBM Impor\"<div class=\"access-path\">$value[31]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>32<\/dfn> => <var>stdClass<\/var>#211 (2)<div class=\"access-path\">$value[32]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411229\"<div class=\"access-path\">$value[32]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PPnBM Lainnya\"<div class=\"access-path\">$value[32]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>33<\/dfn> => <var>stdClass<\/var>#212 (2)<div class=\"access-path\">$value[33]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411231\"<div class=\"access-path\">$value[33]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (20) \"DTP PPN Dalam Negeri\"<div class=\"access-path\">$value[33]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>34<\/dfn> => <var>stdClass<\/var>#213 (2)<div class=\"access-path\">$value[34]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411232\"<div class=\"access-path\">$value[34]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"DTP PPN Impor\"<div class=\"access-path\">$value[34]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>35<\/dfn> => <var>stdClass<\/var>#214 (2)<div class=\"access-path\">$value[35]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411239\"<div class=\"access-path\">$value[35]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (15) \"DTP PPN Lainnya\"<div class=\"access-path\">$value[35]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>36<\/dfn> => <var>stdClass<\/var>#215 (2)<div class=\"access-path\">$value[36]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411241\"<div class=\"access-path\">$value[36]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (29) \"DTP PPN Dalam Negeri Covid-19\"<div class=\"access-path\">$value[36]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>37<\/dfn> => <var>stdClass<\/var>#216 (2)<div class=\"access-path\">$value[37]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411242\"<div class=\"access-path\">$value[37]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (31) \"DTP PPNBM Dalam Negeri Covid-19\"<div class=\"access-path\">$value[37]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>38<\/dfn> => <var>stdClass<\/var>#217 (2)<div class=\"access-path\">$value[38]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411311\"<div class=\"access-path\">$value[38]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PBB Pedesaan\"<div class=\"access-path\">$value[38]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>39<\/dfn> => <var>stdClass<\/var>#218 (2)<div class=\"access-path\">$value[39]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411312\"<div class=\"access-path\">$value[39]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PBB Perkotaan\"<div class=\"access-path\">$value[39]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>40<\/dfn> => <var>stdClass<\/var>#219 (2)<div class=\"access-path\">$value[40]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411313\"<div class=\"access-path\">$value[40]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (14) \"PBB Perkebunan\"<div class=\"access-path\">$value[40]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>41<\/dfn> => <var>stdClass<\/var>#220 (2)<div class=\"access-path\">$value[41]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411314\"<div class=\"access-path\">$value[41]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PBB Kehutanan\"<div class=\"access-path\">$value[41]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>42<\/dfn> => <var>stdClass<\/var>#221 (2)<div class=\"access-path\">$value[42]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411315\"<div class=\"access-path\">$value[42]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (43) \"PBB Pertambangan untuk Mineral dan Batubara\"<div class=\"access-path\">$value[42]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>43<\/dfn> => <var>stdClass<\/var>#222 (2)<div class=\"access-path\">$value[43]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411316\"<div class=\"access-path\">$value[43]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (42) \"PBB Pertambangan untuk Minyak dan Gas Bumi\"<div class=\"access-path\">$value[43]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>44<\/dfn> => <var>stdClass<\/var>#223 (2)<div class=\"access-path\">$value[44]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411317\"<div class=\"access-path\">$value[44]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (42) \"Pertambangan untuk pertambangan panas bumi\"<div class=\"access-path\">$value[44]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>45<\/dfn> => <var>stdClass<\/var>#224 (2)<div class=\"access-path\">$value[45]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411319\"<div class=\"access-path\">$value[45]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"PBB Lainnya\"<div class=\"access-path\">$value[45]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>46<\/dfn> => <var>stdClass<\/var>#225 (2)<div class=\"access-path\">$value[46]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411411\"<div class=\"access-path\">$value[46]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (5) \"BPHTB\"<div class=\"access-path\">$value[46]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>47<\/dfn> => <var>stdClass<\/var>#226 (2)<div class=\"access-path\">$value[47]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411611\"<div class=\"access-path\">$value[47]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"Bea Meterai\"<div class=\"access-path\">$value[47]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>48<\/dfn> => <var>stdClass<\/var>#227 (2)<div class=\"access-path\">$value[48]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411612\"<div class=\"access-path\">$value[48]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (23) \"Penjualan Benda Materai\"<div class=\"access-path\">$value[48]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>49<\/dfn> => <var>stdClass<\/var>#228 (2)<div class=\"access-path\">$value[49]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411613\"<div class=\"access-path\">$value[49]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PPn Batu Bara\"<div class=\"access-path\">$value[49]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>50<\/dfn> => <var>stdClass<\/var>#229 (2)<div class=\"access-path\">$value[50]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411619\"<div class=\"access-path\">$value[50]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (4) \"PTLL\"<div class=\"access-path\">$value[50]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>51<\/dfn> => <var>stdClass<\/var>#230 (2)<div class=\"access-path\">$value[51]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411621\"<div class=\"access-path\">$value[51]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (25) \"Bunga\/Denda Penagihan PPh\"<div class=\"access-path\">$value[51]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>52<\/dfn> => <var>stdClass<\/var>#231 (2)<div class=\"access-path\">$value[52]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411622\"<div class=\"access-path\">$value[52]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (25) \"Bunga\/Denda Penagihan PPN\"<div class=\"access-path\">$value[52]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>53<\/dfn> => <var>stdClass<\/var>#232 (2)<div class=\"access-path\">$value[53]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411623\"<div class=\"access-path\">$value[53]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (27) \"Bunga\/Denda Penagihan PPnBM\"<div class=\"access-path\">$value[53]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>54<\/dfn> => <var>stdClass<\/var>#233 (2)<div class=\"access-path\">$value[54]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411624\"<div class=\"access-path\">$value[54]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (26) \"Bunga\/Denda Penagihan PTLL\"<div class=\"access-path\">$value[54]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selkjs":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (175)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#235 (1)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"000\"<div class=\"access-path\">$value[0]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#236 (1)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"100\"<div class=\"access-path\">$value[1]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#237 (1)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"101\"<div class=\"access-path\">$value[2]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#238 (1)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"102\"<div class=\"access-path\">$value[3]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#239 (1)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"103\"<div class=\"access-path\">$value[4]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#240 (1)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"104\"<div class=\"access-path\">$value[5]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#241 (1)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"105\"<div class=\"access-path\">$value[6]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#242 (1)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"106\"<div class=\"access-path\">$value[7]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#243 (1)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"107\"<div class=\"access-path\">$value[8]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#244 (1)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"108\"<div class=\"access-path\">$value[9]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#245 (1)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"111\"<div class=\"access-path\">$value[10]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#246 (1)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"121\"<div class=\"access-path\">$value[11]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#247 (1)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"122\"<div class=\"access-path\">$value[12]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#248 (1)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"199\"<div class=\"access-path\">$value[13]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#249 (1)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"200\"<div class=\"access-path\">$value[14]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#250 (1)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"201\"<div class=\"access-path\">$value[15]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#251 (1)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"202\"<div class=\"access-path\">$value[16]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#252 (1)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"203\"<div class=\"access-path\">$value[17]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#253 (1)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"204\"<div class=\"access-path\">$value[18]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#254 (1)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"205\"<div class=\"access-path\">$value[19]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#255 (1)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"206\"<div class=\"access-path\">$value[20]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#256 (1)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"207\"<div class=\"access-path\">$value[21]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>22<\/dfn> => <var>stdClass<\/var>#257 (1)<div class=\"access-path\">$value[22]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"208\"<div class=\"access-path\">$value[22]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>23<\/dfn> => <var>stdClass<\/var>#258 (1)<div class=\"access-path\">$value[23]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"209\"<div class=\"access-path\">$value[23]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>24<\/dfn> => <var>stdClass<\/var>#259 (1)<div class=\"access-path\">$value[24]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"210\"<div class=\"access-path\">$value[24]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>25<\/dfn> => <var>stdClass<\/var>#260 (1)<div class=\"access-path\">$value[25]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"211\"<div class=\"access-path\">$value[25]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>26<\/dfn> => <var>stdClass<\/var>#261 (1)<div class=\"access-path\">$value[26]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"212\"<div class=\"access-path\">$value[26]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>27<\/dfn> => <var>stdClass<\/var>#262 (1)<div class=\"access-path\">$value[27]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"213\"<div class=\"access-path\">$value[27]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>28<\/dfn> => <var>stdClass<\/var>#263 (1)<div class=\"access-path\">$value[28]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"214\"<div class=\"access-path\">$value[28]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>29<\/dfn> => <var>stdClass<\/var>#264 (1)<div class=\"access-path\">$value[29]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"215\"<div class=\"access-path\">$value[29]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>30<\/dfn> => <var>stdClass<\/var>#265 (1)<div class=\"access-path\">$value[30]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"216\"<div class=\"access-path\">$value[30]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>31<\/dfn> => <var>stdClass<\/var>#266 (1)<div class=\"access-path\">$value[31]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"217\"<div class=\"access-path\">$value[31]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>32<\/dfn> => <var>stdClass<\/var>#267 (1)<div class=\"access-path\">$value[32]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"218\"<div class=\"access-path\">$value[32]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>33<\/dfn> => <var>stdClass<\/var>#268 (1)<div class=\"access-path\">$value[33]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"219\"<div class=\"access-path\">$value[33]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>34<\/dfn> => <var>stdClass<\/var>#269 (1)<div class=\"access-path\">$value[34]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"220\"<div class=\"access-path\">$value[34]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>35<\/dfn> => <var>stdClass<\/var>#270 (1)<div class=\"access-path\">$value[35]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"221\"<div class=\"access-path\">$value[35]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>36<\/dfn> => <var>stdClass<\/var>#271 (1)<div class=\"access-path\">$value[36]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"222\"<div class=\"access-path\">$value[36]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>37<\/dfn> => <var>stdClass<\/var>#272 (1)<div class=\"access-path\">$value[37]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"223\"<div class=\"access-path\">$value[37]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>38<\/dfn> => <var>stdClass<\/var>#273 (1)<div class=\"access-path\">$value[38]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"224\"<div class=\"access-path\">$value[38]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>39<\/dfn> => <var>stdClass<\/var>#274 (1)<div class=\"access-path\">$value[39]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"225\"<div class=\"access-path\">$value[39]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>40<\/dfn> => <var>stdClass<\/var>#275 (1)<div class=\"access-path\">$value[40]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"226\"<div class=\"access-path\">$value[40]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>41<\/dfn> => <var>stdClass<\/var>#276 (1)<div class=\"access-path\">$value[41]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"227\"<div class=\"access-path\">$value[41]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>42<\/dfn> => <var>stdClass<\/var>#277 (1)<div class=\"access-path\">$value[42]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"228\"<div class=\"access-path\">$value[42]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>43<\/dfn> => <var>stdClass<\/var>#278 (1)<div class=\"access-path\">$value[43]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"229\"<div class=\"access-path\">$value[43]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>44<\/dfn> => <var>stdClass<\/var>#279 (1)<div class=\"access-path\">$value[44]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"230\"<div class=\"access-path\">$value[44]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>45<\/dfn> => <var>stdClass<\/var>#280 (1)<div class=\"access-path\">$value[45]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"231\"<div class=\"access-path\">$value[45]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>46<\/dfn> => <var>stdClass<\/var>#281 (1)<div class=\"access-path\">$value[46]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"232\"<div class=\"access-path\">$value[46]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>47<\/dfn> => <var>stdClass<\/var>#282 (1)<div class=\"access-path\">$value[47]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"233\"<div class=\"access-path\">$value[47]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>48<\/dfn> => <var>stdClass<\/var>#283 (1)<div class=\"access-path\">$value[48]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"234\"<div class=\"access-path\">$value[48]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>49<\/dfn> => <var>stdClass<\/var>#284 (1)<div class=\"access-path\">$value[49]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"235\"<div class=\"access-path\">$value[49]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>50<\/dfn> => <var>stdClass<\/var>#285 (1)<div class=\"access-path\">$value[50]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"236\"<div class=\"access-path\">$value[50]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>51<\/dfn> => <var>stdClass<\/var>#286 (1)<div class=\"access-path\">$value[51]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"237\"<div class=\"access-path\">$value[51]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>52<\/dfn> => <var>stdClass<\/var>#287 (1)<div class=\"access-path\">$value[52]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"238\"<div class=\"access-path\">$value[52]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>53<\/dfn> => <var>stdClass<\/var>#288 (1)<div class=\"access-path\">$value[53]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"239\"<div class=\"access-path\">$value[53]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>54<\/dfn> => <var>stdClass<\/var>#289 (1)<div class=\"access-path\">$value[54]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"240\"<div class=\"access-path\">$value[54]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>55<\/dfn> => <var>stdClass<\/var>#290 (1)<div class=\"access-path\">$value[55]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"241\"<div class=\"access-path\">$value[55]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>56<\/dfn> => <var>stdClass<\/var>#291 (1)<div class=\"access-path\">$value[56]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"242\"<div class=\"access-path\">$value[56]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>57<\/dfn> => <var>stdClass<\/var>#292 (1)<div class=\"access-path\">$value[57]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"243\"<div class=\"access-path\">$value[57]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>58<\/dfn> => <var>stdClass<\/var>#293 (1)<div class=\"access-path\">$value[58]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"244\"<div class=\"access-path\">$value[58]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>59<\/dfn> => <var>stdClass<\/var>#294 (1)<div class=\"access-path\">$value[59]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"245\"<div class=\"access-path\">$value[59]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>60<\/dfn> => <var>stdClass<\/var>#295 (1)<div class=\"access-path\">$value[60]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"246\"<div class=\"access-path\">$value[60]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>61<\/dfn> => <var>stdClass<\/var>#296 (1)<div class=\"access-path\">$value[61]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"247\"<div class=\"access-path\">$value[61]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>62<\/dfn> => <var>stdClass<\/var>#297 (1)<div class=\"access-path\">$value[62]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"248\"<div class=\"access-path\">$value[62]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>63<\/dfn> => <var>stdClass<\/var>#298 (1)<div class=\"access-path\">$value[63]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"249\"<div class=\"access-path\">$value[63]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>64<\/dfn> => <var>stdClass<\/var>#299 (1)<div class=\"access-path\">$value[64]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"250\"<div class=\"access-path\">$value[64]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>65<\/dfn> => <var>stdClass<\/var>#300 (1)<div class=\"access-path\">$value[65]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"251\"<div class=\"access-path\">$value[65]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>66<\/dfn> => <var>stdClass<\/var>#301 (1)<div class=\"access-path\">$value[66]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"252\"<div class=\"access-path\">$value[66]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>67<\/dfn> => <var>stdClass<\/var>#302 (1)<div class=\"access-path\">$value[67]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"253\"<div class=\"access-path\">$value[67]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>68<\/dfn> => <var>stdClass<\/var>#303 (1)<div class=\"access-path\">$value[68]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"254\"<div class=\"access-path\">$value[68]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>69<\/dfn> => <var>stdClass<\/var>#304 (1)<div class=\"access-path\">$value[69]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"255\"<div class=\"access-path\">$value[69]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>70<\/dfn> => <var>stdClass<\/var>#305 (1)<div class=\"access-path\">$value[70]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"256\"<div class=\"access-path\">$value[70]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>71<\/dfn> => <var>stdClass<\/var>#306 (1)<div class=\"access-path\">$value[71]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"257\"<div class=\"access-path\">$value[71]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>72<\/dfn> => <var>stdClass<\/var>#307 (1)<div class=\"access-path\">$value[72]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"258\"<div class=\"access-path\">$value[72]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>73<\/dfn> => <var>stdClass<\/var>#308 (1)<div class=\"access-path\">$value[73]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"259\"<div class=\"access-path\">$value[73]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>74<\/dfn> => <var>stdClass<\/var>#309 (1)<div class=\"access-path\">$value[74]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"260\"<div class=\"access-path\">$value[74]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>75<\/dfn> => <var>stdClass<\/var>#310 (1)<div class=\"access-path\">$value[75]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"261\"<div class=\"access-path\">$value[75]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>76<\/dfn> => <var>stdClass<\/var>#311 (1)<div class=\"access-path\">$value[76]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"262\"<div class=\"access-path\">$value[76]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>77<\/dfn> => <var>stdClass<\/var>#312 (1)<div class=\"access-path\">$value[77]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"263\"<div class=\"access-path\">$value[77]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>78<\/dfn> => <var>stdClass<\/var>#313 (1)<div class=\"access-path\">$value[78]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"264\"<div class=\"access-path\">$value[78]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>79<\/dfn> => <var>stdClass<\/var>#314 (1)<div class=\"access-path\">$value[79]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"265\"<div class=\"access-path\">$value[79]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>80<\/dfn> => <var>stdClass<\/var>#315 (1)<div class=\"access-path\">$value[80]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"266\"<div class=\"access-path\">$value[80]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>81<\/dfn> => <var>stdClass<\/var>#316 (1)<div class=\"access-path\">$value[81]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"267\"<div class=\"access-path\">$value[81]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>82<\/dfn> => <var>stdClass<\/var>#317 (1)<div class=\"access-path\">$value[82]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"268\"<div class=\"access-path\">$value[82]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>83<\/dfn> => <var>stdClass<\/var>#318 (1)<div class=\"access-path\">$value[83]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"269\"<div class=\"access-path\">$value[83]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>84<\/dfn> => <var>stdClass<\/var>#319 (1)<div class=\"access-path\">$value[84]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"270\"<div class=\"access-path\">$value[84]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>85<\/dfn> => <var>stdClass<\/var>#320 (1)<div class=\"access-path\">$value[85]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"271\"<div class=\"access-path\">$value[85]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>86<\/dfn> => <var>stdClass<\/var>#321 (1)<div class=\"access-path\">$value[86]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"272\"<div class=\"access-path\">$value[86]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>87<\/dfn> => <var>stdClass<\/var>#322 (1)<div class=\"access-path\">$value[87]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"273\"<div class=\"access-path\">$value[87]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>88<\/dfn> => <var>stdClass<\/var>#323 (1)<div class=\"access-path\">$value[88]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"274\"<div class=\"access-path\">$value[88]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>89<\/dfn> => <var>stdClass<\/var>#324 (1)<div class=\"access-path\">$value[89]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"275\"<div class=\"access-path\">$value[89]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>90<\/dfn> => <var>stdClass<\/var>#325 (1)<div class=\"access-path\">$value[90]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"276\"<div class=\"access-path\">$value[90]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>91<\/dfn> => <var>stdClass<\/var>#326 (1)<div class=\"access-path\">$value[91]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"277\"<div class=\"access-path\">$value[91]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>92<\/dfn> => <var>stdClass<\/var>#327 (1)<div class=\"access-path\">$value[92]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"278\"<div class=\"access-path\">$value[92]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>93<\/dfn> => <var>stdClass<\/var>#328 (1)<div class=\"access-path\">$value[93]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"279\"<div class=\"access-path\">$value[93]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>94<\/dfn> => <var>stdClass<\/var>#329 (1)<div class=\"access-path\">$value[94]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"280\"<div class=\"access-path\">$value[94]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>95<\/dfn> => <var>stdClass<\/var>#330 (1)<div class=\"access-path\">$value[95]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"281\"<div class=\"access-path\">$value[95]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>96<\/dfn> => <var>stdClass<\/var>#331 (1)<div class=\"access-path\">$value[96]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"282\"<div class=\"access-path\">$value[96]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>97<\/dfn> => <var>stdClass<\/var>#332 (1)<div class=\"access-path\">$value[97]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"283\"<div class=\"access-path\">$value[97]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>98<\/dfn> => <var>stdClass<\/var>#333 (1)<div class=\"access-path\">$value[98]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"284\"<div class=\"access-path\">$value[98]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>99<\/dfn> => <var>stdClass<\/var>#334 (1)<div class=\"access-path\">$value[99]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"285\"<div class=\"access-path\">$value[99]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>100<\/dfn> => <var>stdClass<\/var>#335 (1)<div class=\"access-path\">$value[100]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"286\"<div class=\"access-path\">$value[100]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>101<\/dfn> => <var>stdClass<\/var>#336 (1)<div class=\"access-path\">$value[101]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"287\"<div class=\"access-path\">$value[101]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>102<\/dfn> => <var>stdClass<\/var>#337 (1)<div class=\"access-path\">$value[102]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"288\"<div class=\"access-path\">$value[102]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>103<\/dfn> => <var>stdClass<\/var>#338 (1)<div class=\"access-path\">$value[103]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"289\"<div class=\"access-path\">$value[103]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>104<\/dfn> => <var>stdClass<\/var>#339 (1)<div class=\"access-path\">$value[104]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"290\"<div class=\"access-path\">$value[104]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>105<\/dfn> => <var>stdClass<\/var>#340 (1)<div class=\"access-path\">$value[105]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"291\"<div class=\"access-path\">$value[105]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>106<\/dfn> => <var>stdClass<\/var>#341 (1)<div class=\"access-path\">$value[106]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"292\"<div class=\"access-path\">$value[106]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>107<\/dfn> => <var>stdClass<\/var>#342 (1)<div class=\"access-path\">$value[107]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"293\"<div class=\"access-path\">$value[107]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>108<\/dfn> => <var>stdClass<\/var>#343 (1)<div class=\"access-path\">$value[108]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"294\"<div class=\"access-path\">$value[108]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>109<\/dfn> => <var>stdClass<\/var>#344 (1)<div class=\"access-path\">$value[109]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"295\"<div class=\"access-path\">$value[109]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>110<\/dfn> => <var>stdClass<\/var>#345 (1)<div class=\"access-path\">$value[110]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"296\"<div class=\"access-path\">$value[110]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>111<\/dfn> => <var>stdClass<\/var>#346 (1)<div class=\"access-path\">$value[111]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"297\"<div class=\"access-path\">$value[111]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>112<\/dfn> => <var>stdClass<\/var>#347 (1)<div class=\"access-path\">$value[112]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"298\"<div class=\"access-path\">$value[112]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>113<\/dfn> => <var>stdClass<\/var>#348 (1)<div class=\"access-path\">$value[113]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"299\"<div class=\"access-path\">$value[113]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>114<\/dfn> => <var>stdClass<\/var>#349 (1)<div class=\"access-path\">$value[114]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"300\"<div class=\"access-path\">$value[114]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>115<\/dfn> => <var>stdClass<\/var>#350 (1)<div class=\"access-path\">$value[115]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"301\"<div class=\"access-path\">$value[115]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>116<\/dfn> => <var>stdClass<\/var>#351 (1)<div class=\"access-path\">$value[116]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"302\"<div class=\"access-path\">$value[116]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>117<\/dfn> => <var>stdClass<\/var>#352 (1)<div class=\"access-path\">$value[117]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"310\"<div class=\"access-path\">$value[117]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>118<\/dfn> => <var>stdClass<\/var>#353 (1)<div class=\"access-path\">$value[118]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"311\"<div class=\"access-path\">$value[118]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>119<\/dfn> => <var>stdClass<\/var>#354 (1)<div class=\"access-path\">$value[119]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"312\"<div class=\"access-path\">$value[119]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>120<\/dfn> => <var>stdClass<\/var>#355 (1)<div class=\"access-path\">$value[120]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"313\"<div class=\"access-path\">$value[120]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>121<\/dfn> => <var>stdClass<\/var>#356 (1)<div class=\"access-path\">$value[121]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"314\"<div class=\"access-path\">$value[121]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>122<\/dfn> => <var>stdClass<\/var>#357 (1)<div class=\"access-path\">$value[122]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"317\"<div class=\"access-path\">$value[122]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>123<\/dfn> => <var>stdClass<\/var>#358 (1)<div class=\"access-path\">$value[123]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"318\"<div class=\"access-path\">$value[123]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>124<\/dfn> => <var>stdClass<\/var>#359 (1)<div class=\"access-path\">$value[124]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"319\"<div class=\"access-path\">$value[124]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>125<\/dfn> => <var>stdClass<\/var>#360 (1)<div class=\"access-path\">$value[125]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"320\"<div class=\"access-path\">$value[125]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>126<\/dfn> => <var>stdClass<\/var>#361 (1)<div class=\"access-path\">$value[126]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"321\"<div class=\"access-path\">$value[126]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>127<\/dfn> => <var>stdClass<\/var>#362 (1)<div class=\"access-path\">$value[127]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"322\"<div class=\"access-path\">$value[127]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>128<\/dfn> => <var>stdClass<\/var>#363 (1)<div class=\"access-path\">$value[128]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"323\"<div class=\"access-path\">$value[128]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>129<\/dfn> => <var>stdClass<\/var>#364 (1)<div class=\"access-path\">$value[129]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"324\"<div class=\"access-path\">$value[129]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>130<\/dfn> => <var>stdClass<\/var>#365 (1)<div class=\"access-path\">$value[130]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"390\"<div class=\"access-path\">$value[130]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>131<\/dfn> => <var>stdClass<\/var>#366 (1)<div class=\"access-path\">$value[131]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"400\"<div class=\"access-path\">$value[131]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>132<\/dfn> => <var>stdClass<\/var>#367 (1)<div class=\"access-path\">$value[132]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"401\"<div class=\"access-path\">$value[132]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>133<\/dfn> => <var>stdClass<\/var>#368 (1)<div class=\"access-path\">$value[133]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"402\"<div class=\"access-path\">$value[133]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>134<\/dfn> => <var>stdClass<\/var>#369 (1)<div class=\"access-path\">$value[134]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"403\"<div class=\"access-path\">$value[134]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>135<\/dfn> => <var>stdClass<\/var>#370 (1)<div class=\"access-path\">$value[135]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"404\"<div class=\"access-path\">$value[135]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>136<\/dfn> => <var>stdClass<\/var>#371 (1)<div class=\"access-path\">$value[136]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"405\"<div class=\"access-path\">$value[136]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>137<\/dfn> => <var>stdClass<\/var>#372 (1)<div class=\"access-path\">$value[137]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"406\"<div class=\"access-path\">$value[137]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>138<\/dfn> => <var>stdClass<\/var>#373 (1)<div class=\"access-path\">$value[138]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"407\"<div class=\"access-path\">$value[138]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>139<\/dfn> => <var>stdClass<\/var>#374 (1)<div class=\"access-path\">$value[139]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"408\"<div class=\"access-path\">$value[139]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>140<\/dfn> => <var>stdClass<\/var>#375 (1)<div class=\"access-path\">$value[140]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"409\"<div class=\"access-path\">$value[140]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>141<\/dfn> => <var>stdClass<\/var>#376 (1)<div class=\"access-path\">$value[141]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"410\"<div class=\"access-path\">$value[141]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>142<\/dfn> => <var>stdClass<\/var>#377 (1)<div class=\"access-path\">$value[142]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"411\"<div class=\"access-path\">$value[142]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>143<\/dfn> => <var>stdClass<\/var>#378 (1)<div class=\"access-path\">$value[143]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"412\"<div class=\"access-path\">$value[143]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>144<\/dfn> => <var>stdClass<\/var>#379 (1)<div class=\"access-path\">$value[144]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"413\"<div class=\"access-path\">$value[144]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>145<\/dfn> => <var>stdClass<\/var>#380 (1)<div class=\"access-path\">$value[145]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"414\"<div class=\"access-path\">$value[145]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>146<\/dfn> => <var>stdClass<\/var>#381 (1)<div class=\"access-path\">$value[146]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"415\"<div class=\"access-path\">$value[146]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>147<\/dfn> => <var>stdClass<\/var>#382 (1)<div class=\"access-path\">$value[147]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"416\"<div class=\"access-path\">$value[147]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>148<\/dfn> => <var>stdClass<\/var>#383 (1)<div class=\"access-path\">$value[148]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"417\"<div class=\"access-path\">$value[148]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>149<\/dfn> => <var>stdClass<\/var>#384 (1)<div class=\"access-path\">$value[149]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"418\"<div class=\"access-path\">$value[149]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>150<\/dfn> => <var>stdClass<\/var>#385 (1)<div class=\"access-path\">$value[150]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"419\"<div class=\"access-path\">$value[150]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>151<\/dfn> => <var>stdClass<\/var>#386 (1)<div class=\"access-path\">$value[151]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"420\"<div class=\"access-path\">$value[151]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>152<\/dfn> => <var>stdClass<\/var>#387 (1)<div class=\"access-path\">$value[152]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"421\"<div class=\"access-path\">$value[152]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>153<\/dfn> => <var>stdClass<\/var>#388 (1)<div class=\"access-path\">$value[153]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"422\"<div class=\"access-path\">$value[153]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>154<\/dfn> => <var>stdClass<\/var>#389 (1)<div class=\"access-path\">$value[154]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"423\"<div class=\"access-path\">$value[154]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>155<\/dfn> => <var>stdClass<\/var>#390 (1)<div class=\"access-path\">$value[155]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"424\"<div class=\"access-path\">$value[155]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>156<\/dfn> => <var>stdClass<\/var>#391 (1)<div class=\"access-path\">$value[156]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"425\"<div class=\"access-path\">$value[156]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>157<\/dfn> => <var>stdClass<\/var>#392 (1)<div class=\"access-path\">$value[157]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"427\"<div class=\"access-path\">$value[157]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>158<\/dfn> => <var>stdClass<\/var>#393 (1)<div class=\"access-path\">$value[158]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"428\"<div class=\"access-path\">$value[158]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>159<\/dfn> => <var>stdClass<\/var>#394 (1)<div class=\"access-path\">$value[159]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"499\"<div class=\"access-path\">$value[159]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>160<\/dfn> => <var>stdClass<\/var>#395 (1)<div class=\"access-path\">$value[160]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"500\"<div class=\"access-path\">$value[160]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>161<\/dfn> => <var>stdClass<\/var>#396 (1)<div class=\"access-path\">$value[161]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"501\"<div class=\"access-path\">$value[161]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>162<\/dfn> => <var>stdClass<\/var>#397 (1)<div class=\"access-path\">$value[162]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"510\"<div class=\"access-path\">$value[162]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>163<\/dfn> => <var>stdClass<\/var>#398 (1)<div class=\"access-path\">$value[163]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"511\"<div class=\"access-path\">$value[163]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>164<\/dfn> => <var>stdClass<\/var>#399 (1)<div class=\"access-path\">$value[164]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"512\"<div class=\"access-path\">$value[164]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>165<\/dfn> => <var>stdClass<\/var>#400 (1)<div class=\"access-path\">$value[165]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"513\"<div class=\"access-path\">$value[165]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>166<\/dfn> => <var>stdClass<\/var>#401 (1)<div class=\"access-path\">$value[166]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"514\"<div class=\"access-path\">$value[166]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>167<\/dfn> => <var>stdClass<\/var>#402 (1)<div class=\"access-path\">$value[167]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"515\"<div class=\"access-path\">$value[167]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>168<\/dfn> => <var>stdClass<\/var>#403 (1)<div class=\"access-path\">$value[168]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"516\"<div class=\"access-path\">$value[168]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>169<\/dfn> => <var>stdClass<\/var>#404 (1)<div class=\"access-path\">$value[169]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"900\"<div class=\"access-path\">$value[169]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>170<\/dfn> => <var>stdClass<\/var>#405 (1)<div class=\"access-path\">$value[170]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"901\"<div class=\"access-path\">$value[170]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>171<\/dfn> => <var>stdClass<\/var>#406 (1)<div class=\"access-path\">$value[171]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"902\"<div class=\"access-path\">$value[171]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>172<\/dfn> => <var>stdClass<\/var>#407 (1)<div class=\"access-path\">$value[172]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"910\"<div class=\"access-path\">$value[172]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>173<\/dfn> => <var>stdClass<\/var>#408 (1)<div class=\"access-path\">$value[173]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"920\"<div class=\"access-path\">$value[173]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>174<\/dfn> => <var>stdClass<\/var>#409 (1)<div class=\"access-path\">$value[174]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"930\"<div class=\"access-path\">$value[174]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","dtmapkjs":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (12)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#411 (6)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"01\"<div class=\"access-path\">$value[0]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"162324655671151\"<div class=\"access-path\">$value[0]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"112554166413811\"<div class=\"access-path\">$value[0]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[0]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"926187\"<div class=\"access-path\">$value[0]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"965263\"<div class=\"access-path\">$value[0]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#412 (6)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"02\"<div class=\"access-path\">$value[1]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"117656017422686\"<div class=\"access-path\">$value[1]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (14) \"96418154167066\"<div class=\"access-path\">$value[1]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[1]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"849167\"<div class=\"access-path\">$value[1]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"857701\"<div class=\"access-path\">$value[1]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#413 (6)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"03\"<div class=\"access-path\">$value[2]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"151908567490454\"<div class=\"access-path\">$value[2]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"116921127456621\"<div class=\"access-path\">$value[2]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[2]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (7) \"1112279\"<div class=\"access-path\">$value[2]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1170820\"<div class=\"access-path\">$value[2]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#414 (6)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"04\"<div class=\"access-path\">$value[3]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"256229865814097\"<div class=\"access-path\">$value[3]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"255708201049203\"<div class=\"access-path\">$value[3]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[3]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"877992\"<div class=\"access-path\">$value[3]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"959222\"<div class=\"access-path\">$value[3]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#415 (6)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"05\"<div class=\"access-path\">$value[4]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"142317308724531\"<div class=\"access-path\">$value[4]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"132923965139070\"<div class=\"access-path\">$value[4]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[4]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"912007\"<div class=\"access-path\">$value[4]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"854448\"<div class=\"access-path\">$value[4]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#416 (6)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"06\"<div class=\"access-path\">$value[5]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"139837261465513\"<div class=\"access-path\">$value[5]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"179493664323166\"<div class=\"access-path\">$value[5]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[5]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"930351\"<div class=\"access-path\">$value[5]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1091273\"<div class=\"access-path\">$value[5]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#417 (6)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"07\"<div class=\"access-path\">$value[6]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"138827778078352\"<div class=\"access-path\">$value[6]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"139451877237764\"<div class=\"access-path\">$value[6]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[6]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"957637\"<div class=\"access-path\">$value[6]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"959109\"<div class=\"access-path\">$value[6]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#418 (6)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"08\"<div class=\"access-path\">$value[7]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"137864154782725\"<div class=\"access-path\">$value[7]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"141632806873564\"<div class=\"access-path\">$value[7]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[7]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"991044\"<div class=\"access-path\">$value[7]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"978658\"<div class=\"access-path\">$value[7]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#419 (6)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"09\"<div class=\"access-path\">$value[8]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"140807912273049\"<div class=\"access-path\">$value[8]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"138623131752297\"<div class=\"access-path\">$value[8]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[8]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"976139\"<div class=\"access-path\">$value[8]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"986283\"<div class=\"access-path\">$value[8]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#420 (6)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"10\"<div class=\"access-path\">$value[9]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"136104769648355\"<div class=\"access-path\">$value[9]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"140583337433880\"<div class=\"access-path\">$value[9]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[9]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (7) \"1001434\"<div class=\"access-path\">$value[9]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"987791\"<div class=\"access-path\">$value[9]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#421 (6)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"11\"<div class=\"access-path\">$value[10]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"146046768940592\"<div class=\"access-path\">$value[10]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"118181245874361\"<div class=\"access-path\">$value[10]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[10]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (7) \"1043589\"<div class=\"access-path\">$value[10]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1031435\"<div class=\"access-path\">$value[10]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#422 (6)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"12\"<div class=\"access-path\">$value[11]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"197947434424383\"<div class=\"access-path\">$value[11]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"144253197753455\"<div class=\"access-path\">$value[11]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[11]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (7) \"1194889\"<div class=\"access-path\">$value[11]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1173601\"<div class=\"access-path\">$value[11]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>"}},"session":{"__ci_last_regenerate":"<pre>1715934103<\/pre>","nip":"060086978","nipp":"196805201995031003","nama":"SUPARNO","kppadm":"000","jabatan":"Direktur","kantor":"Direktorat Ekstensifikasi dan Penilaian","seksi":"<pre><\/pre>","tpkantor":"KPDJP","kwladm":"991","isLogin":"<pre>1<\/pre>","_ci_previous_url":"http:\/\/localhost\/engineN\/home\/gmapkjs"},"post":{"kwl":"SEMUA","kdmap":"SEMUA","kjs":"SEMUA","kategori":"SEMUA","tahun":"2023"},"headers":{"Content-Type":"application\/x-www-form-urlencoded","Host":"localhost","Connection":"keep-alive","Cache-Control":"max-age=0","Sec-Ch-Ua":""Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"","Sec-Ch-Ua-Mobile":"?0","Sec-Ch-Ua-Platform":""Windows"","Upgrade-Insecure-Requests":"1","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36","Origin":"http:\/\/localhost","Accept":"text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,image\/apng,*\/*;q=0.8,application\/signed-exchange;v=b3;q=0.7","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"navigate","Sec-Fetch-User":"?1","Sec-Fetch-Dest":"document","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"debug-bar-tab=ci-timeline; debug-bar-state=minimized; ci_session=84lu6ft803rsdcfgu48sbqf5iskep16s"},"cookies":{"debug-bar-tab":"ci-timeline","debug-bar-state":"minimized","ci_session":"84lu6ft803rsdcfgu48sbqf5iskep16s"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715934145.401920.json b/writable/debugbar/debugbar_1715934145.401920.json deleted file mode 100644 index 65d751f6..00000000 --- a/writable/debugbar/debugbar_1715934145.401920.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/ref\/getKPP","method":"POST","isAJAX":true,"startTime":1715934145.275176,"totalTime":120.39999999999999,"totalMemory":"6.817","segmentDuration":20,"segmentCount":7,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715934145.281539,"duration":0.023514986038208008},{"name":"Routing","component":"Timer","start":1715934145.305057,"duration":0.0015459060668945312},{"name":"Before Filters","component":"Timer","start":1715934145.311265,"duration":3.0994415283203125e-5},{"name":"Controller","component":"Timer","start":1715934145.311299,"duration":0.08426094055175781},{"name":"Controller Constructor","component":"Timer","start":1715934145.311301,"duration":0.006505012512207031},{"name":"After Filters","component":"Timer","start":1715934145.39558,"duration":0.000247955322265625}]},{"title":"Database","titleSafe":"database","titleDetails":"(1 total Query, 1 unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"0.34 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KPP"\n<strong>WHERE<\/strong> "KD_KANWIL" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KD_KPP" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:52","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Ref.php:14","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKpp()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Ref->getKPP()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:52","qid":"a10e3dbafd56de305b8d2a826bc4c2da"}]},"badgeValue":1,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715934145.354888,"duration":"0.039170"},{"name":"Query","component":"Database","start":1715934145.394541,"duration":"0.000338","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KPP"\n<strong>WHERE<\/strong> "KD_KANWIL" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KD_KPP" <strong>ASC<\/strong>"}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[]},"badgeValue":null,"isEmpty":true,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":0,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[]},{"title":"Files","titleSafe":"files","titleDetails":"( 160 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseBuilder.php","name":"BaseBuilder.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Builder.php","name":"Builder.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Traits\\ConditionalTrait.php","name":"ConditionalTrait.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\Ref.php","name":"Ref.php"},{"path":"APPPATH\\Models\\Mref.php","name":"Mref.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":160,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Ref","method":"getKPP","paramCount":0,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":0,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"8.23","count":1},"dbquery":{"event":"dbquery","duration":"0.02","count":1}}},"badgeValue":2,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715934145.28991,"duration":0.00822591781616211},{"name":"Event: dbquery","component":"Events","start":1715934145.394883,"duration":1.9073486328125e-5}]}],"vars":{"varData":{"View Data":[]},"post":{"kwl":"SEMUA"},"headers":{"Content-Type":"application\/x-www-form-urlencoded; charset=UTF-8","Host":"localhost","Connection":"keep-alive","Sec-Ch-Ua":""Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"","Accept":"application\/json, text\/javascript, *\/*; q=0.01","X-Requested-With":"XMLHttpRequest","Sec-Ch-Ua-Mobile":"?0","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36","Sec-Ch-Ua-Platform":""Windows"","Origin":"http:\/\/localhost","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"cors","Sec-Fetch-Dest":"empty","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"debug-bar-tab=ci-timeline; debug-bar-state=minimized; ci_session=84lu6ft803rsdcfgu48sbqf5iskep16s"},"cookies":{"debug-bar-tab":"ci-timeline","debug-bar-state":"minimized","ci_session":"84lu6ft803rsdcfgu48sbqf5iskep16s"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Cache-Control":"no-store, max-age=0, no-cache","Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715934145.435697.json b/writable/debugbar/debugbar_1715934145.435697.json deleted file mode 100644 index 5a19b9ca..00000000 --- a/writable/debugbar/debugbar_1715934145.435697.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/ref\/getAR","method":"POST","isAJAX":true,"startTime":1715934145.278159,"totalTime":150.2,"totalMemory":"6.817","segmentDuration":25,"segmentCount":7,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715934145.296442,"duration":0.05448007583618164},{"name":"Routing","component":"Timer","start":1715934145.350925,"duration":0.001516103744506836},{"name":"Before Filters","component":"Timer","start":1715934145.357072,"duration":3.1948089599609375e-5},{"name":"Controller","component":"Timer","start":1715934145.357107,"duration":0.07120418548583984},{"name":"Controller Constructor","component":"Timer","start":1715934145.357109,"duration":0.003070831298828125},{"name":"After Filters","component":"Timer","start":1715934145.428331,"duration":0.000286102294921875}]},{"title":"Database","titleSafe":"database","titleDetails":"(1 total Query, 1 unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"0.29 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_AR"\n<strong>WHERE<\/strong> "KPPADM" = ''\n<strong>AND<\/strong> "KODESIE" = ''\n<strong>ORDER<\/strong> <strong>BY<\/strong> "NIP" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:71","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Ref.php:30","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selAR()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Ref->getAR()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:71","qid":"1a8eb06e8a222796810ebdd132c9c9eb"}]},"badgeValue":1,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715934145.395207,"duration":"0.031598"},{"name":"Query","component":"Database","start":1715934145.427306,"duration":"0.000291","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_AR"\n<strong>WHERE<\/strong> "KPPADM" = ''\n<strong>AND<\/strong> "KODESIE" = ''\n<strong>ORDER<\/strong> <strong>BY<\/strong> "NIP" <strong>ASC<\/strong>"}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[]},"badgeValue":null,"isEmpty":true,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":0,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[]},{"title":"Files","titleSafe":"files","titleDetails":"( 160 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseBuilder.php","name":"BaseBuilder.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Builder.php","name":"Builder.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Traits\\ConditionalTrait.php","name":"ConditionalTrait.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\Ref.php","name":"Ref.php"},{"path":"APPPATH\\Models\\Mref.php","name":"Mref.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":160,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Ref","method":"getAR","paramCount":0,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":0,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"19.82","count":1},"dbquery":{"event":"dbquery","duration":"0.02","count":1}}},"badgeValue":2,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715934145.32416,"duration":0.0198209285736084},{"name":"Event: dbquery","component":"Events","start":1715934145.427601,"duration":1.8835067749023438e-5}]}],"vars":{"varData":{"View Data":[]},"post":{"kpp":"","seksi":""},"headers":{"Content-Type":"application\/x-www-form-urlencoded; charset=UTF-8","Host":"localhost","Connection":"keep-alive","Sec-Ch-Ua":""Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"","Accept":"application\/json, text\/javascript, *\/*; q=0.01","X-Requested-With":"XMLHttpRequest","Sec-Ch-Ua-Mobile":"?0","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36","Sec-Ch-Ua-Platform":""Windows"","Origin":"http:\/\/localhost","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"cors","Sec-Fetch-Dest":"empty","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"debug-bar-tab=ci-timeline; debug-bar-state=minimized; ci_session=84lu6ft803rsdcfgu48sbqf5iskep16s"},"cookies":{"debug-bar-tab":"ci-timeline","debug-bar-state":"minimized","ci_session":"84lu6ft803rsdcfgu48sbqf5iskep16s"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Cache-Control":"no-store, max-age=0, no-cache","Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715934145.474532.json b/writable/debugbar/debugbar_1715934145.474532.json deleted file mode 100644 index e19400bf..00000000 --- a/writable/debugbar/debugbar_1715934145.474532.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/ref\/getSeksi","method":"POST","isAJAX":true,"startTime":1715934145.279572,"totalTime":164.3,"totalMemory":"6.817","segmentDuration":25,"segmentCount":7,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715934145.298339,"duration":0.059806108474731445},{"name":"Routing","component":"Timer","start":1715934145.358148,"duration":0.0017588138580322266},{"name":"Before Filters","component":"Timer","start":1715934145.364687,"duration":3.409385681152344e-5},{"name":"Controller","component":"Timer","start":1715934145.364725,"duration":0.07909989356994629},{"name":"Controller Constructor","component":"Timer","start":1715934145.364726,"duration":0.002588033676147461},{"name":"After Filters","component":"Timer","start":1715934145.443844,"duration":0.0002789497375488281}]},{"title":"Database","titleSafe":"database","titleDetails":"(1 total Query, 1 unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"0.29 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KASIWAS"\n<strong>WHERE<\/strong> "KPPADM" = ''\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KODESIE" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:61","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Ref.php:21","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selSeksi()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Ref->getSeksi()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:61","qid":"94232aac74603e316b5fb8042063efd9"}]},"badgeValue":1,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715934145.402722,"duration":"0.039698"},{"name":"Query","component":"Database","start":1715934145.442875,"duration":"0.000287","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KASIWAS"\n<strong>WHERE<\/strong> "KPPADM" = ''\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KODESIE" <strong>ASC<\/strong>"}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[]},"badgeValue":null,"isEmpty":true,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":0,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[]},{"title":"Files","titleSafe":"files","titleDetails":"( 160 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseBuilder.php","name":"BaseBuilder.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Builder.php","name":"Builder.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Traits\\ConditionalTrait.php","name":"ConditionalTrait.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\Ref.php","name":"Ref.php"},{"path":"APPPATH\\Models\\Mref.php","name":"Mref.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":160,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Ref","method":"getSeksi","paramCount":0,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":0,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"20.08","count":1},"dbquery":{"event":"dbquery","duration":"0.02","count":1}}},"badgeValue":2,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715934145.331232,"duration":0.020081043243408203},{"name":"Event: dbquery","component":"Events","start":1715934145.443166,"duration":1.6927719116210938e-5}]}],"vars":{"varData":{"View Data":[]},"post":{"kpp":""},"headers":{"Content-Type":"application\/x-www-form-urlencoded; charset=UTF-8","Host":"localhost","Connection":"keep-alive","Sec-Ch-Ua":""Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"","Accept":"application\/json, text\/javascript, *\/*; q=0.01","X-Requested-With":"XMLHttpRequest","Sec-Ch-Ua-Mobile":"?0","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36","Sec-Ch-Ua-Platform":""Windows"","Origin":"http:\/\/localhost","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"cors","Sec-Fetch-Dest":"empty","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"debug-bar-tab=ci-timeline; debug-bar-state=minimized; ci_session=84lu6ft803rsdcfgu48sbqf5iskep16s"},"cookies":{"debug-bar-tab":"ci-timeline","debug-bar-state":"minimized","ci_session":"84lu6ft803rsdcfgu48sbqf5iskep16s"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Cache-Control":"no-store, max-age=0, no-cache","Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715934145.542094.json b/writable/debugbar/debugbar_1715934145.542094.json deleted file mode 100644 index 32d279e9..00000000 --- a/writable/debugbar/debugbar_1715934145.542094.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/ref\/getAR","method":"POST","isAJAX":true,"startTime":1715934145.426014,"totalTime":109.8,"totalMemory":"6.817","segmentDuration":20,"segmentCount":6,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715934145.432501,"duration":0.01281881332397461},{"name":"Routing","component":"Timer","start":1715934145.445321,"duration":0.0013890266418457031},{"name":"Before Filters","component":"Timer","start":1715934145.451606,"duration":3.1948089599609375e-5},{"name":"Controller","component":"Timer","start":1715934145.451642,"duration":0.08415508270263672},{"name":"Controller Constructor","component":"Timer","start":1715934145.451643,"duration":0.002836942672729492},{"name":"After Filters","component":"Timer","start":1715934145.535818,"duration":0.0002589225769042969}]},{"title":"Database","titleSafe":"database","titleDetails":"(1 total Query, 1 unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"0.35 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_AR"\n<strong>WHERE<\/strong> "KPPADM" = 'SEMUA'\n<strong>AND<\/strong> "KODESIE" = ''\n<strong>ORDER<\/strong> <strong>BY<\/strong> "NIP" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:71","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Ref.php:30","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selAR()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Ref->getAR()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:71","qid":"ca80bcce81d8185861db1eece1aae268"}]},"badgeValue":1,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715934145.489812,"duration":"0.044488"},{"name":"Query","component":"Database","start":1715934145.534753,"duration":"0.000350","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_AR"\n<strong>WHERE<\/strong> "KPPADM" = 'SEMUA'\n<strong>AND<\/strong> "KODESIE" = ''\n<strong>ORDER<\/strong> <strong>BY<\/strong> "NIP" <strong>ASC<\/strong>"}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[]},"badgeValue":null,"isEmpty":true,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":0,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[]},{"title":"Files","titleSafe":"files","titleDetails":"( 160 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseBuilder.php","name":"BaseBuilder.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Builder.php","name":"Builder.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Traits\\ConditionalTrait.php","name":"ConditionalTrait.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\Ref.php","name":"Ref.php"},{"path":"APPPATH\\Models\\Mref.php","name":"Mref.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":160,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Ref","method":"getAR","paramCount":0,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":0,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"4.33","count":1},"dbquery":{"event":"dbquery","duration":"0.02","count":1}}},"badgeValue":2,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715934145.439439,"duration":0.00432896614074707},{"name":"Event: dbquery","component":"Events","start":1715934145.535108,"duration":2.288818359375e-5}]}],"vars":{"varData":{"View Data":[]},"post":{"kpp":"SEMUA","seksi":""},"headers":{"Content-Type":"application\/x-www-form-urlencoded; charset=UTF-8","Host":"localhost","Connection":"keep-alive","Sec-Ch-Ua":""Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"","Accept":"application\/json, text\/javascript, *\/*; q=0.01","X-Requested-With":"XMLHttpRequest","Sec-Ch-Ua-Mobile":"?0","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36","Sec-Ch-Ua-Platform":""Windows"","Origin":"http:\/\/localhost","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"cors","Sec-Fetch-Dest":"empty","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"debug-bar-tab=ci-timeline; debug-bar-state=minimized; ci_session=84lu6ft803rsdcfgu48sbqf5iskep16s"},"cookies":{"debug-bar-tab":"ci-timeline","debug-bar-state":"minimized","ci_session":"84lu6ft803rsdcfgu48sbqf5iskep16s"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Cache-Control":"no-store, max-age=0, no-cache","Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715934145.577710.json b/writable/debugbar/debugbar_1715934145.577710.json deleted file mode 100644 index 813a4b3c..00000000 --- a/writable/debugbar/debugbar_1715934145.577710.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/ref\/getSeksi","method":"POST","isAJAX":true,"startTime":1715934145.425463,"totalTime":146,"totalMemory":"6.817","segmentDuration":25,"segmentCount":6,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715934145.431763,"duration":0.05171513557434082},{"name":"Routing","component":"Timer","start":1715934145.483482,"duration":0.0015702247619628906},{"name":"Before Filters","component":"Timer","start":1715934145.48963,"duration":3.0040740966796875e-5},{"name":"Controller","component":"Timer","start":1715934145.489663,"duration":0.08177304267883301},{"name":"Controller Constructor","component":"Timer","start":1715934145.489664,"duration":0.002518892288208008},{"name":"After Filters","component":"Timer","start":1715934145.571457,"duration":0.00024509429931640625}]},{"title":"Database","titleSafe":"database","titleDetails":"(1 total Query, 1 unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"0.5 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KASIWAS"\n<strong>WHERE<\/strong> "KPPADM" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KODESIE" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:61","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Ref.php:21","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selSeksi()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Ref->getSeksi()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:61","qid":"867386e87b2baf1a0654ccae270aab6e"}]},"badgeValue":1,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715934145.528448,"duration":"0.041343"},{"name":"Query","component":"Database","start":1715934145.57025,"duration":"0.000499","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KASIWAS"\n<strong>WHERE<\/strong> "KPPADM" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KODESIE" <strong>ASC<\/strong>"}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[]},"badgeValue":null,"isEmpty":true,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":0,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[]},{"title":"Files","titleSafe":"files","titleDetails":"( 160 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseBuilder.php","name":"BaseBuilder.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Builder.php","name":"Builder.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Traits\\ConditionalTrait.php","name":"ConditionalTrait.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\Ref.php","name":"Ref.php"},{"path":"APPPATH\\Models\\Mref.php","name":"Mref.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":160,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Ref","method":"getSeksi","paramCount":0,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":0,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"19.87","count":1},"dbquery":{"event":"dbquery","duration":"0.02","count":1}}},"badgeValue":2,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715934145.455927,"duration":0.01987314224243164},{"name":"Event: dbquery","component":"Events","start":1715934145.570753,"duration":1.9788742065429688e-5}]}],"vars":{"varData":{"View Data":[]},"post":{"kpp":"SEMUA"},"headers":{"Content-Type":"application\/x-www-form-urlencoded; charset=UTF-8","Host":"localhost","Connection":"keep-alive","Sec-Ch-Ua":""Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"","Accept":"application\/json, text\/javascript, *\/*; q=0.01","X-Requested-With":"XMLHttpRequest","Sec-Ch-Ua-Mobile":"?0","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36","Sec-Ch-Ua-Platform":""Windows"","Origin":"http:\/\/localhost","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"cors","Sec-Fetch-Dest":"empty","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"debug-bar-tab=ci-timeline; debug-bar-state=minimized; ci_session=84lu6ft803rsdcfgu48sbqf5iskep16s"},"cookies":{"debug-bar-tab":"ci-timeline","debug-bar-state":"minimized","ci_session":"84lu6ft803rsdcfgu48sbqf5iskep16s"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Cache-Control":"no-store, max-age=0, no-cache","Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715934145.663964.json b/writable/debugbar/debugbar_1715934145.663964.json deleted file mode 100644 index 63a4600a..00000000 --- a/writable/debugbar/debugbar_1715934145.663964.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/ref\/getAR","method":"POST","isAJAX":true,"startTime":1715934145.497794,"totalTime":159.6,"totalMemory":"6.817","segmentDuration":25,"segmentCount":7,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715934145.519042,"duration":0.055626869201660156},{"name":"Routing","component":"Timer","start":1715934145.574672,"duration":0.0014960765838623047},{"name":"Before Filters","component":"Timer","start":1715934145.580718,"duration":3.2901763916015625e-5},{"name":"Controller","component":"Timer","start":1715934145.580755,"duration":0.07661008834838867},{"name":"Controller Constructor","component":"Timer","start":1715934145.580757,"duration":0.0025091171264648438},{"name":"After Filters","component":"Timer","start":1715934145.657385,"duration":0.0002288818359375}]},{"title":"Database","titleSafe":"database","titleDetails":"(1 total Query, 1 unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"0.67 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_AR"\n<strong>WHERE<\/strong> "KPPADM" = 'SEMUA'\n<strong>AND<\/strong> "KODESIE" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "NIP" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:71","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Ref.php:30","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selAR()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Ref->getAR()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:71","qid":"4e8767de9eaafb18c91dec009d5d32b3"}]},"badgeValue":1,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715934145.617818,"duration":"0.036471"},{"name":"Query","component":"Database","start":1715934145.656017,"duration":"0.000669","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_AR"\n<strong>WHERE<\/strong> "KPPADM" = 'SEMUA'\n<strong>AND<\/strong> "KODESIE" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "NIP" <strong>ASC<\/strong>"}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[]},"badgeValue":null,"isEmpty":true,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":0,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[]},{"title":"Files","titleSafe":"files","titleDetails":"( 160 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseBuilder.php","name":"BaseBuilder.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Builder.php","name":"Builder.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Traits\\ConditionalTrait.php","name":"ConditionalTrait.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\Ref.php","name":"Ref.php"},{"path":"APPPATH\\Models\\Mref.php","name":"Mref.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":160,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Ref","method":"getAR","paramCount":0,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":0,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"21.53","count":1},"dbquery":{"event":"dbquery","duration":"0.02","count":1}}},"badgeValue":2,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715934145.54641,"duration":0.021528005599975586},{"name":"Event: dbquery","component":"Events","start":1715934145.656691,"duration":2.288818359375e-5}]}],"vars":{"varData":{"View Data":[]},"post":{"kpp":"SEMUA","seksi":"SEMUA"},"headers":{"Content-Type":"application\/x-www-form-urlencoded; charset=UTF-8","Host":"localhost","Connection":"keep-alive","Sec-Ch-Ua":""Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"","Accept":"application\/json, text\/javascript, *\/*; q=0.01","X-Requested-With":"XMLHttpRequest","Sec-Ch-Ua-Mobile":"?0","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36","Sec-Ch-Ua-Platform":""Windows"","Origin":"http:\/\/localhost","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"cors","Sec-Fetch-Dest":"empty","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"debug-bar-tab=ci-timeline; debug-bar-state=minimized; ci_session=84lu6ft803rsdcfgu48sbqf5iskep16s"},"cookies":{"debug-bar-tab":"ci-timeline","debug-bar-state":"minimized","ci_session":"84lu6ft803rsdcfgu48sbqf5iskep16s"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Cache-Control":"no-store, max-age=0, no-cache","Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715934145.752292.json b/writable/debugbar/debugbar_1715934145.752292.json deleted file mode 100644 index 1b3f5817..00000000 --- a/writable/debugbar/debugbar_1715934145.752292.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/ref\/getAR","method":"POST","isAJAX":true,"startTime":1715934145.599607,"totalTime":146.4,"totalMemory":"6.817","segmentDuration":25,"segmentCount":6,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715934145.605163,"duration":0.05313682556152344},{"name":"Routing","component":"Timer","start":1715934145.658303,"duration":0.0019850730895996094},{"name":"Before Filters","component":"Timer","start":1715934145.664959,"duration":3.0040740966796875e-5},{"name":"Controller","component":"Timer","start":1715934145.664992,"duration":0.08099794387817383},{"name":"Controller Constructor","component":"Timer","start":1715934145.664994,"duration":0.002630949020385742},{"name":"After Filters","component":"Timer","start":1715934145.746012,"duration":0.0002391338348388672}]},{"title":"Database","titleSafe":"database","titleDetails":"(1 total Query, 1 unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"0.55 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_AR"\n<strong>WHERE<\/strong> "KPPADM" = 'SEMUA'\n<strong>AND<\/strong> "KODESIE" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "NIP" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:71","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Ref.php:30","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selAR()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Ref->getAR()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:71","qid":"a2d6c4bd815d20d70ac735d006991156"}]},"badgeValue":1,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715934145.702059,"duration":"0.042112"},{"name":"Query","component":"Database","start":1715934145.744811,"duration":"0.000545","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_AR"\n<strong>WHERE<\/strong> "KPPADM" = 'SEMUA'\n<strong>AND<\/strong> "KODESIE" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "NIP" <strong>ASC<\/strong>"}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[]},"badgeValue":null,"isEmpty":true,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":0,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[]},{"title":"Files","titleSafe":"files","titleDetails":"( 160 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseBuilder.php","name":"BaseBuilder.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Builder.php","name":"Builder.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Traits\\ConditionalTrait.php","name":"ConditionalTrait.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\Ref.php","name":"Ref.php"},{"path":"APPPATH\\Models\\Mref.php","name":"Mref.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":160,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Ref","method":"getAR","paramCount":0,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":0,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"19.31","count":1},"dbquery":{"event":"dbquery","duration":"0.02","count":1}}},"badgeValue":2,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715934145.628817,"duration":0.019310951232910156},{"name":"Event: dbquery","component":"Events","start":1715934145.74536,"duration":2.2172927856445312e-5}]}],"vars":{"varData":{"View Data":[]},"post":{"kpp":"SEMUA","seksi":"SEMUA"},"headers":{"Content-Type":"application\/x-www-form-urlencoded; charset=UTF-8","Host":"localhost","Connection":"keep-alive","Sec-Ch-Ua":""Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"","Accept":"application\/json, text\/javascript, *\/*; q=0.01","X-Requested-With":"XMLHttpRequest","Sec-Ch-Ua-Mobile":"?0","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36","Sec-Ch-Ua-Platform":""Windows"","Origin":"http:\/\/localhost","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"cors","Sec-Fetch-Dest":"empty","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"debug-bar-tab=ci-timeline; debug-bar-state=minimized; ci_session=84lu6ft803rsdcfgu48sbqf5iskep16s"},"cookies":{"debug-bar-tab":"ci-timeline","debug-bar-state":"minimized","ci_session":"84lu6ft803rsdcfgu48sbqf5iskep16s"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Cache-Control":"no-store, max-age=0, no-cache","Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715934149.746936.json b/writable/debugbar/debugbar_1715934149.746936.json deleted file mode 100644 index f25078f6..00000000 --- a/writable/debugbar/debugbar_1715934149.746936.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/home\/grafMAPKJS\/SEMUA\/SEMUA\/SEMUA\/SEMUA\/2023\/SEMUA\/SEMUA\/SEMUA","method":"GET","isAJAX":true,"startTime":1715934145.261425,"totalTime":4479.5,"totalMemory":"6.580","segmentDuration":640,"segmentCount":7,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715934145.268188,"duration":0.03082895278930664},{"name":"Routing","component":"Timer","start":1715934145.29902,"duration":0.0038068294525146484},{"name":"Before Filters","component":"Timer","start":1715934145.315816,"duration":3.314018249511719e-5},{"name":"Controller","component":"Timer","start":1715934145.315853,"duration":4.42509388923645},{"name":"Controller Constructor","component":"Timer","start":1715934145.315855,"duration":0.005084991455078125},{"name":"After Filters","component":"Timer","start":1715934149.740966,"duration":0.00025391578674316406}]},{"title":"Database","titleSafe":"database","titleDetails":"(1 total Query, 1 unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"4328.43 ms","sql":"<strong>SELECT<\/strong> \r\n BLNBYR,\r\n (<strong>SELECT<\/strong> <strong>SUM<\/strong>(JUMLAH)POPULASI <strong>FROM<\/strong> KEWAJIBAN_FLAGN\r\n <strong>WHERE<\/strong> KD_MAP <> 0 ) POPULASI,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN 1 ELSE 0 END) WPBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2022' THEN 1 ELSE 0 END) WPBYRPAST,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN TOTAL ELSE 0 END) JMLBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2022' THEN TOTAL ELSE 0 END) JMLBYRPAST\r\n <strong>FROM<\/strong> (<strong>SELECT<\/strong> NPWP,THNBYR,BLNBYR,<strong>SUM<\/strong>(TOTAL) TOTAL <strong>FROM<\/strong> DASHBOARD_BESAR_MAPKJS\r\n <strong>WHERE<\/strong> THNBYR BETWEEN '2022' <strong>AND<\/strong> '2023' \r\n <strong>GROUP<\/strong> <strong>BY<\/strong> NPWP,THNBYR,BLNBYR\r\n )\r\n <strong>GROUP<\/strong> <strong>BY<\/strong> BLNBYR <strong>ORDER<\/strong> <strong>BY<\/strong> BLNBYR <strong>ASC<\/strong>\r\n ","trace":[{"file":"APPPATH\\Models\\Mpemby.php:381","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:219","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mpemby->gmapkjs()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->grafMAPKJS()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mpemby.php:381","qid":"036aa694b59bd6534e45bae93ac3a544"}]},"badgeValue":1,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715934145.372565,"duration":"0.038554"},{"name":"Query","component":"Database","start":1715934145.411598,"duration":"4.328428","query":"<strong>SELECT<\/strong> \r\n BLNBYR,\r\n (<strong>SELECT<\/strong> <strong>SUM<\/strong>(JUMLAH)POPULASI <strong>FROM<\/strong> KEWAJIBAN_FLAGN\r\n <strong>WHERE<\/strong> KD_MAP <> 0 ) POPULASI,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN 1 ELSE 0 END) WPBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2022' THEN 1 ELSE 0 END) WPBYRPAST,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN TOTAL ELSE 0 END) JMLBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2022' THEN TOTAL ELSE 0 END) JMLBYRPAST\r\n <strong>FROM<\/strong> (<strong>SELECT<\/strong> NPWP,THNBYR,BLNBYR,<strong>SUM<\/strong>(TOTAL) TOTAL <strong>FROM<\/strong> DASHBOARD_BESAR_MAPKJS\r\n <strong>WHERE<\/strong> THNBYR BETWEEN '2022' <strong>AND<\/strong> '2023' \r\n <strong>GROUP<\/strong> <strong>BY<\/strong> NPWP,THNBYR,BLNBYR\r\n )\r\n <strong>GROUP<\/strong> <strong>BY<\/strong> BLNBYR <strong>ORDER<\/strong> <strong>BY<\/strong> BLNBYR <strong>ASC<\/strong>\r\n "}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[{"level":"info","msg":"Session: Class initialized using 'CodeIgniter\\Session\\Handlers\\FileHandler' driver."}]},"badgeValue":null,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":0,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[]},{"title":"Files","titleSafe":"files","titleDetails":"( 168 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\HandlerInterface.php","name":"HandlerInterface.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Session\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Session\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Session\\Session.php","name":"Session.php"},{"path":"SYSTEMPATH\\Session\\SessionInterface.php","name":"SessionInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Session.php","name":"Session.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\BaseController.php","name":"BaseController.php"},{"path":"APPPATH\\Controllers\\Home.php","name":"Home.php"},{"path":"APPPATH\\Helpers\\myhelper_helper.php","name":"myhelper_helper.php"},{"path":"APPPATH\\Models\\Mpemby.php","name":"Mpemby.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerAwareTrait.php","name":"LoggerAwareTrait.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":168,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Home","method":"grafMAPKJS","paramCount":8,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":2,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"17.20","count":1},"dbquery":{"event":"dbquery","duration":"0.03","count":1}}},"badgeValue":2,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715934145.274818,"duration":0.017203092575073242},{"name":"Event: dbquery","component":"Events","start":1715934149.740037,"duration":2.5987625122070312e-5}]}],"vars":{"varData":{"View Data":[]},"session":{"__ci_last_regenerate":"<pre>1715934103<\/pre>","nip":"060086978","nipp":"196805201995031003","nama":"SUPARNO","kppadm":"000","jabatan":"Direktur","kantor":"Direktorat Ekstensifikasi dan Penilaian","seksi":"<pre><\/pre>","tpkantor":"KPDJP","kwladm":"991","isLogin":"<pre>1<\/pre>","_ci_previous_url":"http:\/\/localhost\/engineN\/home\/gmapkjs"},"headers":{"Host":"localhost","Connection":"keep-alive","Sec-Ch-Ua":""Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"","Accept":"application\/json, text\/javascript, *\/*; q=0.01","X-Requested-With":"XMLHttpRequest","Sec-Ch-Ua-Mobile":"?0","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36","Sec-Ch-Ua-Platform":""Windows"","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"cors","Sec-Fetch-Dest":"empty","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"debug-bar-tab=ci-timeline; debug-bar-state=minimized; ci_session=84lu6ft803rsdcfgu48sbqf5iskep16s"},"cookies":{"debug-bar-tab":"ci-timeline","debug-bar-state":"minimized","ci_session":"84lu6ft803rsdcfgu48sbqf5iskep16s"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715934198.579107.json b/writable/debugbar/debugbar_1715934198.579107.json deleted file mode 100644 index 4328eceb..00000000 --- a/writable/debugbar/debugbar_1715934198.579107.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/home\/gmapkjs","method":"POST","isAJAX":false,"startTime":1715934195.287193,"totalTime":3268.5,"totalMemory":"7.766","segmentDuration":470,"segmentCount":7,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715934195.293099,"duration":0.024204015731811523},{"name":"Routing","component":"Timer","start":1715934195.317306,"duration":0.0030908584594726562},{"name":"Before Filters","component":"Timer","start":1715934195.325099,"duration":3.600120544433594e-5},{"name":"Controller","component":"Timer","start":1715934195.32514,"duration":3.230581045150757},{"name":"Controller Constructor","component":"Timer","start":1715934195.325141,"duration":0.0051670074462890625},{"name":"After Filters","component":"Timer","start":1715934198.555737,"duration":0.0002410411834716797}]},{"title":"Database","titleSafe":"database","titleDetails":"(7 total Queries, 7 of them unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"0.51 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KANWIL"\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KODE" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:43","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:183","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKwl()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:43","qid":"eeb815a4579a3431d90b49f8747336f3"},{"hover":"","class":"","duration":"0.18 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "BULAN"","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:35","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:184","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selBln()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:35","qid":"d4896e4284ff3d693c47234468cd35ff"},{"hover":"","class":"","duration":"0.27 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KPP"\n<strong>WHERE<\/strong> "KD_KANWIL" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KD_KPP" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:52","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:185","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKpp()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:52","qid":"c0070c23d64ce2e657c41daba23a963a"},{"hover":"","class":"","duration":"0.52 ms","sql":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_KATEGORI KATEGORI, NM_KATEGORIPDK NAMA <strong>FROM<\/strong> REF_KLU\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_KATEGORI <strong>ASC<\/strong>","trace":[{"file":"APPPATH\\Models\\Mref.php:11","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:187","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKLU()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:11","qid":"5c49c2dc0b605c45a125b9c623ad0644"},{"hover":"","class":"","duration":"0.56 ms","sql":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_MAP,NM_MAP <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_MAP <strong>ASC<\/strong>","trace":[{"file":"APPPATH\\Models\\Mref.php:18","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:188","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selMAP()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:18","qid":"41d0bd00ecb3fc950444d8be0ea04258"},{"hover":"","class":"","duration":"0.42 ms","sql":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_SETOR KJS <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>WHERE<\/strong> TRIM(KD_SETOR) <strong>IS<\/strong> <strong>NOT<\/strong> <strong>NULL<\/strong>\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_SETOR <strong>ASC<\/strong>","trace":[{"file":"APPPATH\\Models\\Mref.php:25","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:189","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKJS()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:25","qid":"466613bc72b18379b478263526e51812"},{"hover":"","class":"","duration":"3114.87 ms","sql":"<strong>SELECT<\/strong> \r\n BLNBYR,\r\n (<strong>SELECT<\/strong> <strong>SUM<\/strong>(JUMLAH)POPULASI <strong>FROM<\/strong> KEWAJIBAN_FLAGN\r\n <strong>WHERE<\/strong> KD_MAP <> 0 ) POPULASI,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN 1 ELSE 0 END) WPBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN 1 ELSE 0 END) WPBYRPAST,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN TOTAL ELSE 0 END) JMLBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN TOTAL ELSE 0 END) JMLBYRPAST\r\n <strong>FROM<\/strong> (<strong>SELECT<\/strong> NPWP,THNBYR,BLNBYR,<strong>SUM<\/strong>(TOTAL) TOTAL <strong>FROM<\/strong> DASHBOARD_BESAR_MAPKJS\r\n <strong>WHERE<\/strong> THNBYR BETWEEN '2023' <strong>AND<\/strong> '2024' \r\n <strong>GROUP<\/strong> <strong>BY<\/strong> NPWP,THNBYR,BLNBYR\r\n )\r\n <strong>GROUP<\/strong> <strong>BY<\/strong> BLNBYR <strong>ORDER<\/strong> <strong>BY<\/strong> BLNBYR <strong>ASC<\/strong>\r\n ","trace":[{"file":"APPPATH\\Models\\Mpemby.php:381","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:190","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mpemby->gmapkjs()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->gmapkjs()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mpemby.php:381","qid":"d3d7273c1730e274a30ec885dc675d29"}]},"badgeValue":7,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715934195.383944,"duration":"0.049014"},{"name":"Query","component":"Database","start":1715934195.433436,"duration":"0.000507","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KANWIL"\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KODE" <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934195.434753,"duration":"0.000179","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "BULAN""},{"name":"Query","component":"Database","start":1715934195.43503,"duration":"0.000269","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KPP"\n<strong>WHERE<\/strong> "KD_KANWIL" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KD_KPP" <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934195.435328,"duration":"0.000518","query":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_KATEGORI KATEGORI, NM_KATEGORIPDK NAMA <strong>FROM<\/strong> REF_KLU\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_KATEGORI <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934195.435871,"duration":"0.000556","query":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_MAP,NM_MAP <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_MAP <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934195.436484,"duration":"0.000422","query":"<strong>SELECT<\/strong> <strong>DISTINCT<\/strong> KD_SETOR KJS <strong>FROM<\/strong> DIM_MAP_KJS\r\n <strong>WHERE<\/strong> TRIM(KD_SETOR) <strong>IS<\/strong> <strong>NOT<\/strong> <strong>NULL<\/strong>\r\n <strong>ORDER<\/strong> <strong>BY<\/strong> KD_SETOR <strong>ASC<\/strong>"},{"name":"Query","component":"Database","start":1715934195.436992,"duration":"3.114873","query":"<strong>SELECT<\/strong> \r\n BLNBYR,\r\n (<strong>SELECT<\/strong> <strong>SUM<\/strong>(JUMLAH)POPULASI <strong>FROM<\/strong> KEWAJIBAN_FLAGN\r\n <strong>WHERE<\/strong> KD_MAP <> 0 ) POPULASI,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN 1 ELSE 0 END) WPBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN 1 ELSE 0 END) WPBYRPAST,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN TOTAL ELSE 0 END) JMLBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN TOTAL ELSE 0 END) JMLBYRPAST\r\n <strong>FROM<\/strong> (<strong>SELECT<\/strong> NPWP,THNBYR,BLNBYR,<strong>SUM<\/strong>(TOTAL) TOTAL <strong>FROM<\/strong> DASHBOARD_BESAR_MAPKJS\r\n <strong>WHERE<\/strong> THNBYR BETWEEN '2023' <strong>AND<\/strong> '2024' \r\n <strong>GROUP<\/strong> <strong>BY<\/strong> NPWP,THNBYR,BLNBYR\r\n )\r\n <strong>GROUP<\/strong> <strong>BY<\/strong> BLNBYR <strong>ORDER<\/strong> <strong>BY<\/strong> BLNBYR <strong>ASC<\/strong>\r\n "}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[{"level":"info","msg":"Session: Class initialized using 'CodeIgniter\\Session\\Handlers\\FileHandler' driver."}]},"badgeValue":null,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":6,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"View: inc\/head.php","component":"Views","start":1715934198.552018,"duration":0.0010161399841308594},{"name":"View: inc\/navbar.php","component":"Views","start":1715934198.55325,"duration":0.00030493736267089844},{"name":"View: inc\/sidebar.php","component":"Views","start":1715934198.553706,"duration":0.0005061626434326172},{"name":"View: inc\/js.php","component":"Views","start":1715934198.554992,"duration":0.0004260540008544922},{"name":"View: ppm\/gmapkjs.php","component":"Views","start":1715934198.554299,"duration":0.0012278556823730469},{"name":"View: inc\/footer.php","component":"Views","start":1715934198.555589,"duration":9.202957153320312e-5}]},{"title":"Files","titleSafe":"files","titleDetails":"( 178 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseBuilder.php","name":"BaseBuilder.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Builder.php","name":"Builder.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\HandlerInterface.php","name":"HandlerInterface.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Session\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Session\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Session\\Session.php","name":"Session.php"},{"path":"SYSTEMPATH\\Session\\SessionInterface.php","name":"SessionInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Traits\\ConditionalTrait.php","name":"ConditionalTrait.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Session.php","name":"Session.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\BaseController.php","name":"BaseController.php"},{"path":"APPPATH\\Controllers\\Home.php","name":"Home.php"},{"path":"APPPATH\\Helpers\\myhelper_helper.php","name":"myhelper_helper.php"},{"path":"APPPATH\\Models\\Mpemby.php","name":"Mpemby.php"},{"path":"APPPATH\\Models\\Mref.php","name":"Mref.php"},{"path":"APPPATH\\Views\\inc\\footer.php","name":"footer.php"},{"path":"APPPATH\\Views\\inc\\head.php","name":"head.php"},{"path":"APPPATH\\Views\\inc\\js.php","name":"js.php"},{"path":"APPPATH\\Views\\inc\\navbar.php","name":"navbar.php"},{"path":"APPPATH\\Views\\inc\\sidebar.php","name":"sidebar.php"},{"path":"APPPATH\\Views\\ppm\\gmapkjs.php","name":"gmapkjs.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerAwareTrait.php","name":"LoggerAwareTrait.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":178,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Home","method":"gmapkjs","paramCount":0,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":0,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"10.52","count":1},"dbquery":{"event":"dbquery","duration":"0.13","count":7}}},"badgeValue":8,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715934195.299898,"duration":0.010516166687011719},{"name":"Event: dbquery","component":"Events","start":1715934195.433953,"duration":3.790855407714844e-5},{"name":"Event: dbquery","component":"Events","start":1715934195.434936,"duration":1.7881393432617188e-5},{"name":"Event: dbquery","component":"Events","start":1715934195.435301,"duration":8.821487426757812e-6},{"name":"Event: dbquery","component":"Events","start":1715934195.435847,"duration":5.0067901611328125e-6},{"name":"Event: dbquery","component":"Events","start":1715934195.436429,"duration":1.0967254638671875e-5},{"name":"Event: dbquery","component":"Events","start":1715934195.436907,"duration":6.9141387939453125e-6},{"name":"Event: dbquery","component":"Events","start":1715934198.551873,"duration":4.00543212890625e-5}]}],"vars":{"varData":{"View Data":{"kwlx":"SEMUA","kppx":"SEMUA","seksix":"SEMUA","nipx":"SEMUA","tahunx":"2024","bulanx":"01","bulan2x":"05","mapx":"SEMUA","kjsx":"SEMUA","kategorix":"SEMUA","selkwl":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (34)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#105 (3)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"010\"<div class=\"access-path\">$value[0]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"010\"<div class=\"access-path\">$value[0]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (15) \"Kanwil DJP Aceh\"<div class=\"access-path\">$value[0]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#108 (3)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"020\"<div class=\"access-path\">$value[1]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"020\"<div class=\"access-path\">$value[1]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (27) \"Kanwil DJP Sumatera Utara I\"<div class=\"access-path\">$value[1]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#109 (3)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"030\"<div class=\"access-path\">$value[2]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"030\"<div class=\"access-path\">$value[2]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"Kanwil DJP Sumatera Utara II\"<div class=\"access-path\">$value[2]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#110 (3)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"040\"<div class=\"access-path\">$value[3]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"040\"<div class=\"access-path\">$value[3]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (15) \"Kanwil DJP Riau\"<div class=\"access-path\">$value[3]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#111 (3)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"050\"<div class=\"access-path\">$value[4]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"050\"<div class=\"access-path\">$value[4]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (35) \"Kanwil DJP Sumatera Barat dan Jambi\"<div class=\"access-path\">$value[4]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#112 (3)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"060\"<div class=\"access-path\">$value[5]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"060\"<div class=\"access-path\">$value[5]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (57) \"Kanwil DJP Sumatera Selatan dan Kepulauan Bangka Belitung\"<div class=\"access-path\">$value[5]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#113 (3)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"070\"<div class=\"access-path\">$value[6]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"070\"<div class=\"access-path\">$value[6]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (31) \"Kanwil DJP Bengkulu dan Lampung\"<div class=\"access-path\">$value[6]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#114 (3)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"080\"<div class=\"access-path\">$value[7]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"080\"<div class=\"access-path\">$value[7]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Pusat\"<div class=\"access-path\">$value[7]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#115 (3)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"090\"<div class=\"access-path\">$value[8]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"090\"<div class=\"access-path\">$value[8]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Barat\"<div class=\"access-path\">$value[8]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#116 (3)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"100\"<div class=\"access-path\">$value[9]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"100\"<div class=\"access-path\">$value[9]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"Kanwil DJP Jakarta Selatan I\"<div class=\"access-path\">$value[9]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#117 (3)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"110\"<div class=\"access-path\">$value[10]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"110\"<div class=\"access-path\">$value[10]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Timur\"<div class=\"access-path\">$value[10]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#118 (3)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"120\"<div class=\"access-path\">$value[11]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"120\"<div class=\"access-path\">$value[11]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jakarta Utara\"<div class=\"access-path\">$value[11]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#119 (3)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"130\"<div class=\"access-path\">$value[12]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"130\"<div class=\"access-path\">$value[12]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jakarta Khusus\"<div class=\"access-path\">$value[12]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#120 (3)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"140\"<div class=\"access-path\">$value[13]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"140\"<div class=\"access-path\">$value[13]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (17) \"Kanwil DJP Banten\"<div class=\"access-path\">$value[13]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#121 (3)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"150\"<div class=\"access-path\">$value[14]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"150\"<div class=\"access-path\">$value[14]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (23) \"Kanwil DJP Jawa Barat I\"<div class=\"access-path\">$value[14]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#122 (3)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"160\"<div class=\"access-path\">$value[15]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"160\"<div class=\"access-path\">$value[15]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jawa Barat II\"<div class=\"access-path\">$value[15]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#123 (3)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"170\"<div class=\"access-path\">$value[16]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"170\"<div class=\"access-path\">$value[16]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jawa Tengah I\"<div class=\"access-path\">$value[16]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#124 (3)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"180\"<div class=\"access-path\">$value[17]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"180\"<div class=\"access-path\">$value[17]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jawa Tengah II\"<div class=\"access-path\">$value[17]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#125 (3)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"190\"<div class=\"access-path\">$value[18]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"190\"<div class=\"access-path\">$value[18]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (37) \"Kanwil DJP Daerah Istimewa Yogyakarta\"<div class=\"access-path\">$value[18]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#126 (3)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"200\"<div class=\"access-path\">$value[19]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"200\"<div class=\"access-path\">$value[19]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (23) \"Kanwil DJP Jawa Timur I\"<div class=\"access-path\">$value[19]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#127 (3)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"210\"<div class=\"access-path\">$value[20]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"210\"<div class=\"access-path\">$value[20]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Jawa Timur II\"<div class=\"access-path\">$value[20]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#128 (3)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"220\"<div class=\"access-path\">$value[21]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"220\"<div class=\"access-path\">$value[21]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jawa Timur III\"<div class=\"access-path\">$value[21]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>22<\/dfn> => <var>stdClass<\/var>#129 (3)<div class=\"access-path\">$value[22]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"230\"<div class=\"access-path\">$value[22]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"230\"<div class=\"access-path\">$value[22]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (27) \"Kanwil DJP Kalimantan Barat\"<div class=\"access-path\">$value[22]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>23<\/dfn> => <var>stdClass<\/var>#130 (3)<div class=\"access-path\">$value[23]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"240\"<div class=\"access-path\">$value[23]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"240\"<div class=\"access-path\">$value[23]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (40) \"Kanwil DJP Kalimantan Selatan dan Tengah\"<div class=\"access-path\">$value[23]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>24<\/dfn> => <var>stdClass<\/var>#131 (3)<div class=\"access-path\">$value[24]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"250\"<div class=\"access-path\">$value[24]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"250\"<div class=\"access-path\">$value[24]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (37) \"Kanwil DJP Kalimantan Timur dan Utara\"<div class=\"access-path\">$value[24]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>25<\/dfn> => <var>stdClass<\/var>#132 (3)<div class=\"access-path\">$value[25]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"260\"<div class=\"access-path\">$value[25]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"260\"<div class=\"access-path\">$value[25]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (48) \"Kanwil DJP Sulawesi Selatan, Barat, dan Tenggara\"<div class=\"access-path\">$value[25]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>26<\/dfn> => <var>stdClass<\/var>#133 (3)<div class=\"access-path\">$value[26]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"270\"<div class=\"access-path\">$value[26]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"270\"<div class=\"access-path\">$value[26]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (62) \"Kanwil DJP Sulawesi Utara, Tengah, Gorontalo, dan Maluku Utara\"<div class=\"access-path\">$value[26]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>27<\/dfn> => <var>stdClass<\/var>#134 (3)<div class=\"access-path\">$value[27]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"280\"<div class=\"access-path\">$value[27]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"280\"<div class=\"access-path\">$value[27]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (15) \"Kanwil DJP Bali\"<div class=\"access-path\">$value[27]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>28<\/dfn> => <var>stdClass<\/var>#135 (3)<div class=\"access-path\">$value[28]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"290\"<div class=\"access-path\">$value[28]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"290\"<div class=\"access-path\">$value[28]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"Kanwil DJP Nusa Tenggara\"<div class=\"access-path\">$value[28]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>29<\/dfn> => <var>stdClass<\/var>#136 (3)<div class=\"access-path\">$value[29]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"300\"<div class=\"access-path\">$value[29]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"300\"<div class=\"access-path\">$value[29]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (41) \"Kanwil DJP Papua, Papua Barat, dan Maluku\"<div class=\"access-path\">$value[29]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>30<\/dfn> => <var>stdClass<\/var>#137 (3)<div class=\"access-path\">$value[30]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"310\"<div class=\"access-path\">$value[30]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"310\"<div class=\"access-path\">$value[30]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"Kanwil DJP Wajib Pajak Besar\"<div class=\"access-path\">$value[30]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>31<\/dfn> => <var>stdClass<\/var>#138 (3)<div class=\"access-path\">$value[31]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"320\"<div class=\"access-path\">$value[31]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"320\"<div class=\"access-path\">$value[31]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (29) \"Kanwil DJP Jakarta Selatan II\"<div class=\"access-path\">$value[31]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>32<\/dfn> => <var>stdClass<\/var>#139 (3)<div class=\"access-path\">$value[32]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"330\"<div class=\"access-path\">$value[32]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"330\"<div class=\"access-path\">$value[32]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Jawa Barat III\"<div class=\"access-path\">$value[32]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>33<\/dfn> => <var>stdClass<\/var>#140 (3)<div class=\"access-path\">$value[33]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (3) \"340\"<div class=\"access-path\">$value[33]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KPP_ADM<\/dfn> -> <var>string<\/var> (3) \"340\"<div class=\"access-path\">$value[33]->KPP_ADM<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"Kanwil DJP Kepulauan Riau\"<div class=\"access-path\">$value[33]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selbulan":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (12)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#107 (3)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"01\"<div class=\"access-path\">$value[0]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (7) \"JANUARI\"<div class=\"access-path\">$value[0]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"JAN\"<div class=\"access-path\">$value[0]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#143 (3)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"02\"<div class=\"access-path\">$value[1]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (8) \"FEBRUARI\"<div class=\"access-path\">$value[1]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"FEB\"<div class=\"access-path\">$value[1]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#144 (3)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"03\"<div class=\"access-path\">$value[2]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (5) \"MARET\"<div class=\"access-path\">$value[2]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"MAR\"<div class=\"access-path\">$value[2]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#145 (3)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"04\"<div class=\"access-path\">$value[3]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (5) \"APRIL\"<div class=\"access-path\">$value[3]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"APR\"<div class=\"access-path\">$value[3]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#146 (3)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"05\"<div class=\"access-path\">$value[4]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (3) \"MEI\"<div class=\"access-path\">$value[4]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"MEI\"<div class=\"access-path\">$value[4]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#147 (3)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"06\"<div class=\"access-path\">$value[5]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (4) \"JUNI\"<div class=\"access-path\">$value[5]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"JUN\"<div class=\"access-path\">$value[5]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#148 (3)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"07\"<div class=\"access-path\">$value[6]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (4) \"JULI\"<div class=\"access-path\">$value[6]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"JUL\"<div class=\"access-path\">$value[6]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#149 (3)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"08\"<div class=\"access-path\">$value[7]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (7) \"AGUSTUS\"<div class=\"access-path\">$value[7]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (5) \"AGUST\"<div class=\"access-path\">$value[7]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#150 (3)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"09\"<div class=\"access-path\">$value[8]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (9) \"SEPTEMBER\"<div class=\"access-path\">$value[8]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"SEP\"<div class=\"access-path\">$value[8]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#151 (3)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"10\"<div class=\"access-path\">$value[9]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (7) \"OKTOBER\"<div class=\"access-path\">$value[9]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"OKT\"<div class=\"access-path\">$value[9]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#152 (3)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"11\"<div class=\"access-path\">$value[10]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (8) \"NOPEMBER\"<div class=\"access-path\">$value[10]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"NOP\"<div class=\"access-path\">$value[10]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#153 (3)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (3)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KODE<\/dfn> -> <var>string<\/var> (2) \"12\"<div class=\"access-path\">$value[11]->KODE<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PANJANG<\/dfn> -> <var>string<\/var> (8) \"DESEMBER\"<div class=\"access-path\">$value[11]->NM_PANJANG<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_PENDEK<\/dfn> -> <var>string<\/var> (3) \"DES\"<div class=\"access-path\">$value[11]->NM_PENDEK<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selkpp":"<div class=\"kint-rich\"><dl><dt><dfn>$value<\/dfn> <var>array<\/var> (0)<\/dt><\/dl><\/div>","selklu":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (22)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#156 (2)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"A\"<div class=\"access-path\">$value[0]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (9) \"PERTANIAN\"<div class=\"access-path\">$value[0]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#157 (2)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"B\"<div class=\"access-path\">$value[1]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (27) \"PERTAMBANGAN DAN PENGGALIAN\"<div class=\"access-path\">$value[1]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#158 (2)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"C\"<div class=\"access-path\">$value[2]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (19) \"INDUSTRI PENGOLAHAN\"<div class=\"access-path\">$value[2]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#159 (2)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"D\"<div class=\"access-path\">$value[3]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (17) \"PENGADAAN LISTRIK\"<div class=\"access-path\">$value[3]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#160 (2)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"E\"<div class=\"access-path\">$value[4]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (13) \"TREATMENT AIR\"<div class=\"access-path\">$value[4]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#161 (2)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"F\"<div class=\"access-path\">$value[5]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (10) \"KONSTRUKSI\"<div class=\"access-path\">$value[5]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#162 (2)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"G\"<div class=\"access-path\">$value[6]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"PERDAGANGAN BESAR DAN ECERAN\"<div class=\"access-path\">$value[6]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#163 (2)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"H\"<div class=\"access-path\">$value[7]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (28) \"PENGANGKUTAN DAN PERGUDANGAN\"<div class=\"access-path\">$value[7]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#164 (2)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"I\"<div class=\"access-path\">$value[8]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (47) \"PENYEDIAAN AKOMODASI DAN PENYEDIAAN MAKAN MINUM\"<div class=\"access-path\">$value[8]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#165 (2)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"J\"<div class=\"access-path\">$value[9]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (24) \"INFORMASI DAN KOMUNIKASI\"<div class=\"access-path\">$value[9]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#166 (2)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"K\"<div class=\"access-path\">$value[10]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (31) \"AKTIVITAS KEUANGAN DAN ASURANSI\"<div class=\"access-path\">$value[10]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#167 (2)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"L\"<div class=\"access-path\">$value[11]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (10) \"REAL ESTAT\"<div class=\"access-path\">$value[11]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#168 (2)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"M\"<div class=\"access-path\">$value[12]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (21) \"AKTIVITAS PROFESIONAL\"<div class=\"access-path\">$value[12]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#169 (2)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"N\"<div class=\"access-path\">$value[13]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (54) \"AKTIVITAS PENYEWAAN DAN SEWA GUNA USAHA TANPA HAK OPSI\"<div class=\"access-path\">$value[13]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#170 (2)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"O\"<div class=\"access-path\">$value[14]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (25) \"ADMINISTRASI PEMERINTAHAN\"<div class=\"access-path\">$value[14]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#171 (2)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"P\"<div class=\"access-path\">$value[15]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (10) \"PENDIDIKAN\"<div class=\"access-path\">$value[15]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#172 (2)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"Q\"<div class=\"access-path\">$value[16]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (48) \"AKTIVITAS KESEHATAN MANUSIA DAN AKTIVITAS SOSIAL\"<div class=\"access-path\">$value[16]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#173 (2)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"R\"<div class=\"access-path\">$value[17]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (8) \"KESENIAN\"<div class=\"access-path\">$value[17]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#174 (2)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"S\"<div class=\"access-path\">$value[18]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (22) \"AKTIVITAS JASA LAINNYA\"<div class=\"access-path\">$value[18]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#175 (2)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"T\"<div class=\"access-path\">$value[19]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (44) \"AKTIVITAS RUMAH TANGGA SEBAGAI PEMBERI KERJA\"<div class=\"access-path\">$value[19]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#176 (2)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"U\"<div class=\"access-path\">$value[20]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (68) \"AKTIVITAS BADAN INTERNASIONAL DAN BADAN EKSTRA INTERNASIONAL LAINNYA\"<div class=\"access-path\">$value[20]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#177 (2)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KATEGORI<\/dfn> -> <var>string<\/var> (1) \"Z\"<div class=\"access-path\">$value[21]->KATEGORI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NAMA<\/dfn> -> <var>string<\/var> (14) \"PEJABAT NEGARA\"<div class=\"access-path\">$value[21]->NAMA<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selmap":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (55)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#179 (2)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411111\"<div class=\"access-path\">$value[0]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (15) \"PPh Minyak Bumi\"<div class=\"access-path\">$value[0]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#180 (2)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411112\"<div class=\"access-path\">$value[1]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Gas Alam\"<div class=\"access-path\">$value[1]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#181 (2)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411113\"<div class=\"access-path\">$value[2]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (23) \"PPh Minyak Bumi Lainnya\"<div class=\"access-path\">$value[2]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#182 (2)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411119\"<div class=\"access-path\">$value[3]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (17) \"PPh Migas Lainnya\"<div class=\"access-path\">$value[3]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#183 (2)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411121\"<div class=\"access-path\">$value[4]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 21\"<div class=\"access-path\">$value[4]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#184 (2)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411122\"<div class=\"access-path\">$value[5]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 22\"<div class=\"access-path\">$value[5]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#185 (2)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411123\"<div class=\"access-path\">$value[6]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"PPh Pasal 22 Impor\"<div class=\"access-path\">$value[6]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#186 (2)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411124\"<div class=\"access-path\">$value[7]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 23\"<div class=\"access-path\">$value[7]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#187 (2)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411125\"<div class=\"access-path\">$value[8]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"PPh Pasal 25\/29 OP\"<div class=\"access-path\">$value[8]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#188 (2)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411126\"<div class=\"access-path\">$value[9]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (21) \"PPh Pasal 25\/29 Badan\"<div class=\"access-path\">$value[9]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#189 (2)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411127\"<div class=\"access-path\">$value[10]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PPh Pasal 26\"<div class=\"access-path\">$value[10]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#190 (2)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411128\"<div class=\"access-path\">$value[11]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (9) \"PPh Final\"<div class=\"access-path\">$value[11]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#191 (2)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411129\"<div class=\"access-path\">$value[12]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (21) \"PPh Non Migas Lainnya\"<div class=\"access-path\">$value[12]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#192 (2)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411131\"<div class=\"access-path\">$value[13]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"Fiskal Luar Negeri\"<div class=\"access-path\">$value[13]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#193 (2)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411141\"<div class=\"access-path\">$value[14]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 21\"<div class=\"access-path\">$value[14]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#194 (2)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411141\"<div class=\"access-path\">$value[15]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[15]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#195 (2)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411142\"<div class=\"access-path\">$value[16]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 22\"<div class=\"access-path\">$value[16]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#196 (2)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411143\"<div class=\"access-path\">$value[17]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (22) \"DTP PPH Pasal 22 Impor\"<div class=\"access-path\">$value[17]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#197 (2)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411144\"<div class=\"access-path\">$value[18]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[18]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#198 (2)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411144\"<div class=\"access-path\">$value[19]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 23\"<div class=\"access-path\">$value[19]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#199 (2)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411145\"<div class=\"access-path\">$value[20]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (22) \"DTP PPH Pasal 25\/29 OP\"<div class=\"access-path\">$value[20]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#200 (2)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411146\"<div class=\"access-path\">$value[21]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (25) \"DTP PPH Pasal 25\/29 Badan\"<div class=\"access-path\">$value[21]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>22<\/dfn> => <var>stdClass<\/var>#201 (2)<div class=\"access-path\">$value[22]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411146\"<div class=\"access-path\">$value[22]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[22]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>23<\/dfn> => <var>stdClass<\/var>#202 (2)<div class=\"access-path\">$value[23]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411147\"<div class=\"access-path\">$value[23]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"DTP PPH Pasal 26\"<div class=\"access-path\">$value[23]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>24<\/dfn> => <var>stdClass<\/var>#203 (2)<div class=\"access-path\">$value[24]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411147\"<div class=\"access-path\">$value[24]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (3) \"DTP\"<div class=\"access-path\">$value[24]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>25<\/dfn> => <var>stdClass<\/var>#204 (2)<div class=\"access-path\">$value[25]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411148\"<div class=\"access-path\">$value[25]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"DTP PPH Final\"<div class=\"access-path\">$value[25]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>26<\/dfn> => <var>stdClass<\/var>#205 (2)<div class=\"access-path\">$value[26]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411149\"<div class=\"access-path\">$value[26]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (17) \"DTP PPH Non Migas\"<div class=\"access-path\">$value[26]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>27<\/dfn> => <var>stdClass<\/var>#206 (2)<div class=\"access-path\">$value[27]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411211\"<div class=\"access-path\">$value[27]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (16) \"PPN Dalam Negeri\"<div class=\"access-path\">$value[27]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>28<\/dfn> => <var>stdClass<\/var>#207 (2)<div class=\"access-path\">$value[28]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411212\"<div class=\"access-path\">$value[28]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (9) \"PPN Impor\"<div class=\"access-path\">$value[28]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>29<\/dfn> => <var>stdClass<\/var>#208 (2)<div class=\"access-path\">$value[29]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411219\"<div class=\"access-path\">$value[29]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"PPN Lainnya\"<div class=\"access-path\">$value[29]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>30<\/dfn> => <var>stdClass<\/var>#209 (2)<div class=\"access-path\">$value[30]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411221\"<div class=\"access-path\">$value[30]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (18) \"PPnBM dalam Negeri\"<div class=\"access-path\">$value[30]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>31<\/dfn> => <var>stdClass<\/var>#210 (2)<div class=\"access-path\">$value[31]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411222\"<div class=\"access-path\">$value[31]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"PPnBM Impor\"<div class=\"access-path\">$value[31]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>32<\/dfn> => <var>stdClass<\/var>#211 (2)<div class=\"access-path\">$value[32]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411229\"<div class=\"access-path\">$value[32]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PPnBM Lainnya\"<div class=\"access-path\">$value[32]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>33<\/dfn> => <var>stdClass<\/var>#212 (2)<div class=\"access-path\">$value[33]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411231\"<div class=\"access-path\">$value[33]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (20) \"DTP PPN Dalam Negeri\"<div class=\"access-path\">$value[33]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>34<\/dfn> => <var>stdClass<\/var>#213 (2)<div class=\"access-path\">$value[34]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411232\"<div class=\"access-path\">$value[34]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"DTP PPN Impor\"<div class=\"access-path\">$value[34]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>35<\/dfn> => <var>stdClass<\/var>#214 (2)<div class=\"access-path\">$value[35]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411239\"<div class=\"access-path\">$value[35]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (15) \"DTP PPN Lainnya\"<div class=\"access-path\">$value[35]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>36<\/dfn> => <var>stdClass<\/var>#215 (2)<div class=\"access-path\">$value[36]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411241\"<div class=\"access-path\">$value[36]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (29) \"DTP PPN Dalam Negeri Covid-19\"<div class=\"access-path\">$value[36]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>37<\/dfn> => <var>stdClass<\/var>#216 (2)<div class=\"access-path\">$value[37]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411242\"<div class=\"access-path\">$value[37]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (31) \"DTP PPNBM Dalam Negeri Covid-19\"<div class=\"access-path\">$value[37]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>38<\/dfn> => <var>stdClass<\/var>#217 (2)<div class=\"access-path\">$value[38]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411311\"<div class=\"access-path\">$value[38]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (12) \"PBB Pedesaan\"<div class=\"access-path\">$value[38]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>39<\/dfn> => <var>stdClass<\/var>#218 (2)<div class=\"access-path\">$value[39]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411312\"<div class=\"access-path\">$value[39]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PBB Perkotaan\"<div class=\"access-path\">$value[39]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>40<\/dfn> => <var>stdClass<\/var>#219 (2)<div class=\"access-path\">$value[40]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411313\"<div class=\"access-path\">$value[40]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (14) \"PBB Perkebunan\"<div class=\"access-path\">$value[40]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>41<\/dfn> => <var>stdClass<\/var>#220 (2)<div class=\"access-path\">$value[41]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411314\"<div class=\"access-path\">$value[41]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PBB Kehutanan\"<div class=\"access-path\">$value[41]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>42<\/dfn> => <var>stdClass<\/var>#221 (2)<div class=\"access-path\">$value[42]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411315\"<div class=\"access-path\">$value[42]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (43) \"PBB Pertambangan untuk Mineral dan Batubara\"<div class=\"access-path\">$value[42]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>43<\/dfn> => <var>stdClass<\/var>#222 (2)<div class=\"access-path\">$value[43]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411316\"<div class=\"access-path\">$value[43]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (42) \"PBB Pertambangan untuk Minyak dan Gas Bumi\"<div class=\"access-path\">$value[43]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>44<\/dfn> => <var>stdClass<\/var>#223 (2)<div class=\"access-path\">$value[44]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411317\"<div class=\"access-path\">$value[44]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (42) \"Pertambangan untuk pertambangan panas bumi\"<div class=\"access-path\">$value[44]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>45<\/dfn> => <var>stdClass<\/var>#224 (2)<div class=\"access-path\">$value[45]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411319\"<div class=\"access-path\">$value[45]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"PBB Lainnya\"<div class=\"access-path\">$value[45]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>46<\/dfn> => <var>stdClass<\/var>#225 (2)<div class=\"access-path\">$value[46]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411411\"<div class=\"access-path\">$value[46]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (5) \"BPHTB\"<div class=\"access-path\">$value[46]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>47<\/dfn> => <var>stdClass<\/var>#226 (2)<div class=\"access-path\">$value[47]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411611\"<div class=\"access-path\">$value[47]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (11) \"Bea Meterai\"<div class=\"access-path\">$value[47]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>48<\/dfn> => <var>stdClass<\/var>#227 (2)<div class=\"access-path\">$value[48]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411612\"<div class=\"access-path\">$value[48]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (23) \"Penjualan Benda Materai\"<div class=\"access-path\">$value[48]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>49<\/dfn> => <var>stdClass<\/var>#228 (2)<div class=\"access-path\">$value[49]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411613\"<div class=\"access-path\">$value[49]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (13) \"PPn Batu Bara\"<div class=\"access-path\">$value[49]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>50<\/dfn> => <var>stdClass<\/var>#229 (2)<div class=\"access-path\">$value[50]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411619\"<div class=\"access-path\">$value[50]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (4) \"PTLL\"<div class=\"access-path\">$value[50]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>51<\/dfn> => <var>stdClass<\/var>#230 (2)<div class=\"access-path\">$value[51]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411621\"<div class=\"access-path\">$value[51]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (25) \"Bunga\/Denda Penagihan PPh\"<div class=\"access-path\">$value[51]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>52<\/dfn> => <var>stdClass<\/var>#231 (2)<div class=\"access-path\">$value[52]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411622\"<div class=\"access-path\">$value[52]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (25) \"Bunga\/Denda Penagihan PPN\"<div class=\"access-path\">$value[52]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>53<\/dfn> => <var>stdClass<\/var>#232 (2)<div class=\"access-path\">$value[53]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411623\"<div class=\"access-path\">$value[53]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (27) \"Bunga\/Denda Penagihan PPnBM\"<div class=\"access-path\">$value[53]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>54<\/dfn> => <var>stdClass<\/var>#233 (2)<div class=\"access-path\">$value[54]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (2)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KD_MAP<\/dfn> -> <var>string<\/var> (6) \"411624\"<div class=\"access-path\">$value[54]->KD_MAP<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>NM_MAP<\/dfn> -> <var>string<\/var> (26) \"Bunga\/Denda Penagihan PTLL\"<div class=\"access-path\">$value[54]->NM_MAP<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","selkjs":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (175)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#235 (1)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"000\"<div class=\"access-path\">$value[0]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#236 (1)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"100\"<div class=\"access-path\">$value[1]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#237 (1)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"101\"<div class=\"access-path\">$value[2]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#238 (1)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"102\"<div class=\"access-path\">$value[3]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#239 (1)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"103\"<div class=\"access-path\">$value[4]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#240 (1)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"104\"<div class=\"access-path\">$value[5]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#241 (1)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"105\"<div class=\"access-path\">$value[6]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#242 (1)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"106\"<div class=\"access-path\">$value[7]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#243 (1)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"107\"<div class=\"access-path\">$value[8]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#244 (1)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"108\"<div class=\"access-path\">$value[9]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#245 (1)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"111\"<div class=\"access-path\">$value[10]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#246 (1)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"121\"<div class=\"access-path\">$value[11]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>12<\/dfn> => <var>stdClass<\/var>#247 (1)<div class=\"access-path\">$value[12]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"122\"<div class=\"access-path\">$value[12]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>13<\/dfn> => <var>stdClass<\/var>#248 (1)<div class=\"access-path\">$value[13]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"199\"<div class=\"access-path\">$value[13]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>14<\/dfn> => <var>stdClass<\/var>#249 (1)<div class=\"access-path\">$value[14]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"200\"<div class=\"access-path\">$value[14]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>15<\/dfn> => <var>stdClass<\/var>#250 (1)<div class=\"access-path\">$value[15]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"201\"<div class=\"access-path\">$value[15]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>16<\/dfn> => <var>stdClass<\/var>#251 (1)<div class=\"access-path\">$value[16]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"202\"<div class=\"access-path\">$value[16]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>17<\/dfn> => <var>stdClass<\/var>#252 (1)<div class=\"access-path\">$value[17]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"203\"<div class=\"access-path\">$value[17]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>18<\/dfn> => <var>stdClass<\/var>#253 (1)<div class=\"access-path\">$value[18]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"204\"<div class=\"access-path\">$value[18]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>19<\/dfn> => <var>stdClass<\/var>#254 (1)<div class=\"access-path\">$value[19]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"205\"<div class=\"access-path\">$value[19]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>20<\/dfn> => <var>stdClass<\/var>#255 (1)<div class=\"access-path\">$value[20]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"206\"<div class=\"access-path\">$value[20]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>21<\/dfn> => <var>stdClass<\/var>#256 (1)<div class=\"access-path\">$value[21]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"207\"<div class=\"access-path\">$value[21]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>22<\/dfn> => <var>stdClass<\/var>#257 (1)<div class=\"access-path\">$value[22]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"208\"<div class=\"access-path\">$value[22]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>23<\/dfn> => <var>stdClass<\/var>#258 (1)<div class=\"access-path\">$value[23]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"209\"<div class=\"access-path\">$value[23]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>24<\/dfn> => <var>stdClass<\/var>#259 (1)<div class=\"access-path\">$value[24]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"210\"<div class=\"access-path\">$value[24]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>25<\/dfn> => <var>stdClass<\/var>#260 (1)<div class=\"access-path\">$value[25]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"211\"<div class=\"access-path\">$value[25]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>26<\/dfn> => <var>stdClass<\/var>#261 (1)<div class=\"access-path\">$value[26]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"212\"<div class=\"access-path\">$value[26]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>27<\/dfn> => <var>stdClass<\/var>#262 (1)<div class=\"access-path\">$value[27]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"213\"<div class=\"access-path\">$value[27]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>28<\/dfn> => <var>stdClass<\/var>#263 (1)<div class=\"access-path\">$value[28]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"214\"<div class=\"access-path\">$value[28]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>29<\/dfn> => <var>stdClass<\/var>#264 (1)<div class=\"access-path\">$value[29]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"215\"<div class=\"access-path\">$value[29]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>30<\/dfn> => <var>stdClass<\/var>#265 (1)<div class=\"access-path\">$value[30]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"216\"<div class=\"access-path\">$value[30]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>31<\/dfn> => <var>stdClass<\/var>#266 (1)<div class=\"access-path\">$value[31]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"217\"<div class=\"access-path\">$value[31]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>32<\/dfn> => <var>stdClass<\/var>#267 (1)<div class=\"access-path\">$value[32]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"218\"<div class=\"access-path\">$value[32]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>33<\/dfn> => <var>stdClass<\/var>#268 (1)<div class=\"access-path\">$value[33]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"219\"<div class=\"access-path\">$value[33]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>34<\/dfn> => <var>stdClass<\/var>#269 (1)<div class=\"access-path\">$value[34]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"220\"<div class=\"access-path\">$value[34]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>35<\/dfn> => <var>stdClass<\/var>#270 (1)<div class=\"access-path\">$value[35]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"221\"<div class=\"access-path\">$value[35]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>36<\/dfn> => <var>stdClass<\/var>#271 (1)<div class=\"access-path\">$value[36]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"222\"<div class=\"access-path\">$value[36]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>37<\/dfn> => <var>stdClass<\/var>#272 (1)<div class=\"access-path\">$value[37]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"223\"<div class=\"access-path\">$value[37]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>38<\/dfn> => <var>stdClass<\/var>#273 (1)<div class=\"access-path\">$value[38]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"224\"<div class=\"access-path\">$value[38]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>39<\/dfn> => <var>stdClass<\/var>#274 (1)<div class=\"access-path\">$value[39]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"225\"<div class=\"access-path\">$value[39]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>40<\/dfn> => <var>stdClass<\/var>#275 (1)<div class=\"access-path\">$value[40]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"226\"<div class=\"access-path\">$value[40]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>41<\/dfn> => <var>stdClass<\/var>#276 (1)<div class=\"access-path\">$value[41]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"227\"<div class=\"access-path\">$value[41]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>42<\/dfn> => <var>stdClass<\/var>#277 (1)<div class=\"access-path\">$value[42]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"228\"<div class=\"access-path\">$value[42]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>43<\/dfn> => <var>stdClass<\/var>#278 (1)<div class=\"access-path\">$value[43]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"229\"<div class=\"access-path\">$value[43]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>44<\/dfn> => <var>stdClass<\/var>#279 (1)<div class=\"access-path\">$value[44]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"230\"<div class=\"access-path\">$value[44]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>45<\/dfn> => <var>stdClass<\/var>#280 (1)<div class=\"access-path\">$value[45]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"231\"<div class=\"access-path\">$value[45]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>46<\/dfn> => <var>stdClass<\/var>#281 (1)<div class=\"access-path\">$value[46]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"232\"<div class=\"access-path\">$value[46]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>47<\/dfn> => <var>stdClass<\/var>#282 (1)<div class=\"access-path\">$value[47]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"233\"<div class=\"access-path\">$value[47]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>48<\/dfn> => <var>stdClass<\/var>#283 (1)<div class=\"access-path\">$value[48]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"234\"<div class=\"access-path\">$value[48]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>49<\/dfn> => <var>stdClass<\/var>#284 (1)<div class=\"access-path\">$value[49]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"235\"<div class=\"access-path\">$value[49]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>50<\/dfn> => <var>stdClass<\/var>#285 (1)<div class=\"access-path\">$value[50]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"236\"<div class=\"access-path\">$value[50]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>51<\/dfn> => <var>stdClass<\/var>#286 (1)<div class=\"access-path\">$value[51]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"237\"<div class=\"access-path\">$value[51]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>52<\/dfn> => <var>stdClass<\/var>#287 (1)<div class=\"access-path\">$value[52]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"238\"<div class=\"access-path\">$value[52]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>53<\/dfn> => <var>stdClass<\/var>#288 (1)<div class=\"access-path\">$value[53]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"239\"<div class=\"access-path\">$value[53]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>54<\/dfn> => <var>stdClass<\/var>#289 (1)<div class=\"access-path\">$value[54]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"240\"<div class=\"access-path\">$value[54]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>55<\/dfn> => <var>stdClass<\/var>#290 (1)<div class=\"access-path\">$value[55]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"241\"<div class=\"access-path\">$value[55]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>56<\/dfn> => <var>stdClass<\/var>#291 (1)<div class=\"access-path\">$value[56]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"242\"<div class=\"access-path\">$value[56]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>57<\/dfn> => <var>stdClass<\/var>#292 (1)<div class=\"access-path\">$value[57]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"243\"<div class=\"access-path\">$value[57]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>58<\/dfn> => <var>stdClass<\/var>#293 (1)<div class=\"access-path\">$value[58]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"244\"<div class=\"access-path\">$value[58]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>59<\/dfn> => <var>stdClass<\/var>#294 (1)<div class=\"access-path\">$value[59]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"245\"<div class=\"access-path\">$value[59]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>60<\/dfn> => <var>stdClass<\/var>#295 (1)<div class=\"access-path\">$value[60]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"246\"<div class=\"access-path\">$value[60]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>61<\/dfn> => <var>stdClass<\/var>#296 (1)<div class=\"access-path\">$value[61]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"247\"<div class=\"access-path\">$value[61]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>62<\/dfn> => <var>stdClass<\/var>#297 (1)<div class=\"access-path\">$value[62]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"248\"<div class=\"access-path\">$value[62]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>63<\/dfn> => <var>stdClass<\/var>#298 (1)<div class=\"access-path\">$value[63]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"249\"<div class=\"access-path\">$value[63]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>64<\/dfn> => <var>stdClass<\/var>#299 (1)<div class=\"access-path\">$value[64]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"250\"<div class=\"access-path\">$value[64]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>65<\/dfn> => <var>stdClass<\/var>#300 (1)<div class=\"access-path\">$value[65]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"251\"<div class=\"access-path\">$value[65]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>66<\/dfn> => <var>stdClass<\/var>#301 (1)<div class=\"access-path\">$value[66]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"252\"<div class=\"access-path\">$value[66]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>67<\/dfn> => <var>stdClass<\/var>#302 (1)<div class=\"access-path\">$value[67]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"253\"<div class=\"access-path\">$value[67]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>68<\/dfn> => <var>stdClass<\/var>#303 (1)<div class=\"access-path\">$value[68]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"254\"<div class=\"access-path\">$value[68]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>69<\/dfn> => <var>stdClass<\/var>#304 (1)<div class=\"access-path\">$value[69]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"255\"<div class=\"access-path\">$value[69]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>70<\/dfn> => <var>stdClass<\/var>#305 (1)<div class=\"access-path\">$value[70]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"256\"<div class=\"access-path\">$value[70]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>71<\/dfn> => <var>stdClass<\/var>#306 (1)<div class=\"access-path\">$value[71]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"257\"<div class=\"access-path\">$value[71]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>72<\/dfn> => <var>stdClass<\/var>#307 (1)<div class=\"access-path\">$value[72]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"258\"<div class=\"access-path\">$value[72]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>73<\/dfn> => <var>stdClass<\/var>#308 (1)<div class=\"access-path\">$value[73]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"259\"<div class=\"access-path\">$value[73]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>74<\/dfn> => <var>stdClass<\/var>#309 (1)<div class=\"access-path\">$value[74]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"260\"<div class=\"access-path\">$value[74]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>75<\/dfn> => <var>stdClass<\/var>#310 (1)<div class=\"access-path\">$value[75]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"261\"<div class=\"access-path\">$value[75]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>76<\/dfn> => <var>stdClass<\/var>#311 (1)<div class=\"access-path\">$value[76]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"262\"<div class=\"access-path\">$value[76]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>77<\/dfn> => <var>stdClass<\/var>#312 (1)<div class=\"access-path\">$value[77]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"263\"<div class=\"access-path\">$value[77]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>78<\/dfn> => <var>stdClass<\/var>#313 (1)<div class=\"access-path\">$value[78]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"264\"<div class=\"access-path\">$value[78]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>79<\/dfn> => <var>stdClass<\/var>#314 (1)<div class=\"access-path\">$value[79]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"265\"<div class=\"access-path\">$value[79]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>80<\/dfn> => <var>stdClass<\/var>#315 (1)<div class=\"access-path\">$value[80]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"266\"<div class=\"access-path\">$value[80]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>81<\/dfn> => <var>stdClass<\/var>#316 (1)<div class=\"access-path\">$value[81]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"267\"<div class=\"access-path\">$value[81]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>82<\/dfn> => <var>stdClass<\/var>#317 (1)<div class=\"access-path\">$value[82]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"268\"<div class=\"access-path\">$value[82]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>83<\/dfn> => <var>stdClass<\/var>#318 (1)<div class=\"access-path\">$value[83]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"269\"<div class=\"access-path\">$value[83]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>84<\/dfn> => <var>stdClass<\/var>#319 (1)<div class=\"access-path\">$value[84]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"270\"<div class=\"access-path\">$value[84]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>85<\/dfn> => <var>stdClass<\/var>#320 (1)<div class=\"access-path\">$value[85]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"271\"<div class=\"access-path\">$value[85]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>86<\/dfn> => <var>stdClass<\/var>#321 (1)<div class=\"access-path\">$value[86]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"272\"<div class=\"access-path\">$value[86]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>87<\/dfn> => <var>stdClass<\/var>#322 (1)<div class=\"access-path\">$value[87]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"273\"<div class=\"access-path\">$value[87]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>88<\/dfn> => <var>stdClass<\/var>#323 (1)<div class=\"access-path\">$value[88]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"274\"<div class=\"access-path\">$value[88]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>89<\/dfn> => <var>stdClass<\/var>#324 (1)<div class=\"access-path\">$value[89]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"275\"<div class=\"access-path\">$value[89]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>90<\/dfn> => <var>stdClass<\/var>#325 (1)<div class=\"access-path\">$value[90]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"276\"<div class=\"access-path\">$value[90]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>91<\/dfn> => <var>stdClass<\/var>#326 (1)<div class=\"access-path\">$value[91]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"277\"<div class=\"access-path\">$value[91]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>92<\/dfn> => <var>stdClass<\/var>#327 (1)<div class=\"access-path\">$value[92]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"278\"<div class=\"access-path\">$value[92]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>93<\/dfn> => <var>stdClass<\/var>#328 (1)<div class=\"access-path\">$value[93]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"279\"<div class=\"access-path\">$value[93]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>94<\/dfn> => <var>stdClass<\/var>#329 (1)<div class=\"access-path\">$value[94]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"280\"<div class=\"access-path\">$value[94]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>95<\/dfn> => <var>stdClass<\/var>#330 (1)<div class=\"access-path\">$value[95]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"281\"<div class=\"access-path\">$value[95]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>96<\/dfn> => <var>stdClass<\/var>#331 (1)<div class=\"access-path\">$value[96]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"282\"<div class=\"access-path\">$value[96]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>97<\/dfn> => <var>stdClass<\/var>#332 (1)<div class=\"access-path\">$value[97]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"283\"<div class=\"access-path\">$value[97]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>98<\/dfn> => <var>stdClass<\/var>#333 (1)<div class=\"access-path\">$value[98]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"284\"<div class=\"access-path\">$value[98]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>99<\/dfn> => <var>stdClass<\/var>#334 (1)<div class=\"access-path\">$value[99]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"285\"<div class=\"access-path\">$value[99]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>100<\/dfn> => <var>stdClass<\/var>#335 (1)<div class=\"access-path\">$value[100]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"286\"<div class=\"access-path\">$value[100]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>101<\/dfn> => <var>stdClass<\/var>#336 (1)<div class=\"access-path\">$value[101]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"287\"<div class=\"access-path\">$value[101]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>102<\/dfn> => <var>stdClass<\/var>#337 (1)<div class=\"access-path\">$value[102]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"288\"<div class=\"access-path\">$value[102]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>103<\/dfn> => <var>stdClass<\/var>#338 (1)<div class=\"access-path\">$value[103]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"289\"<div class=\"access-path\">$value[103]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>104<\/dfn> => <var>stdClass<\/var>#339 (1)<div class=\"access-path\">$value[104]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"290\"<div class=\"access-path\">$value[104]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>105<\/dfn> => <var>stdClass<\/var>#340 (1)<div class=\"access-path\">$value[105]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"291\"<div class=\"access-path\">$value[105]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>106<\/dfn> => <var>stdClass<\/var>#341 (1)<div class=\"access-path\">$value[106]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"292\"<div class=\"access-path\">$value[106]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>107<\/dfn> => <var>stdClass<\/var>#342 (1)<div class=\"access-path\">$value[107]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"293\"<div class=\"access-path\">$value[107]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>108<\/dfn> => <var>stdClass<\/var>#343 (1)<div class=\"access-path\">$value[108]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"294\"<div class=\"access-path\">$value[108]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>109<\/dfn> => <var>stdClass<\/var>#344 (1)<div class=\"access-path\">$value[109]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"295\"<div class=\"access-path\">$value[109]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>110<\/dfn> => <var>stdClass<\/var>#345 (1)<div class=\"access-path\">$value[110]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"296\"<div class=\"access-path\">$value[110]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>111<\/dfn> => <var>stdClass<\/var>#346 (1)<div class=\"access-path\">$value[111]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"297\"<div class=\"access-path\">$value[111]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>112<\/dfn> => <var>stdClass<\/var>#347 (1)<div class=\"access-path\">$value[112]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"298\"<div class=\"access-path\">$value[112]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>113<\/dfn> => <var>stdClass<\/var>#348 (1)<div class=\"access-path\">$value[113]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"299\"<div class=\"access-path\">$value[113]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>114<\/dfn> => <var>stdClass<\/var>#349 (1)<div class=\"access-path\">$value[114]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"300\"<div class=\"access-path\">$value[114]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>115<\/dfn> => <var>stdClass<\/var>#350 (1)<div class=\"access-path\">$value[115]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"301\"<div class=\"access-path\">$value[115]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>116<\/dfn> => <var>stdClass<\/var>#351 (1)<div class=\"access-path\">$value[116]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"302\"<div class=\"access-path\">$value[116]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>117<\/dfn> => <var>stdClass<\/var>#352 (1)<div class=\"access-path\">$value[117]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"310\"<div class=\"access-path\">$value[117]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>118<\/dfn> => <var>stdClass<\/var>#353 (1)<div class=\"access-path\">$value[118]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"311\"<div class=\"access-path\">$value[118]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>119<\/dfn> => <var>stdClass<\/var>#354 (1)<div class=\"access-path\">$value[119]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"312\"<div class=\"access-path\">$value[119]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>120<\/dfn> => <var>stdClass<\/var>#355 (1)<div class=\"access-path\">$value[120]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"313\"<div class=\"access-path\">$value[120]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>121<\/dfn> => <var>stdClass<\/var>#356 (1)<div class=\"access-path\">$value[121]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"314\"<div class=\"access-path\">$value[121]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>122<\/dfn> => <var>stdClass<\/var>#357 (1)<div class=\"access-path\">$value[122]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"317\"<div class=\"access-path\">$value[122]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>123<\/dfn> => <var>stdClass<\/var>#358 (1)<div class=\"access-path\">$value[123]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"318\"<div class=\"access-path\">$value[123]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>124<\/dfn> => <var>stdClass<\/var>#359 (1)<div class=\"access-path\">$value[124]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"319\"<div class=\"access-path\">$value[124]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>125<\/dfn> => <var>stdClass<\/var>#360 (1)<div class=\"access-path\">$value[125]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"320\"<div class=\"access-path\">$value[125]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>126<\/dfn> => <var>stdClass<\/var>#361 (1)<div class=\"access-path\">$value[126]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"321\"<div class=\"access-path\">$value[126]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>127<\/dfn> => <var>stdClass<\/var>#362 (1)<div class=\"access-path\">$value[127]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"322\"<div class=\"access-path\">$value[127]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>128<\/dfn> => <var>stdClass<\/var>#363 (1)<div class=\"access-path\">$value[128]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"323\"<div class=\"access-path\">$value[128]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>129<\/dfn> => <var>stdClass<\/var>#364 (1)<div class=\"access-path\">$value[129]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"324\"<div class=\"access-path\">$value[129]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>130<\/dfn> => <var>stdClass<\/var>#365 (1)<div class=\"access-path\">$value[130]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"390\"<div class=\"access-path\">$value[130]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>131<\/dfn> => <var>stdClass<\/var>#366 (1)<div class=\"access-path\">$value[131]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"400\"<div class=\"access-path\">$value[131]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>132<\/dfn> => <var>stdClass<\/var>#367 (1)<div class=\"access-path\">$value[132]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"401\"<div class=\"access-path\">$value[132]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>133<\/dfn> => <var>stdClass<\/var>#368 (1)<div class=\"access-path\">$value[133]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"402\"<div class=\"access-path\">$value[133]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>134<\/dfn> => <var>stdClass<\/var>#369 (1)<div class=\"access-path\">$value[134]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"403\"<div class=\"access-path\">$value[134]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>135<\/dfn> => <var>stdClass<\/var>#370 (1)<div class=\"access-path\">$value[135]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"404\"<div class=\"access-path\">$value[135]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>136<\/dfn> => <var>stdClass<\/var>#371 (1)<div class=\"access-path\">$value[136]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"405\"<div class=\"access-path\">$value[136]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>137<\/dfn> => <var>stdClass<\/var>#372 (1)<div class=\"access-path\">$value[137]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"406\"<div class=\"access-path\">$value[137]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>138<\/dfn> => <var>stdClass<\/var>#373 (1)<div class=\"access-path\">$value[138]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"407\"<div class=\"access-path\">$value[138]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>139<\/dfn> => <var>stdClass<\/var>#374 (1)<div class=\"access-path\">$value[139]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"408\"<div class=\"access-path\">$value[139]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>140<\/dfn> => <var>stdClass<\/var>#375 (1)<div class=\"access-path\">$value[140]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"409\"<div class=\"access-path\">$value[140]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>141<\/dfn> => <var>stdClass<\/var>#376 (1)<div class=\"access-path\">$value[141]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"410\"<div class=\"access-path\">$value[141]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>142<\/dfn> => <var>stdClass<\/var>#377 (1)<div class=\"access-path\">$value[142]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"411\"<div class=\"access-path\">$value[142]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>143<\/dfn> => <var>stdClass<\/var>#378 (1)<div class=\"access-path\">$value[143]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"412\"<div class=\"access-path\">$value[143]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>144<\/dfn> => <var>stdClass<\/var>#379 (1)<div class=\"access-path\">$value[144]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"413\"<div class=\"access-path\">$value[144]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>145<\/dfn> => <var>stdClass<\/var>#380 (1)<div class=\"access-path\">$value[145]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"414\"<div class=\"access-path\">$value[145]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>146<\/dfn> => <var>stdClass<\/var>#381 (1)<div class=\"access-path\">$value[146]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"415\"<div class=\"access-path\">$value[146]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>147<\/dfn> => <var>stdClass<\/var>#382 (1)<div class=\"access-path\">$value[147]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"416\"<div class=\"access-path\">$value[147]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>148<\/dfn> => <var>stdClass<\/var>#383 (1)<div class=\"access-path\">$value[148]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"417\"<div class=\"access-path\">$value[148]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>149<\/dfn> => <var>stdClass<\/var>#384 (1)<div class=\"access-path\">$value[149]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"418\"<div class=\"access-path\">$value[149]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>150<\/dfn> => <var>stdClass<\/var>#385 (1)<div class=\"access-path\">$value[150]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"419\"<div class=\"access-path\">$value[150]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>151<\/dfn> => <var>stdClass<\/var>#386 (1)<div class=\"access-path\">$value[151]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"420\"<div class=\"access-path\">$value[151]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>152<\/dfn> => <var>stdClass<\/var>#387 (1)<div class=\"access-path\">$value[152]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"421\"<div class=\"access-path\">$value[152]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>153<\/dfn> => <var>stdClass<\/var>#388 (1)<div class=\"access-path\">$value[153]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"422\"<div class=\"access-path\">$value[153]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>154<\/dfn> => <var>stdClass<\/var>#389 (1)<div class=\"access-path\">$value[154]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"423\"<div class=\"access-path\">$value[154]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>155<\/dfn> => <var>stdClass<\/var>#390 (1)<div class=\"access-path\">$value[155]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"424\"<div class=\"access-path\">$value[155]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>156<\/dfn> => <var>stdClass<\/var>#391 (1)<div class=\"access-path\">$value[156]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"425\"<div class=\"access-path\">$value[156]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>157<\/dfn> => <var>stdClass<\/var>#392 (1)<div class=\"access-path\">$value[157]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"427\"<div class=\"access-path\">$value[157]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>158<\/dfn> => <var>stdClass<\/var>#393 (1)<div class=\"access-path\">$value[158]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"428\"<div class=\"access-path\">$value[158]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>159<\/dfn> => <var>stdClass<\/var>#394 (1)<div class=\"access-path\">$value[159]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"499\"<div class=\"access-path\">$value[159]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>160<\/dfn> => <var>stdClass<\/var>#395 (1)<div class=\"access-path\">$value[160]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"500\"<div class=\"access-path\">$value[160]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>161<\/dfn> => <var>stdClass<\/var>#396 (1)<div class=\"access-path\">$value[161]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"501\"<div class=\"access-path\">$value[161]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>162<\/dfn> => <var>stdClass<\/var>#397 (1)<div class=\"access-path\">$value[162]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"510\"<div class=\"access-path\">$value[162]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>163<\/dfn> => <var>stdClass<\/var>#398 (1)<div class=\"access-path\">$value[163]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"511\"<div class=\"access-path\">$value[163]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>164<\/dfn> => <var>stdClass<\/var>#399 (1)<div class=\"access-path\">$value[164]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"512\"<div class=\"access-path\">$value[164]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>165<\/dfn> => <var>stdClass<\/var>#400 (1)<div class=\"access-path\">$value[165]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"513\"<div class=\"access-path\">$value[165]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>166<\/dfn> => <var>stdClass<\/var>#401 (1)<div class=\"access-path\">$value[166]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"514\"<div class=\"access-path\">$value[166]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>167<\/dfn> => <var>stdClass<\/var>#402 (1)<div class=\"access-path\">$value[167]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"515\"<div class=\"access-path\">$value[167]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>168<\/dfn> => <var>stdClass<\/var>#403 (1)<div class=\"access-path\">$value[168]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"516\"<div class=\"access-path\">$value[168]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>169<\/dfn> => <var>stdClass<\/var>#404 (1)<div class=\"access-path\">$value[169]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"900\"<div class=\"access-path\">$value[169]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>170<\/dfn> => <var>stdClass<\/var>#405 (1)<div class=\"access-path\">$value[170]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"901\"<div class=\"access-path\">$value[170]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>171<\/dfn> => <var>stdClass<\/var>#406 (1)<div class=\"access-path\">$value[171]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"902\"<div class=\"access-path\">$value[171]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>172<\/dfn> => <var>stdClass<\/var>#407 (1)<div class=\"access-path\">$value[172]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"910\"<div class=\"access-path\">$value[172]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>173<\/dfn> => <var>stdClass<\/var>#408 (1)<div class=\"access-path\">$value[173]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"920\"<div class=\"access-path\">$value[173]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>174<\/dfn> => <var>stdClass<\/var>#409 (1)<div class=\"access-path\">$value[174]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>KJS<\/dfn> -> <var>string<\/var> (3) \"930\"<div class=\"access-path\">$value[174]->KJS<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>","dtmapkjs":"<div class=\"kint-rich\"><dl><dt class=\"kint-parent\"><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><span class=\"kint-search-trigger\" title=\"Show search box\">⌕<\/span><input type=\"text\" class=\"kint-search\" value=\"\"><nav><\/nav><dfn>$value<\/dfn> <var>array<\/var> (12)<\/dt><dd><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>0<\/dfn> => <var>stdClass<\/var>#411 (6)<div class=\"access-path\">$value[0]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"01\"<div class=\"access-path\">$value[0]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"153193226838783\"<div class=\"access-path\">$value[0]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"162324655671151\"<div class=\"access-path\">$value[0]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[0]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"964130\"<div class=\"access-path\">$value[0]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"926187\"<div class=\"access-path\">$value[0]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>1<\/dfn> => <var>stdClass<\/var>#412 (6)<div class=\"access-path\">$value[1]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"02\"<div class=\"access-path\">$value[1]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"119419515571313\"<div class=\"access-path\">$value[1]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"117656017422686\"<div class=\"access-path\">$value[1]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[1]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"836587\"<div class=\"access-path\">$value[1]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"849167\"<div class=\"access-path\">$value[1]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>2<\/dfn> => <var>stdClass<\/var>#413 (6)<div class=\"access-path\">$value[2]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"03\"<div class=\"access-path\">$value[2]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"130324656773714\"<div class=\"access-path\">$value[2]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"151908567490454\"<div class=\"access-path\">$value[2]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[2]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (7) \"1099357\"<div class=\"access-path\">$value[2]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1112279\"<div class=\"access-path\">$value[2]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>3<\/dfn> => <var>stdClass<\/var>#414 (6)<div class=\"access-path\">$value[3]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"04\"<div class=\"access-path\">$value[3]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (15) \"224520570036594\"<div class=\"access-path\">$value[3]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"256229865814097\"<div class=\"access-path\">$value[3]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[3]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (6) \"911748\"<div class=\"access-path\">$value[3]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"877992\"<div class=\"access-path\">$value[3]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>4<\/dfn> => <var>stdClass<\/var>#415 (6)<div class=\"access-path\">$value[4]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"05\"<div class=\"access-path\">$value[4]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[4]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"142317308724531\"<div class=\"access-path\">$value[4]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[4]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[4]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"912007\"<div class=\"access-path\">$value[4]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>5<\/dfn> => <var>stdClass<\/var>#416 (6)<div class=\"access-path\">$value[5]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"06\"<div class=\"access-path\">$value[5]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[5]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"139837261465513\"<div class=\"access-path\">$value[5]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[5]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[5]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"930351\"<div class=\"access-path\">$value[5]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>6<\/dfn> => <var>stdClass<\/var>#417 (6)<div class=\"access-path\">$value[6]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"07\"<div class=\"access-path\">$value[6]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[6]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"138827778078352\"<div class=\"access-path\">$value[6]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[6]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[6]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"957637\"<div class=\"access-path\">$value[6]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>7<\/dfn> => <var>stdClass<\/var>#418 (6)<div class=\"access-path\">$value[7]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"08\"<div class=\"access-path\">$value[7]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[7]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"137864154782725\"<div class=\"access-path\">$value[7]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[7]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[7]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"991044\"<div class=\"access-path\">$value[7]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>8<\/dfn> => <var>stdClass<\/var>#419 (6)<div class=\"access-path\">$value[8]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"09\"<div class=\"access-path\">$value[8]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[8]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"140807912273049\"<div class=\"access-path\">$value[8]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[8]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[8]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (6) \"976139\"<div class=\"access-path\">$value[8]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>9<\/dfn> => <var>stdClass<\/var>#420 (6)<div class=\"access-path\">$value[9]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"10\"<div class=\"access-path\">$value[9]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[9]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"136104769648355\"<div class=\"access-path\">$value[9]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[9]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[9]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1001434\"<div class=\"access-path\">$value[9]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>10<\/dfn> => <var>stdClass<\/var>#421 (6)<div class=\"access-path\">$value[10]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"11\"<div class=\"access-path\">$value[10]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[10]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"146046768940592\"<div class=\"access-path\">$value[10]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[10]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[10]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1043589\"<div class=\"access-path\">$value[10]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><dl><dt class=\"kint-parent\"><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><span class=\"kint-popup-trigger\" title=\"Open in new window\">⧉<\/span><nav><\/nav><dfn>11<\/dfn> => <var>stdClass<\/var>#422 (6)<div class=\"access-path\">$value[11]<\/div><\/dt><dd><ul class=\"kint-tabs\"><li class=\"kint-active-tab\">Properties (6)<\/li><\/ul><ul class=\"kint-tab-contents\"><li class=\"kint-show\"><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>BLNBYR<\/dfn> -> <var>string<\/var> (2) \"12\"<div class=\"access-path\">$value[11]->BLNBYR<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[11]->JMLBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>JMLBYRPAST<\/dfn> -> <var>string<\/var> (15) \"197947434424383\"<div class=\"access-path\">$value[11]->JMLBYRPAST<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>POPULASI<\/dfn> -> <var>string<\/var> (8) \"87259529\"<div class=\"access-path\">$value[11]->POPULASI<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRNOW<\/dfn> -> <var>string<\/var> (1) \"0\"<div class=\"access-path\">$value[11]->WPBYRNOW<\/div><\/dt><\/dl><dl><dt><span class=\"kint-access-path-trigger\" title=\"Show access path\">⇄<\/span><var>public<\/var> <dfn>WPBYRPAST<\/dfn> -> <var>string<\/var> (7) \"1194889\"<div class=\"access-path\">$value[11]->WPBYRPAST<\/div><\/dt><\/dl><\/li><\/ul><\/dd><\/dl><\/dd><\/dl><\/div>"}},"session":{"__ci_last_regenerate":"<pre>1715933979<\/pre>","nip":"810201978","nipp":"199401292013101001","nama":"ALFIN RIZKY RACHMAWANTO","kppadm":"000","jabatan":"Pelaksana","kantor":"Direktorat Ekstensifikasi dan Penilaian","seksi":"SubDirektorat Ekstensifikasi","tpkantor":"KPDJP","kwladm":"991","isLogin":"<pre>1<\/pre>","_ci_previous_url":"http:\/\/localhost\/engineN\/home\/gmapkjs"},"post":{"kwl":"SEMUA","kdmap":"SEMUA","kjs":"SEMUA","kategori":"SEMUA","tahun":"2024"},"headers":{"Content-Type":"application\/x-www-form-urlencoded","Host":"localhost","Connection":"keep-alive","Cache-Control":"max-age=0","Sec-Ch-Ua":""Chromium";v="124", "Microsoft Edge";v="124", "Not-A.Brand";v="99"","Sec-Ch-Ua-Mobile":"?0","Sec-Ch-Ua-Platform":""Windows"","Upgrade-Insecure-Requests":"1","Origin":"http:\/\/localhost","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36 Edg\/124.0.0.0","Accept":"text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,image\/apng,*\/*;q=0.8,application\/signed-exchange;v=b3;q=0.7","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"navigate","Sec-Fetch-User":"?1","Sec-Fetch-Dest":"document","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"ci_session=o45dhe8ieec42blvqbcv7m71jsrbj92c"},"cookies":{"ci_session":"o45dhe8ieec42blvqbcv7m71jsrbj92c"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715934198.879866.json b/writable/debugbar/debugbar_1715934198.879866.json deleted file mode 100644 index db64c2f3..00000000 --- a/writable/debugbar/debugbar_1715934198.879866.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/ref\/getKPP","method":"POST","isAJAX":true,"startTime":1715934198.695282,"totalTime":178,"totalMemory":"6.817","segmentDuration":30,"segmentCount":6,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715934198.702661,"duration":0.06530284881591797},{"name":"Routing","component":"Timer","start":1715934198.767968,"duration":0.00162506103515625},{"name":"Before Filters","component":"Timer","start":1715934198.774462,"duration":3.0994415283203125e-5},{"name":"Controller","component":"Timer","start":1715934198.774496,"duration":0.0988168716430664},{"name":"Controller Constructor","component":"Timer","start":1715934198.774498,"duration":0.0026369094848632812},{"name":"After Filters","component":"Timer","start":1715934198.873335,"duration":0.00026106834411621094}]},{"title":"Database","titleSafe":"database","titleDetails":"(1 total Query, 1 unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"0.34 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KPP"\n<strong>WHERE<\/strong> "KD_KANWIL" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KD_KPP" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:52","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Ref.php:14","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selKpp()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Ref->getKPP()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:52","qid":"5ebd5a35b32f261a8e57d9fdd9321a9e"}]},"badgeValue":1,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715934198.816553,"duration":"0.055296"},{"name":"Query","component":"Database","start":1715934198.87231,"duration":"0.000336","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KPP"\n<strong>WHERE<\/strong> "KD_KANWIL" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KD_KPP" <strong>ASC<\/strong>"}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[]},"badgeValue":null,"isEmpty":true,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":0,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[]},{"title":"Files","titleSafe":"files","titleDetails":"( 160 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseBuilder.php","name":"BaseBuilder.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Builder.php","name":"Builder.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Traits\\ConditionalTrait.php","name":"ConditionalTrait.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\Ref.php","name":"Ref.php"},{"path":"APPPATH\\Models\\Mref.php","name":"Mref.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":160,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Ref","method":"getKPP","paramCount":0,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":0,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"23.07","count":1},"dbquery":{"event":"dbquery","duration":"0.02","count":1}}},"badgeValue":2,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715934198.737744,"duration":0.02306985855102539},{"name":"Event: dbquery","component":"Events","start":1715934198.87265,"duration":2.2172927856445312e-5}]}],"vars":{"varData":{"View Data":[]},"post":{"kwl":"SEMUA"},"headers":{"Content-Type":"application\/x-www-form-urlencoded; charset=UTF-8","Host":"localhost","Connection":"keep-alive","Sec-Ch-Ua":""Chromium";v="124", "Microsoft Edge";v="124", "Not-A.Brand";v="99"","Accept":"application\/json, text\/javascript, *\/*; q=0.01","X-Requested-With":"XMLHttpRequest","Sec-Ch-Ua-Mobile":"?0","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36 Edg\/124.0.0.0","Sec-Ch-Ua-Platform":""Windows"","Origin":"http:\/\/localhost","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"cors","Sec-Fetch-Dest":"empty","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"ci_session=o45dhe8ieec42blvqbcv7m71jsrbj92c"},"cookies":{"ci_session":"o45dhe8ieec42blvqbcv7m71jsrbj92c"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Cache-Control":"no-store, max-age=0, no-cache","Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715934198.906645.json b/writable/debugbar/debugbar_1715934198.906645.json deleted file mode 100644 index ce90676c..00000000 --- a/writable/debugbar/debugbar_1715934198.906645.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/ref\/getSeksi","method":"POST","isAJAX":true,"startTime":1715934198.732843,"totalTime":166.7,"totalMemory":"6.816","segmentDuration":25,"segmentCount":7,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715934198.761808,"duration":0.05668902397155762},{"name":"Routing","component":"Timer","start":1715934198.8185,"duration":0.0015108585357666016},{"name":"Before Filters","component":"Timer","start":1715934198.82464,"duration":3.3855438232421875e-5},{"name":"Controller","component":"Timer","start":1715934198.824678,"duration":0.07480216026306152},{"name":"Controller Constructor","component":"Timer","start":1715934198.82468,"duration":0.0025789737701416016},{"name":"After Filters","component":"Timer","start":1715934198.899502,"duration":0.00025391578674316406}]},{"title":"Database","titleSafe":"database","titleDetails":"(1 total Query, 1 unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"0.39 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KASIWAS"\n<strong>WHERE<\/strong> "KPPADM" = ''\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KODESIE" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:61","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Ref.php:21","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selSeksi()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Ref->getSeksi()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:61","qid":"0865a37f76fcca2ace763dd89bb614ed"}]},"badgeValue":1,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715934198.862684,"duration":"0.035298"},{"name":"Query","component":"Database","start":1715934198.898388,"duration":"0.000390","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KASIWAS"\n<strong>WHERE<\/strong> "KPPADM" = ''\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KODESIE" <strong>ASC<\/strong>"}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[]},"badgeValue":null,"isEmpty":true,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":0,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[]},{"title":"Files","titleSafe":"files","titleDetails":"( 160 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseBuilder.php","name":"BaseBuilder.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Builder.php","name":"Builder.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Traits\\ConditionalTrait.php","name":"ConditionalTrait.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\Ref.php","name":"Ref.php"},{"path":"APPPATH\\Models\\Mref.php","name":"Mref.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":160,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Ref","method":"getSeksi","paramCount":0,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":0,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"20.29","count":1},"dbquery":{"event":"dbquery","duration":"0.02","count":1}}},"badgeValue":2,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715934198.790907,"duration":0.02029109001159668},{"name":"Event: dbquery","component":"Events","start":1715934198.898782,"duration":1.7881393432617188e-5}]}],"vars":{"varData":{"View Data":[]},"post":{"kpp":""},"headers":{"Content-Type":"application\/x-www-form-urlencoded; charset=UTF-8","Host":"localhost","Connection":"keep-alive","Sec-Ch-Ua":""Chromium";v="124", "Microsoft Edge";v="124", "Not-A.Brand";v="99"","Accept":"application\/json, text\/javascript, *\/*; q=0.01","X-Requested-With":"XMLHttpRequest","Sec-Ch-Ua-Mobile":"?0","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36 Edg\/124.0.0.0","Sec-Ch-Ua-Platform":""Windows"","Origin":"http:\/\/localhost","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"cors","Sec-Fetch-Dest":"empty","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"ci_session=o45dhe8ieec42blvqbcv7m71jsrbj92c"},"cookies":{"ci_session":"o45dhe8ieec42blvqbcv7m71jsrbj92c"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Cache-Control":"no-store, max-age=0, no-cache","Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715934198.926436.json b/writable/debugbar/debugbar_1715934198.926436.json deleted file mode 100644 index e1497942..00000000 --- a/writable/debugbar/debugbar_1715934198.926436.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/ref\/getAR","method":"POST","isAJAX":true,"startTime":1715934198.736303,"totalTime":182.60000000000002,"totalMemory":"6.817","segmentDuration":30,"segmentCount":7,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715934198.765232,"duration":0.057276010513305664},{"name":"Routing","component":"Timer","start":1715934198.822511,"duration":0.0015399456024169922},{"name":"Before Filters","component":"Timer","start":1715934198.828287,"duration":3.123283386230469e-5},{"name":"Controller","component":"Timer","start":1715934198.828322,"duration":0.09052109718322754},{"name":"Controller Constructor","component":"Timer","start":1715934198.828323,"duration":0.0025501251220703125},{"name":"After Filters","component":"Timer","start":1715934198.918863,"duration":0.0002529621124267578}]},{"title":"Database","titleSafe":"database","titleDetails":"(1 total Query, 1 unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"0.35 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_AR"\n<strong>WHERE<\/strong> "KPPADM" = ''\n<strong>AND<\/strong> "KODESIE" = ''\n<strong>ORDER<\/strong> <strong>BY<\/strong> "NIP" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:71","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Ref.php:30","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selAR()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Ref->getAR()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:71","qid":"e21f6c8fe5f4a0d9588a3ac3e1bfab1c"}]},"badgeValue":1,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715934198.865515,"duration":"0.051824"},{"name":"Query","component":"Database","start":1715934198.917833,"duration":"0.000352","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_AR"\n<strong>WHERE<\/strong> "KPPADM" = ''\n<strong>AND<\/strong> "KODESIE" = ''\n<strong>ORDER<\/strong> <strong>BY<\/strong> "NIP" <strong>ASC<\/strong>"}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[]},"badgeValue":null,"isEmpty":true,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":0,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[]},{"title":"Files","titleSafe":"files","titleDetails":"( 160 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseBuilder.php","name":"BaseBuilder.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Builder.php","name":"Builder.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Traits\\ConditionalTrait.php","name":"ConditionalTrait.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\Ref.php","name":"Ref.php"},{"path":"APPPATH\\Models\\Mref.php","name":"Mref.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":160,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Ref","method":"getAR","paramCount":0,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":0,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"19.94","count":1},"dbquery":{"event":"dbquery","duration":"0.02","count":1}}},"badgeValue":2,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715934198.793197,"duration":0.019944190979003906},{"name":"Event: dbquery","component":"Events","start":1715934198.918189,"duration":2.002716064453125e-5}]}],"vars":{"varData":{"View Data":[]},"post":{"kpp":"","seksi":""},"headers":{"Content-Type":"application\/x-www-form-urlencoded; charset=UTF-8","Host":"localhost","Connection":"keep-alive","Sec-Ch-Ua":""Chromium";v="124", "Microsoft Edge";v="124", "Not-A.Brand";v="99"","Accept":"application\/json, text\/javascript, *\/*; q=0.01","X-Requested-With":"XMLHttpRequest","Sec-Ch-Ua-Mobile":"?0","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36 Edg\/124.0.0.0","Sec-Ch-Ua-Platform":""Windows"","Origin":"http:\/\/localhost","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"cors","Sec-Fetch-Dest":"empty","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"ci_session=o45dhe8ieec42blvqbcv7m71jsrbj92c"},"cookies":{"ci_session":"o45dhe8ieec42blvqbcv7m71jsrbj92c"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Cache-Control":"no-store, max-age=0, no-cache","Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715934199.028025.json b/writable/debugbar/debugbar_1715934199.028025.json deleted file mode 100644 index 1ec05e5b..00000000 --- a/writable/debugbar/debugbar_1715934199.028025.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/ref\/getSeksi","method":"POST","isAJAX":true,"startTime":1715934198.902589,"totalTime":118.6,"totalMemory":"6.817","segmentDuration":20,"segmentCount":6,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715934198.908878,"duration":0.02063894271850586},{"name":"Routing","component":"Timer","start":1715934198.929521,"duration":0.0015377998352050781},{"name":"Before Filters","component":"Timer","start":1715934198.935852,"duration":3.0994415283203125e-5},{"name":"Controller","component":"Timer","start":1715934198.935887,"duration":0.08528780937194824},{"name":"Controller Constructor","component":"Timer","start":1715934198.935888,"duration":0.002585887908935547},{"name":"After Filters","component":"Timer","start":1715934199.021196,"duration":0.0002682209014892578}]},{"title":"Database","titleSafe":"database","titleDetails":"(1 total Query, 1 unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"0.62 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KASIWAS"\n<strong>WHERE<\/strong> "KPPADM" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KODESIE" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:61","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Ref.php:21","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selSeksi()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Ref->getSeksi()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:61","qid":"c39deb94d723ef5008f15d11b4701a5d"}]},"badgeValue":1,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715934198.971881,"duration":"0.047541"},{"name":"Query","component":"Database","start":1715934199.019864,"duration":"0.000619","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_KASIWAS"\n<strong>WHERE<\/strong> "KPPADM" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "KODESIE" <strong>ASC<\/strong>"}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[]},"badgeValue":null,"isEmpty":true,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":0,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[]},{"title":"Files","titleSafe":"files","titleDetails":"( 160 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseBuilder.php","name":"BaseBuilder.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Builder.php","name":"Builder.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Traits\\ConditionalTrait.php","name":"ConditionalTrait.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\Ref.php","name":"Ref.php"},{"path":"APPPATH\\Models\\Mref.php","name":"Mref.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":160,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Ref","method":"getSeksi","paramCount":0,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":0,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"7.26","count":1},"dbquery":{"event":"dbquery","duration":"0.02","count":1}}},"badgeValue":2,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715934198.915782,"duration":0.007264137268066406},{"name":"Event: dbquery","component":"Events","start":1715934199.020486,"duration":1.9788742065429688e-5}]}],"vars":{"varData":{"View Data":[]},"post":{"kpp":"SEMUA"},"headers":{"Content-Type":"application\/x-www-form-urlencoded; charset=UTF-8","Host":"localhost","Connection":"keep-alive","Sec-Ch-Ua":""Chromium";v="124", "Microsoft Edge";v="124", "Not-A.Brand";v="99"","Accept":"application\/json, text\/javascript, *\/*; q=0.01","X-Requested-With":"XMLHttpRequest","Sec-Ch-Ua-Mobile":"?0","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36 Edg\/124.0.0.0","Sec-Ch-Ua-Platform":""Windows"","Origin":"http:\/\/localhost","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"cors","Sec-Fetch-Dest":"empty","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"ci_session=o45dhe8ieec42blvqbcv7m71jsrbj92c"},"cookies":{"ci_session":"o45dhe8ieec42blvqbcv7m71jsrbj92c"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Cache-Control":"no-store, max-age=0, no-cache","Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715934199.139455.json b/writable/debugbar/debugbar_1715934199.139455.json deleted file mode 100644 index 185bd8a1..00000000 --- a/writable/debugbar/debugbar_1715934199.139455.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/ref\/getAR","method":"POST","isAJAX":true,"startTime":1715934198.973237,"totalTime":160.1,"totalMemory":"6.817","segmentDuration":25,"segmentCount":7,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715934198.99907,"duration":0.05340313911437988},{"name":"Routing","component":"Timer","start":1715934199.052474,"duration":0.00036907196044921875},{"name":"Before Filters","component":"Timer","start":1715934199.053818,"duration":1.0967254638671875e-5},{"name":"Controller","component":"Timer","start":1715934199.05383,"duration":0.0795280933380127},{"name":"Controller Constructor","component":"Timer","start":1715934199.05383,"duration":0.0005981922149658203},{"name":"After Filters","component":"Timer","start":1715934199.133382,"duration":0.00023794174194335938}]},{"title":"Database","titleSafe":"database","titleDetails":"(1 total Query, 1 unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"0.64 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_AR"\n<strong>WHERE<\/strong> "KPPADM" = 'SEMUA'\n<strong>AND<\/strong> "KODESIE" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "NIP" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:71","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Ref.php:30","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selAR()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Ref->getAR()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:71","qid":"4bf9b41cfc75706aaa0041474e25ecd9"}]},"badgeValue":1,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715934199.078883,"duration":"0.052713"},{"name":"Query","component":"Database","start":1715934199.132056,"duration":"0.000641","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_AR"\n<strong>WHERE<\/strong> "KPPADM" = 'SEMUA'\n<strong>AND<\/strong> "KODESIE" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "NIP" <strong>ASC<\/strong>"}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[]},"badgeValue":null,"isEmpty":true,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":0,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[]},{"title":"Files","titleSafe":"files","titleDetails":"( 160 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseBuilder.php","name":"BaseBuilder.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Builder.php","name":"Builder.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Traits\\ConditionalTrait.php","name":"ConditionalTrait.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\Ref.php","name":"Ref.php"},{"path":"APPPATH\\Models\\Mref.php","name":"Mref.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":160,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Ref","method":"getAR","paramCount":0,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":0,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"20.18","count":1},"dbquery":{"event":"dbquery","duration":"0.02","count":1}}},"badgeValue":2,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715934199.027292,"duration":0.02017688751220703},{"name":"Event: dbquery","component":"Events","start":1715934199.132702,"duration":2.193450927734375e-5}]}],"vars":{"varData":{"View Data":[]},"post":{"kpp":"SEMUA","seksi":"SEMUA"},"headers":{"Content-Type":"application\/x-www-form-urlencoded; charset=UTF-8","Host":"localhost","Connection":"keep-alive","Sec-Ch-Ua":""Chromium";v="124", "Microsoft Edge";v="124", "Not-A.Brand";v="99"","Accept":"application\/json, text\/javascript, *\/*; q=0.01","X-Requested-With":"XMLHttpRequest","Sec-Ch-Ua-Mobile":"?0","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36 Edg\/124.0.0.0","Sec-Ch-Ua-Platform":""Windows"","Origin":"http:\/\/localhost","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"cors","Sec-Fetch-Dest":"empty","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"ci_session=o45dhe8ieec42blvqbcv7m71jsrbj92c"},"cookies":{"ci_session":"o45dhe8ieec42blvqbcv7m71jsrbj92c"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Cache-Control":"no-store, max-age=0, no-cache","Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715934199.157758.json b/writable/debugbar/debugbar_1715934199.157758.json deleted file mode 100644 index c9f70938..00000000 --- a/writable/debugbar/debugbar_1715934199.157758.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/ref\/getAR","method":"POST","isAJAX":true,"startTime":1715934198.949082,"totalTime":202.5,"totalMemory":"6.817","segmentDuration":30,"segmentCount":7,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715934198.968602,"duration":0.05480694770812988},{"name":"Routing","component":"Timer","start":1715934199.023412,"duration":0.0017359256744384766},{"name":"Before Filters","component":"Timer","start":1715934199.029826,"duration":3.218650817871094e-5},{"name":"Controller","component":"Timer","start":1715934199.029861,"duration":0.12165713310241699},{"name":"Controller Constructor","component":"Timer","start":1715934199.029863,"duration":0.002660989761352539},{"name":"After Filters","component":"Timer","start":1715934199.15154,"duration":0.00024700164794921875}]},{"title":"Database","titleSafe":"database","titleDetails":"(1 total Query, 1 unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"0.51 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_AR"\n<strong>WHERE<\/strong> "KPPADM" = 'SEMUA'\n<strong>AND<\/strong> "KODESIE" = ''\n<strong>ORDER<\/strong> <strong>BY<\/strong> "NIP" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:71","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Ref.php:30","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selAR()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Ref->getAR()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:71","qid":"1025194e8986476b3a93a900b3bad448"}]},"badgeValue":1,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715934199.066765,"duration":"0.083073"},{"name":"Query","component":"Database","start":1715934199.150348,"duration":"0.000511","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_AR"\n<strong>WHERE<\/strong> "KPPADM" = 'SEMUA'\n<strong>AND<\/strong> "KODESIE" = ''\n<strong>ORDER<\/strong> <strong>BY<\/strong> "NIP" <strong>ASC<\/strong>"}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[]},"badgeValue":null,"isEmpty":true,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":0,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[]},{"title":"Files","titleSafe":"files","titleDetails":"( 160 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseBuilder.php","name":"BaseBuilder.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Builder.php","name":"Builder.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Traits\\ConditionalTrait.php","name":"ConditionalTrait.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\Ref.php","name":"Ref.php"},{"path":"APPPATH\\Models\\Mref.php","name":"Mref.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":160,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Ref","method":"getAR","paramCount":0,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":0,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"20.45","count":1},"dbquery":{"event":"dbquery","duration":"0.02","count":1}}},"badgeValue":2,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715934198.996242,"duration":0.020452022552490234},{"name":"Event: dbquery","component":"Events","start":1715934199.150863,"duration":2.3126602172851562e-5}]}],"vars":{"varData":{"View Data":[]},"post":{"kpp":"SEMUA","seksi":""},"headers":{"Content-Type":"application\/x-www-form-urlencoded; charset=UTF-8","Host":"localhost","Connection":"keep-alive","Sec-Ch-Ua":""Chromium";v="124", "Microsoft Edge";v="124", "Not-A.Brand";v="99"","Accept":"application\/json, text\/javascript, *\/*; q=0.01","X-Requested-With":"XMLHttpRequest","Sec-Ch-Ua-Mobile":"?0","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36 Edg\/124.0.0.0","Sec-Ch-Ua-Platform":""Windows"","Origin":"http:\/\/localhost","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"cors","Sec-Fetch-Dest":"empty","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"ci_session=o45dhe8ieec42blvqbcv7m71jsrbj92c"},"cookies":{"ci_session":"o45dhe8ieec42blvqbcv7m71jsrbj92c"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Cache-Control":"no-store, max-age=0, no-cache","Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715934199.176940.json b/writable/debugbar/debugbar_1715934199.176940.json deleted file mode 100644 index 4f2df067..00000000 --- a/writable/debugbar/debugbar_1715934199.176940.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/ref\/getAR","method":"POST","isAJAX":true,"startTime":1715934199.049504,"totalTime":121.39999999999999,"totalMemory":"6.817","segmentDuration":20,"segmentCount":7,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715934199.055108,"duration":0.0114288330078125},{"name":"Routing","component":"Timer","start":1715934199.066538,"duration":0.0021729469299316406},{"name":"Before Filters","component":"Timer","start":1715934199.073454,"duration":3.0040740966796875e-5},{"name":"Controller","component":"Timer","start":1715934199.073487,"duration":0.09743094444274902},{"name":"Controller Constructor","component":"Timer","start":1715934199.073488,"duration":0.0024929046630859375},{"name":"After Filters","component":"Timer","start":1715934199.170939,"duration":0.00024008750915527344}]},{"title":"Database","titleSafe":"database","titleDetails":"(1 total Query, 1 unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"0.53 ms","sql":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_AR"\n<strong>WHERE<\/strong> "KPPADM" = 'SEMUA'\n<strong>AND<\/strong> "KODESIE" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "NIP" <strong>ASC<\/strong>","trace":[{"file":"SYSTEMPATH\\Database\\BaseBuilder.php:1616","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Models\\Mref.php:71","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseBuilder->get()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Ref.php:30","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mref->selAR()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Ref->getAR()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a07\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mref.php:71","qid":"82592046daf91c9d7c6376219f7c60bc"}]},"badgeValue":1,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715934199.119386,"duration":"0.049612"},{"name":"Query","component":"Database","start":1715934199.16947,"duration":"0.000529","query":"<strong>SELECT<\/strong> *\n<strong>FROM<\/strong> "REF_AR"\n<strong>WHERE<\/strong> "KPPADM" = 'SEMUA'\n<strong>AND<\/strong> "KODESIE" = 'SEMUA'\n<strong>ORDER<\/strong> <strong>BY<\/strong> "NIP" <strong>ASC<\/strong>"}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[]},"badgeValue":null,"isEmpty":true,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":0,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[]},{"title":"Files","titleSafe":"files","titleDetails":"( 160 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseBuilder.php","name":"BaseBuilder.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Builder.php","name":"Builder.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Traits\\ConditionalTrait.php","name":"ConditionalTrait.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\Ref.php","name":"Ref.php"},{"path":"APPPATH\\Models\\Mref.php","name":"Mref.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":160,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Ref","method":"getAR","paramCount":0,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":0,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"3.99","count":1},"dbquery":{"event":"dbquery","duration":"0.02","count":1}}},"badgeValue":2,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715934199.061214,"duration":0.0039861202239990234},{"name":"Event: dbquery","component":"Events","start":1715934199.170004,"duration":2.2172927856445312e-5}]}],"vars":{"varData":{"View Data":[]},"post":{"kpp":"SEMUA","seksi":"SEMUA"},"headers":{"Content-Type":"application\/x-www-form-urlencoded; charset=UTF-8","Host":"localhost","Connection":"keep-alive","Sec-Ch-Ua":""Chromium";v="124", "Microsoft Edge";v="124", "Not-A.Brand";v="99"","Accept":"application\/json, text\/javascript, *\/*; q=0.01","X-Requested-With":"XMLHttpRequest","Sec-Ch-Ua-Mobile":"?0","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36 Edg\/124.0.0.0","Sec-Ch-Ua-Platform":""Windows"","Origin":"http:\/\/localhost","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"cors","Sec-Fetch-Dest":"empty","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"ci_session=o45dhe8ieec42blvqbcv7m71jsrbj92c"},"cookies":{"ci_session":"o45dhe8ieec42blvqbcv7m71jsrbj92c"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Cache-Control":"no-store, max-age=0, no-cache","Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file diff --git a/writable/debugbar/debugbar_1715934201.878231.json b/writable/debugbar/debugbar_1715934201.878231.json deleted file mode 100644 index ec27514e..00000000 --- a/writable/debugbar/debugbar_1715934201.878231.json +++ /dev/null @@ -1 +0,0 @@ -{"url":"http:\/\/localhost\/engineN\/home\/grafMAPKJS\/SEMUA\/SEMUA\/SEMUA\/SEMUA\/2024\/SEMUA\/SEMUA\/SEMUA","method":"GET","isAJAX":true,"startTime":1715934198.675963,"totalTime":3195.9,"totalMemory":"6.580","segmentDuration":460,"segmentCount":7,"CI_VERSION":"4.4.8","collectors":[{"title":"Timers","titleSafe":"timers","titleDetails":"","display":[],"badgeValue":null,"isEmpty":false,"hasTabContent":false,"hasLabel":false,"icon":"","hasTimelineData":true,"timelineData":[{"name":"Bootstrap","component":"Timer","start":1715934198.683482,"duration":0.0334010124206543},{"name":"Routing","component":"Timer","start":1715934198.716885,"duration":0.0013408660888671875},{"name":"Before Filters","component":"Timer","start":1715934198.724328,"duration":3.1948089599609375e-5},{"name":"Controller","component":"Timer","start":1715934198.724364,"duration":3.1474769115448},{"name":"Controller Constructor","component":"Timer","start":1715934198.724365,"duration":0.005101919174194336},{"name":"After Filters","component":"Timer","start":1715934201.871866,"duration":0.0004451274871826172}]},{"title":"Database","titleSafe":"database","titleDetails":"(1 total Query, 1 unique across 1 Connection)","display":{"queries":[{"hover":"","class":"","duration":"3051.64 ms","sql":"<strong>SELECT<\/strong> \r\n BLNBYR,\r\n (<strong>SELECT<\/strong> <strong>SUM<\/strong>(JUMLAH)POPULASI <strong>FROM<\/strong> KEWAJIBAN_FLAGN\r\n <strong>WHERE<\/strong> KD_MAP <> 0 ) POPULASI,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN 1 ELSE 0 END) WPBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN 1 ELSE 0 END) WPBYRPAST,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN TOTAL ELSE 0 END) JMLBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN TOTAL ELSE 0 END) JMLBYRPAST\r\n <strong>FROM<\/strong> (<strong>SELECT<\/strong> NPWP,THNBYR,BLNBYR,<strong>SUM<\/strong>(TOTAL) TOTAL <strong>FROM<\/strong> DASHBOARD_BESAR_MAPKJS\r\n <strong>WHERE<\/strong> THNBYR BETWEEN '2023' <strong>AND<\/strong> '2024' \r\n <strong>GROUP<\/strong> <strong>BY<\/strong> NPWP,THNBYR,BLNBYR\r\n )\r\n <strong>GROUP<\/strong> <strong>BY<\/strong> BLNBYR <strong>ORDER<\/strong> <strong>BY<\/strong> BLNBYR <strong>ASC<\/strong>\r\n ","trace":[{"file":"APPPATH\\Models\\Mpemby.php:381","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\Database\\BaseConnection->query()","index":"\u00a0\u00a01\u00a0\u00a0\u00a0\u00a0"},{"file":"APPPATH\\Controllers\\Home.php:219","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Models\\Mpemby->gmapkjs()","index":"\u00a0\u00a02\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:943","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0App\\Controllers\\Home->grafMAPKJS()","index":"\u00a0\u00a03\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:503","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->runController()","index":"\u00a0\u00a04\u00a0\u00a0\u00a0\u00a0"},{"file":"SYSTEMPATH\\CodeIgniter.php:361","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->handleRequest()","index":"\u00a0\u00a05\u00a0\u00a0\u00a0\u00a0"},{"file":"FCPATH\\index.php:79","function":"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CodeIgniter\\CodeIgniter->run()","index":"\u00a0\u00a06\u00a0\u00a0\u00a0\u00a0"}],"trace-file":"APPPATH\\Models\\Mpemby.php:381","qid":"ec8db10034bb31ebefac40af19c919dd"}]},"badgeValue":1,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADMSURBVEhLY6A3YExLSwsA4nIycQDIDIhRWEBqamo\/UNF\/SjDQjF6ocZgAKPkRiFeEhoYyQ4WIBiA9QAuWAPEHqBAmgLqgHcolGQD1V4DMgHIxwbCxYD+QBqcKINseKo6eWrBioPrtQBq\/BcgY5ht0cUIYbBg2AJKkRxCNWkDQgtFUNJwtABr+F6igE8olGQD114HMgHIxAVDyAhA\/AlpSA8RYUwoeXAPVex5qHCbIyMgwBCkAuQJIY00huDBUz\/mUlBQDqHGjgBjAwAAACexpph6oHSQAAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[{"name":"Connecting to Database: \"default\"","component":"Database","start":1715934198.77521,"duration":"0.042959"},{"name":"Query","component":"Database","start":1715934198.818643,"duration":"3.051642","query":"<strong>SELECT<\/strong> \r\n BLNBYR,\r\n (<strong>SELECT<\/strong> <strong>SUM<\/strong>(JUMLAH)POPULASI <strong>FROM<\/strong> KEWAJIBAN_FLAGN\r\n <strong>WHERE<\/strong> KD_MAP <> 0 ) POPULASI,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN 1 ELSE 0 END) WPBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN 1 ELSE 0 END) WPBYRPAST,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2024' THEN TOTAL ELSE 0 END) JMLBYRNOW,\r\n <strong>SUM<\/strong>(CASE WHEN THNBYR = '2023' THEN TOTAL ELSE 0 END) JMLBYRPAST\r\n <strong>FROM<\/strong> (<strong>SELECT<\/strong> NPWP,THNBYR,BLNBYR,<strong>SUM<\/strong>(TOTAL) TOTAL <strong>FROM<\/strong> DASHBOARD_BESAR_MAPKJS\r\n <strong>WHERE<\/strong> THNBYR BETWEEN '2023' <strong>AND<\/strong> '2024' \r\n <strong>GROUP<\/strong> <strong>BY<\/strong> NPWP,THNBYR,BLNBYR\r\n )\r\n <strong>GROUP<\/strong> <strong>BY<\/strong> BLNBYR <strong>ORDER<\/strong> <strong>BY<\/strong> BLNBYR <strong>ASC<\/strong>\r\n "}]},{"title":"Logs","titleSafe":"logs","titleDetails":"","display":{"logs":[{"level":"info","msg":"Session: Class initialized using 'CodeIgniter\\Session\\Handlers\\FileHandler' driver."}]},"badgeValue":null,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACYSURBVEhLYxgFJIHU1FSjtLS0i0D8AYj7gEKMEBkqAaAFF4D4ERCvAFrwH4gDoFIMKSkpFkB+OTEYqgUTACXfA\/GqjIwMQyD9H2hRHlQKJFcBEiMGQ7VgAqCBvUgK32dmZspCpagGGNPT0\/1BLqeF4bQHQJePpiIwhmrBBEADR1MRfgB0+WgqAmOoFkwANHA0FY0CUgEDAwCQ0PUpNB3kqwAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Views","titleSafe":"views","titleDetails":"","display":[],"badgeValue":0,"isEmpty":false,"hasTabContent":false,"hasLabel":true,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVEhL7ZSxDcIwEEWNYA0YgGmgyAaJLTcUaaBzQQEVjMEabBQxAdw53zTHiThEovGTfnE\/9rsoRUxhKLOmaa6Uh7X2+UvguLCzVxN1XW9x4EYHzik033Hp3X0LO+DaQG8MDQcuq6qao4qkHuMgQggLvkPLjqh00ZgFDBacMJYFkuwFlH1mshdkZ5JPJERA9JpI6xNCBESvibQ+IURA9JpI6xNCBESvibQ+IURA9DTsuHTOrVFFxixgB\/eUFlU8uKJ0eDBFOu\/9EvoeKnlJS2\/08Tc8NOwQ8sIfMeYFjqKDjdU2sp4AAAAASUVORK5CYII=","hasTimelineData":true,"timelineData":[]},{"title":"Files","titleSafe":"files","titleDetails":"( 168 )","display":{"coreFiles":[{"path":"SYSTEMPATH\\API\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\Autoloader\\Autoloader.php","name":"Autoloader.php"},{"path":"SYSTEMPATH\\Autoloader\\FileLocator.php","name":"FileLocator.php"},{"path":"SYSTEMPATH\\BaseModel.php","name":"BaseModel.php"},{"path":"SYSTEMPATH\\Cache\\CacheFactory.php","name":"CacheFactory.php"},{"path":"SYSTEMPATH\\Cache\\CacheInterface.php","name":"CacheInterface.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Cache\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Cache\\ResponseCache.php","name":"ResponseCache.php"},{"path":"SYSTEMPATH\\CodeIgniter.php","name":"CodeIgniter.php"},{"path":"SYSTEMPATH\\Common.php","name":"Common.php"},{"path":"SYSTEMPATH\\Config\\AutoloadConfig.php","name":"AutoloadConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseConfig.php","name":"BaseConfig.php"},{"path":"SYSTEMPATH\\Config\\BaseService.php","name":"BaseService.php"},{"path":"SYSTEMPATH\\Config\\DotEnv.php","name":"DotEnv.php"},{"path":"SYSTEMPATH\\Config\\Factories.php","name":"Factories.php"},{"path":"SYSTEMPATH\\Config\\Factory.php","name":"Factory.php"},{"path":"SYSTEMPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"SYSTEMPATH\\Config\\Services.php","name":"Services.php"},{"path":"SYSTEMPATH\\Config\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\Controller.php","name":"Controller.php"},{"path":"SYSTEMPATH\\Cookie\\CloneableCookieInterface.php","name":"CloneableCookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\Cookie.php","name":"Cookie.php"},{"path":"SYSTEMPATH\\Cookie\\CookieInterface.php","name":"CookieInterface.php"},{"path":"SYSTEMPATH\\Cookie\\CookieStore.php","name":"CookieStore.php"},{"path":"SYSTEMPATH\\Database\\BaseConnection.php","name":"BaseConnection.php"},{"path":"SYSTEMPATH\\Database\\BaseResult.php","name":"BaseResult.php"},{"path":"SYSTEMPATH\\Database\\Config.php","name":"Config.php"},{"path":"SYSTEMPATH\\Database\\ConnectionInterface.php","name":"ConnectionInterface.php"},{"path":"SYSTEMPATH\\Database\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Connection.php","name":"Connection.php"},{"path":"SYSTEMPATH\\Database\\OCI8\\Result.php","name":"Result.php"},{"path":"SYSTEMPATH\\Database\\Query.php","name":"Query.php"},{"path":"SYSTEMPATH\\Database\\QueryInterface.php","name":"QueryInterface.php"},{"path":"SYSTEMPATH\\Database\\ResultInterface.php","name":"ResultInterface.php"},{"path":"SYSTEMPATH\\Debug\\Exceptions.php","name":"Exceptions.php"},{"path":"SYSTEMPATH\\Debug\\Timer.php","name":"Timer.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar.php","name":"Toolbar.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php","name":"BaseCollector.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Database.php","name":"Database.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Files.php","name":"Files.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","name":"Logs.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Routes.php","name":"Routes.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Timers.php","name":"Timers.php"},{"path":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Views.php","name":"Views.php"},{"path":"SYSTEMPATH\\Events\\Events.php","name":"Events.php"},{"path":"SYSTEMPATH\\Filters\\DebugToolbar.php","name":"DebugToolbar.php"},{"path":"SYSTEMPATH\\Filters\\FilterInterface.php","name":"FilterInterface.php"},{"path":"SYSTEMPATH\\Filters\\Filters.php","name":"Filters.php"},{"path":"SYSTEMPATH\\HTTP\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"SYSTEMPATH\\HTTP\\Header.php","name":"Header.php"},{"path":"SYSTEMPATH\\HTTP\\IncomingRequest.php","name":"IncomingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\Message.php","name":"Message.php"},{"path":"SYSTEMPATH\\HTTP\\MessageInterface.php","name":"MessageInterface.php"},{"path":"SYSTEMPATH\\HTTP\\MessageTrait.php","name":"MessageTrait.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequest.php","name":"OutgoingRequest.php"},{"path":"SYSTEMPATH\\HTTP\\OutgoingRequestInterface.php","name":"OutgoingRequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\Request.php","name":"Request.php"},{"path":"SYSTEMPATH\\HTTP\\RequestInterface.php","name":"RequestInterface.php"},{"path":"SYSTEMPATH\\HTTP\\RequestTrait.php","name":"RequestTrait.php"},{"path":"SYSTEMPATH\\HTTP\\Response.php","name":"Response.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseInterface.php","name":"ResponseInterface.php"},{"path":"SYSTEMPATH\\HTTP\\ResponseTrait.php","name":"ResponseTrait.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURI.php","name":"SiteURI.php"},{"path":"SYSTEMPATH\\HTTP\\SiteURIFactory.php","name":"SiteURIFactory.php"},{"path":"SYSTEMPATH\\HTTP\\URI.php","name":"URI.php"},{"path":"SYSTEMPATH\\HTTP\\UserAgent.php","name":"UserAgent.php"},{"path":"SYSTEMPATH\\Helpers\\array_helper.php","name":"array_helper.php"},{"path":"SYSTEMPATH\\Helpers\\kint_helper.php","name":"kint_helper.php"},{"path":"SYSTEMPATH\\Helpers\\url_helper.php","name":"url_helper.php"},{"path":"SYSTEMPATH\\I18n\\Time.php","name":"Time.php"},{"path":"SYSTEMPATH\\I18n\\TimeTrait.php","name":"TimeTrait.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Log\\Handlers\\HandlerInterface.php","name":"HandlerInterface.php"},{"path":"SYSTEMPATH\\Log\\Logger.php","name":"Logger.php"},{"path":"SYSTEMPATH\\Model.php","name":"Model.php"},{"path":"SYSTEMPATH\\Modules\\Modules.php","name":"Modules.php"},{"path":"SYSTEMPATH\\Router\\AutoRouter.php","name":"AutoRouter.php"},{"path":"SYSTEMPATH\\Router\\AutoRouterInterface.php","name":"AutoRouterInterface.php"},{"path":"SYSTEMPATH\\Router\\RouteCollection.php","name":"RouteCollection.php"},{"path":"SYSTEMPATH\\Router\\RouteCollectionInterface.php","name":"RouteCollectionInterface.php"},{"path":"SYSTEMPATH\\Router\\Router.php","name":"Router.php"},{"path":"SYSTEMPATH\\Router\\RouterInterface.php","name":"RouterInterface.php"},{"path":"SYSTEMPATH\\Session\\Handlers\\BaseHandler.php","name":"BaseHandler.php"},{"path":"SYSTEMPATH\\Session\\Handlers\\FileHandler.php","name":"FileHandler.php"},{"path":"SYSTEMPATH\\Session\\Session.php","name":"Session.php"},{"path":"SYSTEMPATH\\Session\\SessionInterface.php","name":"SessionInterface.php"},{"path":"SYSTEMPATH\\Superglobals.php","name":"Superglobals.php"},{"path":"SYSTEMPATH\\Validation\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\CreditCardRules.php","name":"CreditCardRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FileRules.php","name":"FileRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\FormatRules.php","name":"FormatRules.php"},{"path":"SYSTEMPATH\\Validation\\StrictRules\\Rules.php","name":"Rules.php"},{"path":"SYSTEMPATH\\Validation\\Validation.php","name":"Validation.php"},{"path":"SYSTEMPATH\\Validation\\ValidationInterface.php","name":"ValidationInterface.php"},{"path":"SYSTEMPATH\\View\\RendererInterface.php","name":"RendererInterface.php"},{"path":"SYSTEMPATH\\View\\View.php","name":"View.php"},{"path":"SYSTEMPATH\\View\\ViewDecoratorTrait.php","name":"ViewDecoratorTrait.php"},{"path":"SYSTEMPATH\\bootstrap.php","name":"bootstrap.php"}],"userFiles":[{"path":"APPPATH\\Common.php","name":"Common.php"},{"path":"APPPATH\\Config\\App.php","name":"App.php"},{"path":"APPPATH\\Config\\Autoload.php","name":"Autoload.php"},{"path":"APPPATH\\Config\\Boot\\development.php","name":"development.php"},{"path":"APPPATH\\Config\\Cache.php","name":"Cache.php"},{"path":"APPPATH\\Config\\Constants.php","name":"Constants.php"},{"path":"APPPATH\\Config\\ContentSecurityPolicy.php","name":"ContentSecurityPolicy.php"},{"path":"APPPATH\\Config\\Cookie.php","name":"Cookie.php"},{"path":"APPPATH\\Config\\Database.php","name":"Database.php"},{"path":"APPPATH\\Config\\Events.php","name":"Events.php"},{"path":"APPPATH\\Config\\Exceptions.php","name":"Exceptions.php"},{"path":"APPPATH\\Config\\Feature.php","name":"Feature.php"},{"path":"APPPATH\\Config\\Filters.php","name":"Filters.php"},{"path":"APPPATH\\Config\\Kint.php","name":"Kint.php"},{"path":"APPPATH\\Config\\Logger.php","name":"Logger.php"},{"path":"APPPATH\\Config\\Modules.php","name":"Modules.php"},{"path":"APPPATH\\Config\\Paths.php","name":"Paths.php"},{"path":"APPPATH\\Config\\Routes.php","name":"Routes.php"},{"path":"APPPATH\\Config\\Routing.php","name":"Routing.php"},{"path":"APPPATH\\Config\\Services.php","name":"Services.php"},{"path":"APPPATH\\Config\\Session.php","name":"Session.php"},{"path":"APPPATH\\Config\\Toolbar.php","name":"Toolbar.php"},{"path":"APPPATH\\Config\\UserAgents.php","name":"UserAgents.php"},{"path":"APPPATH\\Config\\Validation.php","name":"Validation.php"},{"path":"APPPATH\\Config\\View.php","name":"View.php"},{"path":"APPPATH\\Controllers\\BaseController.php","name":"BaseController.php"},{"path":"APPPATH\\Controllers\\Home.php","name":"Home.php"},{"path":"APPPATH\\Helpers\\myhelper_helper.php","name":"myhelper_helper.php"},{"path":"APPPATH\\Models\\Mpemby.php","name":"Mpemby.php"},{"path":"FCPATH\\index.php","name":"index.php"},{"path":"FCPATH\\vendor\\autoload.php","name":"autoload.php"},{"path":"FCPATH\\vendor\\composer\\ClassLoader.php","name":"ClassLoader.php"},{"path":"FCPATH\\vendor\\composer\\InstalledVersions.php","name":"InstalledVersions.php"},{"path":"FCPATH\\vendor\\composer\\autoload_real.php","name":"autoload_real.php"},{"path":"FCPATH\\vendor\\composer\\autoload_static.php","name":"autoload_static.php"},{"path":"FCPATH\\vendor\\composer\\installed.php","name":"installed.php"},{"path":"FCPATH\\vendor\\composer\\platform_check.php","name":"platform_check.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init.php","name":"init.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\init_helpers.php","name":"init_helpers.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\FacadeInterface.php","name":"FacadeInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Kint.php","name":"Kint.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\AbstractRenderer.php","name":"AbstractRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\CliRenderer.php","name":"CliRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RendererInterface.php","name":"RendererInterface.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\RichRenderer.php","name":"RichRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Renderer\\TextRenderer.php","name":"TextRenderer.php"},{"path":"FCPATH\\vendor\\kint-php\\kint\\src\\Utils.php","name":"Utils.php"},{"path":"FCPATH\\vendor\\laminas\\laminas-escaper\\src\\Escaper.php","name":"Escaper.php"},{"path":"FCPATH\\vendor\\myclabs\\deep-copy\\src\\DeepCopy\\deep_copy.php","name":"deep_copy.php"},{"path":"FCPATH\\vendor\\phpunit\\phpunit\\src\\Framework\\Assert\\Functions.php","name":"Functions.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LogLevel.php","name":"LogLevel.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerAwareTrait.php","name":"LoggerAwareTrait.php"},{"path":"FCPATH\\vendor\\psr\\log\\Psr\\Log\\LoggerInterface.php","name":"LoggerInterface.php"},{"path":"FCPATH\\vendor\\symfony\\deprecation-contracts\\function.php","name":"function.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-ctype\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-grapheme\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-intl-normalizer\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-mbstring\\bootstrap80.php","name":"bootstrap80.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php80\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\polyfill-php81\\bootstrap.php","name":"bootstrap.php"},{"path":"FCPATH\\vendor\\symfony\\string\\Resources\\functions.php","name":"functions.php"}]},"badgeValue":168,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGBSURBVEhL7ZQ9S8NQGIVTBQUncfMfCO4uLgoKbuKQOWg+OkXERRE1IAXrIHbVDrqIDuLiJgj+gro7S3dnpfq88b1FMTE3VZx64HBzzvvZWxKnj15QCcPwCD5HUfSWR+JtzgmtsUcQBEva5IIm9SwSu+95CAWbUuy67qBa32ByZEDpIaZYZSZMjjQuPcQUq8yEyYEb8FSerYeQVGbAFzJkX1PyQWLhgCz0BxTCekC1Wp0hsa6yokzhed4oje6Iz6rlJEkyIKfUEFtITVtQdAibn5rMyaYsMS+a5wTv8qeXMhcU16QZbKgl3hbs+L4\/pnpdc87MElZgq10p5DxGdq8I7xrvUWUKvG3NbSK7ubngYzdJwSsF7TiOh9VOgfcEz1UayNe3JUPM1RWC5GXYgTfc75B4NBmXJnAtTfpABX0iPvEd9ezALwkplCFXcr9styiNOKc1RRZpaPM9tcqBwlWzGY1qPL9wjqRBgF5BH6j8HWh2S7MHlX8PrmbK+k\/8PzjOOzx1D3i1pKTTAAAAAElFTkSuQmCC","hasTimelineData":false,"timelineData":[]},{"title":"Routes","titleSafe":"routes","titleDetails":"","display":{"matchedRoute":[{"directory":"","controller":"\\App\\Controllers\\Home","method":"grafMAPKJS","paramCount":8,"truePCount":0,"params":[]}],"routes":[{"method":"GET","route":"\/","handler":"\\App\\Controllers\\Auth::index"}]},"badgeValue":2,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFDSURBVEhL7ZRNSsNQFIUjVXSiOFEcuQIHDpzpxC0IGYeE\/BEInbWlCHEDLsSiuANdhKDjgm6ggtSJ+l25ldrmmTwIgtgDh\/t37r1J+16cX0dRFMtpmu5pWAkrvYjjOB7AETzStBFW+inxu3KUJMmhludQpoflS1zXban4LYqiO224h6VLTHr8Z+z8EpIHFF9gG78nDVmW7UgTHKjsCyY98QP+pcq+g8Ku2s8G8X3f3\/I8b038WZTp+bO38zxfFd+I6YY6sNUvFlSDk9CRhiAI1jX1I9Cfw7GG1UB8LAuwbU0ZwQnbRDeEN5qqBxZMLtE1ti9LtbREnMIuOXnyIf5rGIb7Wq8HmlZgwYBH7ORTcKH5E4mpjeGt9fBZcHE2GCQ3Vt7oTNPNg+FXLHnSsHkw\/FR+Gg2bB8Ptzrst\/v6C\/wrH+QB+duli6MYJdQAAAABJRU5ErkJggg==","hasTimelineData":false,"timelineData":[]},{"title":"Events","titleSafe":"events","titleDetails":"","display":{"events":{"pre_system":{"event":"pre_system","duration":"17.00","count":1},"dbquery":{"event":"dbquery","duration":"0.04","count":1}}},"badgeValue":2,"isEmpty":false,"hasTabContent":true,"hasLabel":false,"icon":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEASURBVEhL7ZXNDcIwDIVTsRBH1uDQDdquUA6IM1xgCA6MwJUN2hk6AQzAz0vl0ETUxC5VT3zSU5w81\/mRMGZysixbFEVR0jSKNt8geQU9aRpFmp\/keX6AbjZ5oB74vsaN5lSzA4tLSjpBFxsjeSuRy4d2mDdQTWU7YLbXTNN05mKyovj5KL6B7q3hoy3KwdZxBlT+Ipz+jPHrBqOIynZgcZonoukb\/0ckiTHqNvDXtXEAaygRbaB9FvUTjRUHsIYS0QaSp+Dw6wT4hiTmYHOcYZsdLQ2CbXa4ftuuYR4x9vYZgdb4vsFYUdmABMYeukK9\/SUme3KMFQ77+Yfzh8eYF8+orDuDWU5LAAAAAElFTkSuQmCC","hasTimelineData":true,"timelineData":[{"name":"Event: pre_system","component":"Events","start":1715934198.690222,"duration":0.017004013061523438},{"name":"Event: dbquery","component":"Events","start":1715934201.870293,"duration":3.814697265625e-5}]}],"vars":{"varData":{"View Data":[]},"session":{"__ci_last_regenerate":"<pre>1715933979<\/pre>","nip":"810201978","nipp":"199401292013101001","nama":"ALFIN RIZKY RACHMAWANTO","kppadm":"000","jabatan":"Pelaksana","kantor":"Direktorat Ekstensifikasi dan Penilaian","seksi":"SubDirektorat Ekstensifikasi","tpkantor":"KPDJP","kwladm":"991","isLogin":"<pre>1<\/pre>","_ci_previous_url":"http:\/\/localhost\/engineN\/home\/gmapkjs"},"headers":{"Host":"localhost","Connection":"keep-alive","Sec-Ch-Ua":""Chromium";v="124", "Microsoft Edge";v="124", "Not-A.Brand";v="99"","Accept":"application\/json, text\/javascript, *\/*; q=0.01","X-Requested-With":"XMLHttpRequest","Sec-Ch-Ua-Mobile":"?0","User-Agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Safari\/537.36 Edg\/124.0.0.0","Sec-Ch-Ua-Platform":""Windows"","Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"cors","Sec-Fetch-Dest":"empty","Referer":"http:\/\/localhost\/engineN\/home\/gmapkjs","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9","Cookie":"ci_session=o45dhe8ieec42blvqbcv7m71jsrbj92c"},"cookies":{"ci_session":"o45dhe8ieec42blvqbcv7m71jsrbj92c"},"request":"HTTP\/1.1","response":{"statusCode":200,"reason":"OK","contentType":"text\/html; charset=UTF-8","headers":{"Content-Type":"text\/html; charset=UTF-8"}}},"config":{"ciVersion":"4.4.8","phpVersion":"8.2.12","phpSAPI":"apache2handler","environment":"development","baseURL":"http:\/\/localhost\/engineN","timezone":"Asia\/Jakarta","locale":"en","cspEnabled":false}} \ No newline at end of file